mirror of
https://github.com/gfx-rs/wgpu.git
synced 2025-12-08 21:26:17 +00:00
Only commit hopefully (#8140)
This commit is contained in:
parent
57368b374f
commit
24a31c494a
@ -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,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user