summaryrefslogtreecommitdiff
path: root/op_crates/webgpu
diff options
context:
space:
mode:
authorcrowlKats <13135287+crowlKats@users.noreply.github.com>2021-03-20 00:43:54 +0100
committerGitHub <noreply@github.com>2021-03-20 00:43:54 +0100
commit0f9c929b3a7135667e7f1f8de3ae1195b59fb2e3 (patch)
treefa0b1913269ae1e2893ab7a7729c501df8b040bd /op_crates/webgpu
parent941a7c8ec9dd1da28923b45da6009576e65c172b (diff)
fix(op_crates/webgpu): create instance only when required (#9771)
Co-authored-by: Luca Casonato <lucacasonato@yahoo.com>
Diffstat (limited to 'op_crates/webgpu')
-rw-r--r--op_crates/webgpu/01_webgpu.js20
-rw-r--r--op_crates/webgpu/lib.rs11
2 files changed, 20 insertions, 11 deletions
diff --git a/op_crates/webgpu/01_webgpu.js b/op_crates/webgpu/01_webgpu.js
index 743f875e9..1b790914e 100644
--- a/op_crates/webgpu/01_webgpu.js
+++ b/op_crates/webgpu/01_webgpu.js
@@ -14,8 +14,8 @@
const eventTarget = window.__bootstrap.eventTarget;
/**
- * @param {any} self
- * @param {{prefix: string, context: string}} opts
+ * @param {any} self
+ * @param {{prefix: string, context: string}} opts
* @returns {InnerGPUDevice & {rid: number}}
*/
function assertDevice(self, { prefix, context }) {
@@ -31,9 +31,9 @@
}
/**
- * @param {InnerGPUDevice} self
- * @param {any} resource
- * @param {{prefix: string, resourceContext: string, selfContext: string}} opts
+ * @param {InnerGPUDevice} self
+ * @param {any} resource
+ * @param {{prefix: string, resourceContext: string, selfContext: string}} opts
* @returns {InnerGPUDevice & {rid: number}}
*/
function assertDeviceMatch(
@@ -55,8 +55,8 @@
}
/**
- * @param {any} self
- * @param {{prefix: string, context: string}} opts
+ * @param {any} self
+ * @param {{prefix: string, context: string}} opts
* @returns {number}
*/
function assertResource(self, { prefix, context }) {
@@ -452,7 +452,7 @@
const _message = Symbol("[[message]]");
/**
- *
+ *
* @param {string | undefined} reason
* @param {string} message
* @returns {GPUDeviceLostInfo}
@@ -524,10 +524,10 @@
const _device = Symbol("[[device]]");
const _queue = Symbol("[[queue]]");
- /**
+ /**
* @typedef ErrorScope
* @property {string} filter
- * @property {GPUError | undefined} error
+ * @property {GPUError | undefined} error
*/
/**
diff --git a/op_crates/webgpu/lib.rs b/op_crates/webgpu/lib.rs
index 3249b2818..046472905 100644
--- a/op_crates/webgpu/lib.rs
+++ b/op_crates/webgpu/lib.rs
@@ -198,7 +198,16 @@ pub async fn op_webgpu_request_adapter(
) -> Result<Value, AnyError> {
let mut state = state.borrow_mut();
check_unstable(&state, "navigator.gpu.requestAdapter");
- let instance = state.borrow::<Instance>();
+ let instance = if let Some(instance) = state.try_borrow::<Instance>() {
+ instance
+ } else {
+ state.put(wgpu_core::hub::Global::new(
+ "webgpu",
+ wgpu_core::hub::IdentityManagerFactory,
+ wgpu_types::BackendBit::PRIMARY,
+ ));
+ state.borrow::<Instance>()
+ };
let descriptor = wgpu_core::instance::RequestAdapterOptions {
power_preference: match args.power_preference {