diff --git a/wgpu-core/src/command/mod.rs b/wgpu-core/src/command/mod.rs index e16c9fe18..cdf343500 100644 --- a/wgpu-core/src/command/mod.rs +++ b/wgpu-core/src/command/mod.rs @@ -36,6 +36,7 @@ use crate::binding_model::BindingError; use crate::command::transition_resources::TransitionResourcesError; use crate::device::queue::TempResource; use crate::device::{Device, DeviceError, MissingFeatures}; +use crate::id::Id; use crate::lock::{rank, Mutex}; use crate::snatch::SnatchGuard; @@ -1155,6 +1156,26 @@ impl WebGpuError for TimestampWritesError { } impl Global { + fn resolve_buffer_id( + &self, + buffer_id: Id, + ) -> Result, InvalidResourceError> { + let hub = &self.hub; + let buffer = hub.buffers.get(buffer_id).get()?; + + Ok(buffer) + } + + fn resolve_query_set( + &self, + query_set_id: Id, + ) -> Result, InvalidResourceError> { + let hub = &self.hub; + let query_set = hub.query_sets.get(query_set_id).get()?; + + Ok(query_set) + } + pub fn command_encoder_finish( &self, encoder_id: id::CommandEncoderId, diff --git a/wgpu-core/src/command/render.rs b/wgpu-core/src/command/render.rs index 20a568aa5..7e38c468f 100644 --- a/wgpu-core/src/command/render.rs +++ b/wgpu-core/src/command/render.rs @@ -3082,26 +3082,6 @@ fn execute_bundle( // that the `pass_try!` and `pass_base!` macros may return early from the // function that invokes them, like the `?` operator. impl Global { - fn resolve_render_pass_buffer_id( - &self, - buffer_id: id::Id, - ) -> Result, InvalidResourceError> { - let hub = &self.hub; - let buffer = hub.buffers.get(buffer_id).get()?; - - Ok(buffer) - } - - fn resolve_render_pass_query_set( - &self, - query_set_id: id::Id, - ) -> Result, InvalidResourceError> { - let hub = &self.hub; - let query_set = hub.query_sets.get(query_set_id).get()?; - - Ok(query_set) - } - pub fn render_pass_set_bind_group( &self, pass: &mut RenderPass, @@ -3183,7 +3163,7 @@ impl Global { let base = pass_base!(pass, scope); base.commands.push(ArcRenderCommand::SetIndexBuffer { - buffer: pass_try!(base, scope, self.resolve_render_pass_buffer_id(buffer_id)), + buffer: pass_try!(base, scope, self.resolve_buffer_id(buffer_id)), index_format, offset, size, @@ -3205,7 +3185,7 @@ impl Global { base.commands.push(ArcRenderCommand::SetVertexBuffer { slot, - buffer: pass_try!(base, scope, self.resolve_render_pass_buffer_id(buffer_id)), + buffer: pass_try!(base, scope, self.resolve_buffer_id(buffer_id)), offset, size, }); @@ -3413,7 +3393,7 @@ impl Global { let base = pass_base!(pass, scope); base.commands.push(ArcRenderCommand::DrawIndirect { - buffer: pass_try!(base, scope, self.resolve_render_pass_buffer_id(buffer_id)), + buffer: pass_try!(base, scope, self.resolve_buffer_id(buffer_id)), offset, count: 1, family: DrawCommandFamily::Draw, @@ -3438,7 +3418,7 @@ impl Global { let base = pass_base!(pass, scope); base.commands.push(ArcRenderCommand::DrawIndirect { - buffer: pass_try!(base, scope, self.resolve_render_pass_buffer_id(buffer_id)), + buffer: pass_try!(base, scope, self.resolve_buffer_id(buffer_id)), offset, count: 1, family: DrawCommandFamily::DrawIndexed, @@ -3463,7 +3443,7 @@ impl Global { let base = pass_base!(pass, scope); base.commands.push(ArcRenderCommand::DrawIndirect { - buffer: pass_try!(base, scope, self.resolve_render_pass_buffer_id(buffer_id)), + buffer: pass_try!(base, scope, self.resolve_buffer_id(buffer_id)), offset, count: 1, family: DrawCommandFamily::DrawMeshTasks, @@ -3489,7 +3469,7 @@ impl Global { let base = pass_base!(pass, scope); base.commands.push(ArcRenderCommand::DrawIndirect { - buffer: pass_try!(base, scope, self.resolve_render_pass_buffer_id(buffer_id)), + buffer: pass_try!(base, scope, self.resolve_buffer_id(buffer_id)), offset, count, family: DrawCommandFamily::Draw, @@ -3515,7 +3495,7 @@ impl Global { let base = pass_base!(pass, scope); base.commands.push(ArcRenderCommand::DrawIndirect { - buffer: pass_try!(base, scope, self.resolve_render_pass_buffer_id(buffer_id)), + buffer: pass_try!(base, scope, self.resolve_buffer_id(buffer_id)), offset, count, family: DrawCommandFamily::DrawIndexed, @@ -3541,7 +3521,7 @@ impl Global { let base = pass_base!(pass, scope); base.commands.push(ArcRenderCommand::DrawIndirect { - buffer: pass_try!(base, scope, self.resolve_render_pass_buffer_id(buffer_id)), + buffer: pass_try!(base, scope, self.resolve_buffer_id(buffer_id)), offset, count, family: DrawCommandFamily::DrawMeshTasks, @@ -3570,13 +3550,9 @@ impl Global { base.commands .push(ArcRenderCommand::MultiDrawIndirectCount { - buffer: pass_try!(base, scope, self.resolve_render_pass_buffer_id(buffer_id)), + buffer: pass_try!(base, scope, self.resolve_buffer_id(buffer_id)), offset, - count_buffer: pass_try!( - base, - scope, - self.resolve_render_pass_buffer_id(count_buffer_id) - ), + count_buffer: pass_try!(base, scope, self.resolve_buffer_id(count_buffer_id)), count_buffer_offset, max_count, family: DrawCommandFamily::Draw, @@ -3602,13 +3578,9 @@ impl Global { base.commands .push(ArcRenderCommand::MultiDrawIndirectCount { - buffer: pass_try!(base, scope, self.resolve_render_pass_buffer_id(buffer_id)), + buffer: pass_try!(base, scope, self.resolve_buffer_id(buffer_id)), offset, - count_buffer: pass_try!( - base, - scope, - self.resolve_render_pass_buffer_id(count_buffer_id) - ), + count_buffer: pass_try!(base, scope, self.resolve_buffer_id(count_buffer_id)), count_buffer_offset, max_count, family: DrawCommandFamily::DrawIndexed, @@ -3634,13 +3606,9 @@ impl Global { base.commands .push(ArcRenderCommand::MultiDrawIndirectCount { - buffer: pass_try!(base, scope, self.resolve_render_pass_buffer_id(buffer_id)), + buffer: pass_try!(base, scope, self.resolve_buffer_id(buffer_id)), offset, - count_buffer: pass_try!( - base, - scope, - self.resolve_render_pass_buffer_id(count_buffer_id) - ), + count_buffer: pass_try!(base, scope, self.resolve_buffer_id(count_buffer_id)), count_buffer_offset, max_count, family: DrawCommandFamily::DrawMeshTasks, @@ -3705,11 +3673,7 @@ impl Global { let base = pass_base!(pass, scope); base.commands.push(ArcRenderCommand::WriteTimestamp { - query_set: pass_try!( - base, - scope, - self.resolve_render_pass_query_set(query_set_id) - ), + query_set: pass_try!(base, scope, self.resolve_query_set(query_set_id)), query_index, }); @@ -3753,11 +3717,7 @@ impl Global { base.commands .push(ArcRenderCommand::BeginPipelineStatisticsQuery { - query_set: pass_try!( - base, - scope, - self.resolve_render_pass_query_set(query_set_id) - ), + query_set: pass_try!(base, scope, self.resolve_query_set(query_set_id)), query_index, });