diff options
Diffstat (limited to 'ext/webgpu/queue.rs')
-rw-r--r-- | ext/webgpu/queue.rs | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/ext/webgpu/queue.rs b/ext/webgpu/queue.rs index 289b14375..8c8bbec95 100644 --- a/ext/webgpu/queue.rs +++ b/ext/webgpu/queue.rs @@ -1,16 +1,28 @@ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. use crate::command_encoder::WebGpuCommandBuffer; +use crate::Instance; use deno_core::error::AnyError; use deno_core::op2; use deno_core::OpState; use deno_core::Resource; use deno_core::ResourceId; use serde::Deserialize; +use std::borrow::Cow; +use std::rc::Rc; use super::error::WebGpuResult; -type WebGpuQueue = super::WebGpuDevice; +pub struct WebGpuQueue(pub Instance, pub wgpu_core::id::QueueId); +impl Resource for WebGpuQueue { + fn name(&self) -> Cow<str> { + "webGPUQueue".into() + } + + fn close(self: Rc<Self>) { + gfx_select!(self.1 => self.0.queue_drop(self.1)); + } +} #[op2] #[serde] @@ -19,7 +31,7 @@ pub fn op_webgpu_queue_submit( #[smi] queue_rid: ResourceId, #[serde] command_buffers: Vec<ResourceId>, ) -> Result<WebGpuResult, AnyError> { - let instance = state.borrow::<super::Instance>(); + let instance = state.borrow::<Instance>(); let queue_resource = state.resource_table.get::<WebGpuQueue>(queue_rid)?; let queue = queue_resource.1; @@ -73,7 +85,7 @@ pub fn op_webgpu_write_buffer( #[number] size: Option<usize>, #[buffer] buf: &[u8], ) -> Result<WebGpuResult, AnyError> { - let instance = state.borrow::<super::Instance>(); + let instance = state.borrow::<Instance>(); let buffer_resource = state .resource_table .get::<super::buffer::WebGpuBuffer>(buffer)?; @@ -106,7 +118,7 @@ pub fn op_webgpu_write_texture( #[serde] size: wgpu_types::Extent3d, #[buffer] buf: &[u8], ) -> Result<WebGpuResult, AnyError> { - let instance = state.borrow::<super::Instance>(); + let instance = state.borrow::<Instance>(); let texture_resource = state .resource_table .get::<super::texture::WebGpuTexture>(destination.texture)?; |