Only commit hopefully (#8140)

This commit is contained in:
Magnus 2025-08-24 16:23:21 -05:00 committed by GitHub
parent 57368b374f
commit 24a31c494a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -128,11 +128,8 @@ impl super::Device {
primitive_class: MTLPrimitiveTopologyClass, primitive_class: MTLPrimitiveTopologyClass,
naga_stage: naga::ShaderStage, naga_stage: naga::ShaderStage,
) -> Result<CompiledShader, crate::PipelineError> { ) -> Result<CompiledShader, crate::PipelineError> {
let naga_shader = if let ShaderModuleSource::Naga(naga) = &stage.module.source { match stage.module.source {
naga ShaderModuleSource::Naga(ref naga_shader) => {
} else {
panic!("load_shader required a naga shader");
};
let stage_bit = map_naga_stage(naga_stage); let stage_bit = map_naga_stage(naga_stage);
let (module, module_info) = naga::back::pipeline_constants::process_overrides( let (module, module_info) = naga::back::pipeline_constants::process_overrides(
&naga_shader.module, &naga_shader.module,
@ -140,7 +137,9 @@ impl super::Device {
Some((naga_stage, stage.entry_point)), Some((naga_stage, stage.entry_point)),
stage.constants, stage.constants,
) )
.map_err(|e| crate::PipelineError::PipelineConstants(stage_bit, format!("MSL: {e:?}")))?; .map_err(|e| {
crate::PipelineError::PipelineConstants(stage_bit, format!("MSL: {e:?}"))
})?;
let ep_resources = &layout.per_stage_map[naga_stage]; let ep_resources = &layout.per_stage_map[naga_stage];
@ -191,8 +190,12 @@ impl super::Device {
vertex_buffer_mappings: vertex_buffer_mappings.to_vec(), vertex_buffer_mappings: vertex_buffer_mappings.to_vec(),
}; };
let (source, info) = let (source, info) = naga::back::msl::write_string(
naga::back::msl::write_string(&module, &module_info, &options, &pipeline_options) &module,
&module_info,
&options,
&pipeline_options,
)
.map_err(|e| crate::PipelineError::Linkage(stage_bit, format!("MSL: {e:?}")))?; .map_err(|e| crate::PipelineError::Linkage(stage_bit, format!("MSL: {e:?}")))?;
log::debug!( log::debug!(
@ -274,7 +277,8 @@ impl super::Device {
} }
let mut dynamic_array_container_ty = var.ty; let mut dynamic_array_container_ty = var.ty;
if let naga::TypeInner::Struct { ref members, .. } = module.types[var.ty].inner if let naga::TypeInner::Struct { ref members, .. } =
module.types[var.ty].inner
{ {
dynamic_array_container_ty = members.last().unwrap().ty; dynamic_array_container_ty = members.last().unwrap().ty;
} }
@ -299,6 +303,20 @@ impl super::Device {
immutable_buffer_mask, immutable_buffer_mask,
}) })
} }
ShaderModuleSource::Passthrough(ref shader) => Ok(CompiledShader {
library: shader.library.clone(),
function: shader.function.clone(),
wg_size: MTLSize {
width: shader.num_workgroups.0 as u64,
height: shader.num_workgroups.1 as u64,
depth: shader.num_workgroups.2 as u64,
},
wg_memory_sizes: vec![],
sized_bindings: vec![],
immutable_buffer_mask: 0,
}),
}
}
fn set_buffers_mutability( fn set_buffers_mutability(
buffers: &metal::PipelineBufferDescriptorArrayRef, buffers: &metal::PipelineBufferDescriptorArrayRef,