diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2024-08-06 03:00:32 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-06 15:30:32 +0530 |
commit | c0e9512b39a4ed3713d1fd9b28469d0edf68f578 (patch) | |
tree | 48194976942488e9ded45464e76cef943db5dedb | |
parent | 7f6b484684279b643d8ed6374bed0b92b3038b50 (diff) |
BREAKING(webgpu/unstable): Replace async .requestAdapterInfo() with sync .info (#24783)
Closes https://github.com/denoland/deno/issues/24779
Ref https://github.com/gpuweb/gpuweb/pull/4662
-rw-r--r-- | cli/tsc/dts/lib.deno_webgpu.d.ts | 2 | ||||
-rw-r--r-- | ext/webgpu/01_webgpu.js | 13 | ||||
-rw-r--r-- | ext/webgpu/webgpu.idl | 2 |
3 files changed, 12 insertions, 5 deletions
diff --git a/cli/tsc/dts/lib.deno_webgpu.d.ts b/cli/tsc/dts/lib.deno_webgpu.d.ts index 12ef5e6c5..944af0e4c 100644 --- a/cli/tsc/dts/lib.deno_webgpu.d.ts +++ b/cli/tsc/dts/lib.deno_webgpu.d.ts @@ -123,10 +123,10 @@ declare type GPUPowerPreference = "low-power" | "high-performance"; declare class GPUAdapter { readonly features: GPUSupportedFeatures; readonly limits: GPUSupportedLimits; + readonly info: GPUAdapterInfo; readonly isFallbackAdapter: boolean; requestDevice(descriptor?: GPUDeviceDescriptor): Promise<GPUDevice>; - requestAdapterInfo(): Promise<GPUAdapterInfo>; } /** diff --git a/ext/webgpu/01_webgpu.js b/ext/webgpu/01_webgpu.js index 15b82a8e3..2c30e47f0 100644 --- a/ext/webgpu/01_webgpu.js +++ b/ext/webgpu/01_webgpu.js @@ -423,6 +423,8 @@ class GPUAdapter { [_adapter]; /** @type {bool} */ [_invalid]; + /** @type {GPUAdapterInfo | undefined} */ + #adapterInfo; /** @returns {GPUSupportedFeatures} */ get features() { @@ -502,9 +504,9 @@ class GPUAdapter { } /** - * @returns {Promise<GPUAdapterInfo>} + * @returns {GPUAdapterInfo} */ - requestAdapterInfo() { + get info() { webidl.assertBranded(this, GPUAdapterPrototype); if (this[_invalid]) { @@ -513,6 +515,10 @@ class GPUAdapter { ); } + if (this.#adapterInfo !== undefined) { + return this.#adapterInfo; + } + const { vendor, architecture, @@ -525,7 +531,8 @@ class GPUAdapter { adapterInfo[_architecture] = architecture; adapterInfo[_device] = device; adapterInfo[_description] = description; - return PromiseResolve(adapterInfo); + this.#adapterInfo = adapterInfo; + return adapterInfo; } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { diff --git a/ext/webgpu/webgpu.idl b/ext/webgpu/webgpu.idl index 07d9d60ec..d673ce77b 100644 --- a/ext/webgpu/webgpu.idl +++ b/ext/webgpu/webgpu.idl @@ -78,11 +78,11 @@ enum GPUPowerPreference { [Exposed=(Window, Worker), SecureContext] interface GPUAdapter { [SameObject] readonly attribute GPUSupportedFeatures features; + [SameObject] readonly attribute GPUAdapterInfo info; [SameObject] readonly attribute GPUSupportedLimits limits; readonly attribute boolean isFallbackAdapter; Promise<GPUDevice> requestDevice(optional GPUDeviceDescriptor descriptor = {}); - Promise<GPUAdapterInfo> requestAdapterInfo(); }; dictionary GPUDeviceDescriptor |