mirror of
https://github.com/denoland/deno.git
synced 2025-08-03 10:33:54 +00:00
fix(ext/webgpu): invalidate GPUAdapter when a device is created (#23752)
This removes the need for using `Deno.resources` to close the gpuadapter resource, while being more spec compliant.
This commit is contained in:
parent
19c0633a94
commit
6066e069d1
3 changed files with 24 additions and 23 deletions
|
@ -673,7 +673,7 @@ pub fn op_webgpu_request_device(
|
|||
) -> Result<GpuDeviceRes, AnyError> {
|
||||
let mut state = state.borrow_mut();
|
||||
let adapter_resource =
|
||||
state.resource_table.get::<WebGpuAdapter>(adapter_rid)?;
|
||||
state.resource_table.take::<WebGpuAdapter>(adapter_rid)?;
|
||||
let adapter = adapter_resource.1;
|
||||
let instance = state.borrow::<Instance>();
|
||||
|
||||
|
@ -690,6 +690,7 @@ pub fn op_webgpu_request_device(
|
|||
None,
|
||||
None
|
||||
));
|
||||
adapter_resource.close();
|
||||
if let Some(err) = maybe_err {
|
||||
return Err(DomExceptionOperationError::new(&err.to_string()).into());
|
||||
}
|
||||
|
@ -731,13 +732,14 @@ pub fn op_webgpu_request_adapter_info(
|
|||
state: Rc<RefCell<OpState>>,
|
||||
#[smi] adapter_rid: ResourceId,
|
||||
) -> Result<GPUAdapterInfo, AnyError> {
|
||||
let state = state.borrow_mut();
|
||||
let mut state = state.borrow_mut();
|
||||
let adapter_resource =
|
||||
state.resource_table.get::<WebGpuAdapter>(adapter_rid)?;
|
||||
state.resource_table.take::<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(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue