mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 07:14:47 -05:00
fix(op_crates/webgpu): create instance only when required (#9771)
Co-authored-by: Luca Casonato <lucacasonato@yahoo.com>
This commit is contained in:
parent
941a7c8ec9
commit
0f9c929b3a
3 changed files with 20 additions and 16 deletions
|
@ -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
|
||||
*/
|
||||
|
||||
/**
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -4,11 +4,6 @@ pub fn init(rt: &mut deno_core::JsRuntime) {
|
|||
{
|
||||
let op_state = rt.op_state();
|
||||
let mut state = op_state.borrow_mut();
|
||||
state.put(wgpu_core::hub::Global::new(
|
||||
"webgpu",
|
||||
wgpu_core::hub::IdentityManagerFactory,
|
||||
wgpu_types::BackendBit::PRIMARY,
|
||||
));
|
||||
let unstable_checker = state.borrow::<super::UnstableChecker>();
|
||||
let unstable = unstable_checker.unstable;
|
||||
state.put(Unstable(unstable));
|
||||
|
|
Loading…
Reference in a new issue