Rename and relocate ID resolution helpers

This commit is contained in:
Andy Leiserson 2025-08-29 17:10:46 -07:00
parent 885845087f
commit c0c16078e9
2 changed files with 37 additions and 56 deletions

View File

@ -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<id::markers::Buffer>,
) -> Result<Arc<crate::resource::Buffer>, InvalidResourceError> {
let hub = &self.hub;
let buffer = hub.buffers.get(buffer_id).get()?;
Ok(buffer)
}
fn resolve_query_set(
&self,
query_set_id: Id<id::markers::QuerySet>,
) -> Result<Arc<QuerySet>, 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,

View File

@ -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<id::markers::Buffer>,
) -> Result<Arc<crate::resource::Buffer>, 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<id::markers::QuerySet>,
) -> Result<Arc<QuerySet>, 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,
});