summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-08-06 03:00:32 -0700
committerGitHub <noreply@github.com>2024-08-06 15:30:32 +0530
commitc0e9512b39a4ed3713d1fd9b28469d0edf68f578 (patch)
tree48194976942488e9ded45464e76cef943db5dedb
parent7f6b484684279b643d8ed6374bed0b92b3038b50 (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.ts2
-rw-r--r--ext/webgpu/01_webgpu.js13
-rw-r--r--ext/webgpu/webgpu.idl2
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