summaryrefslogtreecommitdiff
path: root/ext/webgpu/queue.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ext/webgpu/queue.rs')
-rw-r--r--ext/webgpu/queue.rs20
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)?;