diff --git a/wgpu-core/src/device/global.rs b/wgpu-core/src/device/global.rs index d7963bea3..5aeaa2a3d 100644 --- a/wgpu-core/src/device/global.rs +++ b/wgpu-core/src/device/global.rs @@ -2304,10 +2304,7 @@ impl Global { profiling::scope!("Queue::drop"); api_log!("Queue::drop {queue_id:?}"); - let hub = &self.hub; - if let Some(queue) = hub.queues.unregister(queue_id) { - drop(queue); - } + self.hub.queues.strict_unregister(queue_id); } pub fn buffer_map_async( diff --git a/wgpu-core/src/device/queue.rs b/wgpu-core/src/device/queue.rs index 7058799a0..9923b8bba 100644 --- a/wgpu-core/src/device/queue.rs +++ b/wgpu-core/src/device/queue.rs @@ -321,15 +321,9 @@ impl PendingWrites { } } -#[derive(Clone, Debug, Error)] -#[error("Queue is invalid")] -pub struct InvalidQueue; - #[derive(Clone, Debug, Error)] #[non_exhaustive] pub enum QueueWriteError { - #[error("QueueId is invalid")] - InvalidQueueId, #[error(transparent)] Queue(#[from] DeviceError), #[error(transparent)] @@ -343,8 +337,6 @@ pub enum QueueWriteError { #[derive(Clone, Debug, Error)] #[non_exhaustive] pub enum QueueSubmitError { - #[error("QueueId is invalid")] - InvalidQueueId, #[error(transparent)] Queue(#[from] DeviceError), #[error(transparent)] @@ -381,10 +373,7 @@ impl Global { .get(buffer_id) .map_err(|_| TransferError::InvalidBufferId(buffer_id))?; - let queue = hub - .queues - .get(queue_id) - .map_err(|_| QueueWriteError::InvalidQueueId)?; + let queue = hub.queues.strict_get(queue_id); let device = &queue.device; @@ -444,10 +433,7 @@ impl Global { profiling::scope!("Queue::create_staging_buffer"); let hub = &self.hub; - let queue = hub - .queues - .get(queue_id) - .map_err(|_| QueueWriteError::InvalidQueueId)?; + let queue = hub.queues.strict_get(queue_id); let device = &queue.device; @@ -471,10 +457,7 @@ impl Global { profiling::scope!("Queue::write_staging_buffer"); let hub = &self.hub; - let queue = hub - .queues - .get(queue_id) - .map_err(|_| QueueWriteError::InvalidQueueId)?; + let queue = hub.queues.strict_get(queue_id); let device = &queue.device; @@ -621,10 +604,7 @@ impl Global { let hub = &self.hub; - let queue = hub - .queues - .get(queue_id) - .map_err(|_| QueueWriteError::InvalidQueueId)?; + let queue = hub.queues.strict_get(queue_id); let device = &queue.device; @@ -862,10 +842,7 @@ impl Global { let hub = &self.hub; - let queue = hub - .queues - .get(queue_id) - .map_err(|_| QueueWriteError::InvalidQueueId)?; + let queue = hub.queues.strict_get(queue_id); let device = &queue.device; @@ -1072,10 +1049,7 @@ impl Global { let (submit_index, callbacks) = { let hub = &self.hub; - let queue = hub - .queues - .get(queue_id) - .map_err(|_| QueueSubmitError::InvalidQueueId)?; + let queue = hub.queues.strict_get(queue_id); let device = &queue.device; @@ -1369,27 +1343,20 @@ impl Global { Ok(submit_index) } - pub fn queue_get_timestamp_period(&self, queue_id: QueueId) -> Result { - let hub = &self.hub; - match hub.queues.get(queue_id) { - Ok(queue) => Ok(unsafe { queue.raw().get_timestamp_period() }), - Err(_) => Err(InvalidQueue), - } + pub fn queue_get_timestamp_period(&self, queue_id: QueueId) -> f32 { + let queue = self.hub.queues.strict_get(queue_id); + unsafe { queue.raw().get_timestamp_period() } } pub fn queue_on_submitted_work_done( &self, queue_id: QueueId, closure: SubmittedWorkDoneClosure, - ) -> Result<(), InvalidQueue> { + ) { api_log!("Queue::on_submitted_work_done {queue_id:?}"); //TODO: flush pending writes - let hub = &self.hub; - match hub.queues.get(queue_id) { - Ok(queue) => queue.device.lock_life().add_work_done_closure(closure), - Err(_) => return Err(InvalidQueue), - } - Ok(()) + let queue = self.hub.queues.strict_get(queue_id); + queue.device.lock_life().add_work_done_closure(closure); } } diff --git a/wgpu/src/backend/wgpu_core.rs b/wgpu/src/backend/wgpu_core.rs index dac5d40e4..621c12c66 100644 --- a/wgpu/src/backend/wgpu_core.rs +++ b/wgpu/src/backend/wgpu_core.rs @@ -2069,13 +2069,7 @@ impl crate::Context for ContextWgpuCore { } fn queue_get_timestamp_period(&self, queue_data: &Self::QueueData) -> f32 { - let res = self.0.queue_get_timestamp_period(queue_data.id); - match res { - Ok(v) => v, - Err(cause) => { - self.handle_error_fatal(cause, "Queue::get_timestamp_period"); - } - } + self.0.queue_get_timestamp_period(queue_data.id) } fn queue_on_submitted_work_done( @@ -2084,11 +2078,7 @@ impl crate::Context for ContextWgpuCore { callback: crate::context::SubmittedWorkDoneCallback, ) { let closure = wgc::device::queue::SubmittedWorkDoneClosure::from_rust(callback); - - let res = self.0.queue_on_submitted_work_done(queue_data.id, closure); - if let Err(cause) = res { - self.handle_error_fatal(cause, "Queue::on_submitted_work_done"); - } + self.0.queue_on_submitted_work_done(queue_data.id, closure); } fn device_start_capture(&self, device_data: &Self::DeviceData) {