From c0e9512b39a4ed3713d1fd9b28469d0edf68f578 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Tue, 6 Aug 2024 03:00:32 -0700 Subject: 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 --- ext/webgpu/01_webgpu.js | 13 ++++++++++--- ext/webgpu/webgpu.idl | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'ext') 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} + * @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 requestDevice(optional GPUDeviceDescriptor descriptor = {}); - Promise requestAdapterInfo(); }; dictionary GPUDeviceDescriptor -- cgit v1.2.3