summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/webgpu/01_webgpu.js25
-rw-r--r--ext/webgpu/lib.rs13
2 files changed, 19 insertions, 19 deletions
diff --git a/ext/webgpu/01_webgpu.js b/ext/webgpu/01_webgpu.js
index 2c30e47f0..36b35072c 100644
--- a/ext/webgpu/01_webgpu.js
+++ b/ext/webgpu/01_webgpu.js
@@ -137,6 +137,8 @@ const _mappingRange = Symbol("[[mapping_range]]");
const _mappedRanges = Symbol("[[mapped_ranges]]");
const _mapMode = Symbol("[[map_mode]]");
const _adapter = Symbol("[[adapter]]");
+const _adapterInfo = Symbol("[[adapterInfo]]");
+const _invalid = Symbol("[[invalid]]");
const _cleanup = Symbol("[[cleanup]]");
const _vendor = Symbol("[[vendor]]");
const _architecture = Symbol("[[architecture]]");
@@ -414,17 +416,18 @@ function createGPUAdapter(inner) {
features: createGPUSupportedFeatures(inner.features),
limits: createGPUSupportedLimits(inner.limits),
};
+ adapter[_adapterInfo] = undefined;
+ adapter[_invalid] = false;
return adapter;
}
-const _invalid = Symbol("[[invalid]]");
class GPUAdapter {
/** @type {InnerGPUAdapter} */
[_adapter];
- /** @type {bool} */
- [_invalid];
/** @type {GPUAdapterInfo | undefined} */
- #adapterInfo;
+ [_adapterInfo];
+ /** @type {boolean} */
+ [_invalid];
/** @returns {GPUSupportedFeatures} */
get features() {
@@ -439,7 +442,7 @@ class GPUAdapter {
/** @returns {boolean} */
get isFallbackAdapter() {
webidl.assertBranded(this, GPUAdapterPrototype);
- return this[_adapter].isFallbackAdapter;
+ return this[_adapter].isFallback;
}
constructor() {
@@ -509,16 +512,16 @@ class GPUAdapter {
get info() {
webidl.assertBranded(this, GPUAdapterPrototype);
+ if (this[_adapterInfo] !== undefined) {
+ return this[_adapterInfo];
+ }
+
if (this[_invalid]) {
throw new TypeError(
"The adapter cannot be reused, as it has been invalidated by a device creation",
);
}
- if (this.#adapterInfo !== undefined) {
- return this.#adapterInfo;
- }
-
const {
vendor,
architecture,
@@ -531,7 +534,7 @@ class GPUAdapter {
adapterInfo[_architecture] = architecture;
adapterInfo[_device] = device;
adapterInfo[_description] = description;
- this.#adapterInfo = adapterInfo;
+ this[_adapterInfo] = adapterInfo;
return adapterInfo;
}
@@ -543,6 +546,7 @@ class GPUAdapter {
keys: [
"features",
"limits",
+ "info",
"isFallbackAdapter",
],
}),
@@ -937,7 +941,6 @@ function GPUObjectBaseMixin(name, type) {
* @property {number | undefined} rid
* @property {GPUSupportedFeatures} features
* @property {GPUSupportedLimits} limits
- * @property {GPUDevice} device
*/
class InnerGPUDevice {
diff --git a/ext/webgpu/lib.rs b/ext/webgpu/lib.rs
index 8a423fd00..df01c5ff9 100644
--- a/ext/webgpu/lib.rs
+++ b/ext/webgpu/lib.rs
@@ -382,7 +382,7 @@ pub struct GpuAdapterRes {
rid: ResourceId,
limits: wgpu_types::Limits,
features: Vec<&'static str>,
- is_software: bool,
+ is_fallback: bool,
}
#[derive(Serialize)]
@@ -392,7 +392,6 @@ pub struct GpuDeviceRes {
queue_rid: ResourceId,
limits: wgpu_types::Limits,
features: Vec<&'static str>,
- is_software: bool,
}
#[op2]
@@ -462,7 +461,8 @@ pub fn op_webgpu_request_adapter(
rid,
features,
limits: adapter_limits,
- is_software: false,
+ // TODO(lucacasonato): report correctly from wgpu
+ is_fallback: false,
}))
}
@@ -712,8 +712,6 @@ pub fn op_webgpu_request_device(
queue_rid,
features,
limits,
- // TODO(lucacasonato): report correctly from wgpu
- is_software: false,
})
}
@@ -732,14 +730,13 @@ pub fn op_webgpu_request_adapter_info(
state: Rc<RefCell<OpState>>,
#[smi] adapter_rid: ResourceId,
) -> Result<GPUAdapterInfo, AnyError> {
- let mut state = state.borrow_mut();
+ let state = state.borrow_mut();
let adapter_resource =
- state.resource_table.take::<WebGpuAdapter>(adapter_rid)?;
+ state.resource_table.get::<WebGpuAdapter>(adapter_rid)?;
let adapter = adapter_resource.1;
let instance = state.borrow::<Instance>();
let info = gfx_select!(adapter => instance.adapter_get_info(adapter))?;
- adapter_resource.close();
Ok(GPUAdapterInfo {
vendor: info.vendor.to_string(),