Skip to content

Commit d7aec2c

Browse files
committed
wgpu: switch from shader passthrough to regular shader modules
1 parent cde37ce commit d7aec2c

File tree

12 files changed

+34
-109
lines changed

12 files changed

+34
-109
lines changed

generated/graphics/ash/cargo-gpu/mygraphics/build.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use cargo_gpu::Install;
2-
use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy};
2+
use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvMetadata};
33
use std::path::PathBuf;
44

55
pub fn main() -> anyhow::Result<()> {
@@ -12,10 +12,8 @@ pub fn main() -> anyhow::Result<()> {
1212
let install = Install::from_shader_crate(crate_path.clone()).run()?;
1313
let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3");
1414
builder.print_metadata = MetadataPrintout::DependencyOnly;
15-
builder.shader_panic_strategy = ShaderPanicStrategy::DebugPrintfThenExit {
16-
print_inputs: true,
17-
print_backtrace: true,
18-
};
15+
builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit;
16+
builder.spirv_metadata = SpirvMetadata::Full;
1917

2018
let compile_result = builder.build()?;
2119
let spv_path = compile_result.module.unwrap_single();

generated/graphics/ash/spirv-builder/mygraphics/build.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvBuilder};
1+
use spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvBuilder, SpirvMetadata};
22
use std::path::PathBuf;
33

44
pub fn main() -> anyhow::Result<()> {
@@ -10,10 +10,8 @@ pub fn main() -> anyhow::Result<()> {
1010

1111
let mut builder = SpirvBuilder::new(crate_path, "spirv-unknown-vulkan1.3");
1212
builder.print_metadata = MetadataPrintout::DependencyOnly;
13-
builder.shader_panic_strategy = ShaderPanicStrategy::DebugPrintfThenExit {
14-
print_inputs: true,
15-
print_backtrace: true,
16-
};
13+
builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit;
14+
builder.spirv_metadata = SpirvMetadata::Full;
1715

1816
let compile_result = builder.build()?;
1917
let spv_path = compile_result.module.unwrap_single();

generated/graphics/wgpu/cargo-gpu/mygraphics/build.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use cargo_gpu::Install;
2-
use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy};
2+
use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvMetadata};
33
use std::path::PathBuf;
44

55
pub fn main() -> anyhow::Result<()> {
@@ -12,10 +12,8 @@ pub fn main() -> anyhow::Result<()> {
1212
let install = Install::from_shader_crate(crate_path.clone()).run()?;
1313
let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3");
1414
builder.print_metadata = MetadataPrintout::DependencyOnly;
15-
builder.shader_panic_strategy = ShaderPanicStrategy::DebugPrintfThenExit {
16-
print_inputs: true,
17-
print_backtrace: true,
18-
};
15+
builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit;
16+
builder.spirv_metadata = SpirvMetadata::Full;
1917

2018
let compile_result = builder.build()?;
2119
let spv_path = compile_result.module.unwrap_single();

generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/mod.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ pub async fn main_inner() -> anyhow::Result<()> {
3636
let adapter =
3737
wgpu::util::initialize_adapter_from_env_or_default(&instance, Some(&surface)).await?;
3838

39-
let required_features =
40-
wgpu::Features::PUSH_CONSTANTS | wgpu::Features::EXPERIMENTAL_PASSTHROUGH_SHADERS;
39+
let required_features = wgpu::Features::PUSH_CONSTANTS;
4140
let required_limits = wgpu::Limits {
4241
max_push_constant_size: 128,
4342
..Default::default()
@@ -47,7 +46,7 @@ pub async fn main_inner() -> anyhow::Result<()> {
4746
label: None,
4847
required_features,
4948
required_limits,
50-
experimental_features: unsafe { wgpu::ExperimentalFeatures::enabled() },
49+
experimental_features: wgpu::ExperimentalFeatures::disabled(),
5150
memory_hints: wgpu::MemoryHints::Performance,
5251
trace: Default::default(),
5352
})

generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/render_pipeline.rs

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ use mygraphics_shaders::ShaderConstants;
22
use wgpu::{
33
ColorTargetState, ColorWrites, Device, FragmentState, FrontFace, MultisampleState,
44
PipelineLayoutDescriptor, PolygonMode, PrimitiveState, PrimitiveTopology, PushConstantRange,
5-
RenderPass, RenderPipeline, RenderPipelineDescriptor, ShaderModuleDescriptorPassthrough,
6-
ShaderRuntimeChecks, ShaderStages, TextureFormat, VertexState,
5+
RenderPass, RenderPipeline, RenderPipelineDescriptor, ShaderStages, TextureFormat, VertexState,
6+
include_spirv,
77
};
88

99
pub struct MyRenderPipeline {
@@ -12,27 +12,7 @@ pub struct MyRenderPipeline {
1212

1313
impl MyRenderPipeline {
1414
pub fn new(device: &Device, out_format: TextureFormat) -> anyhow::Result<Self> {
15-
// Workaround in wgpu 27.0.1 where the macro expansion of `include_spirv_raw!` doesn't compile
16-
// see https://github.com/gfx-rs/wgpu/pull/8250
17-
// let module = unsafe {
18-
// device.create_shader_module_passthrough(include_spirv_raw!(env!("SHADER_SPV_PATH")))
19-
// };
20-
let module = unsafe {
21-
device.create_shader_module_passthrough(ShaderModuleDescriptorPassthrough {
22-
label: Some(env!("SHADER_SPV_PATH")),
23-
entry_point: "".to_owned(),
24-
num_workgroups: (0, 0, 0),
25-
runtime_checks: ShaderRuntimeChecks::unchecked(),
26-
spirv: Some(wgpu::util::make_spirv_raw(include_bytes!(env!(
27-
"SHADER_SPV_PATH"
28-
)))),
29-
dxil: None,
30-
msl: None,
31-
hlsl: None,
32-
glsl: None,
33-
wgsl: None,
34-
})
35-
};
15+
let module = device.create_shader_module(include_spirv!(env!("SHADER_SPV_PATH")));
3616

3717
let layout = device.create_pipeline_layout(&PipelineLayoutDescriptor {
3818
label: Some("MyRenderPipeline layout"),

generated/graphics/wgpu/spirv-builder/mygraphics/build.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvBuilder};
1+
use spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvBuilder, SpirvMetadata};
22
use std::path::PathBuf;
33

44
pub fn main() -> anyhow::Result<()> {
@@ -10,10 +10,8 @@ pub fn main() -> anyhow::Result<()> {
1010

1111
let mut builder = SpirvBuilder::new(crate_path, "spirv-unknown-vulkan1.3");
1212
builder.print_metadata = MetadataPrintout::DependencyOnly;
13-
builder.shader_panic_strategy = ShaderPanicStrategy::DebugPrintfThenExit {
14-
print_inputs: true,
15-
print_backtrace: true,
16-
};
13+
builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit;
14+
builder.spirv_metadata = SpirvMetadata::Full;
1715

1816
let compile_result = builder.build()?;
1917
let spv_path = compile_result.module.unwrap_single();

generated/graphics/wgpu/spirv-builder/mygraphics/src/wgpu_renderer/mod.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ pub async fn main_inner() -> anyhow::Result<()> {
3636
let adapter =
3737
wgpu::util::initialize_adapter_from_env_or_default(&instance, Some(&surface)).await?;
3838

39-
let required_features =
40-
wgpu::Features::PUSH_CONSTANTS | wgpu::Features::EXPERIMENTAL_PASSTHROUGH_SHADERS;
39+
let required_features = wgpu::Features::PUSH_CONSTANTS;
4140
let required_limits = wgpu::Limits {
4241
max_push_constant_size: 128,
4342
..Default::default()
@@ -47,7 +46,7 @@ pub async fn main_inner() -> anyhow::Result<()> {
4746
label: None,
4847
required_features,
4948
required_limits,
50-
experimental_features: unsafe { wgpu::ExperimentalFeatures::enabled() },
49+
experimental_features: wgpu::ExperimentalFeatures::disabled(),
5150
memory_hints: wgpu::MemoryHints::Performance,
5251
trace: Default::default(),
5352
})

generated/graphics/wgpu/spirv-builder/mygraphics/src/wgpu_renderer/render_pipeline.rs

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ use mygraphics_shaders::ShaderConstants;
22
use wgpu::{
33
ColorTargetState, ColorWrites, Device, FragmentState, FrontFace, MultisampleState,
44
PipelineLayoutDescriptor, PolygonMode, PrimitiveState, PrimitiveTopology, PushConstantRange,
5-
RenderPass, RenderPipeline, RenderPipelineDescriptor, ShaderModuleDescriptorPassthrough,
6-
ShaderRuntimeChecks, ShaderStages, TextureFormat, VertexState,
5+
RenderPass, RenderPipeline, RenderPipelineDescriptor, ShaderStages, TextureFormat, VertexState,
6+
include_spirv,
77
};
88

99
pub struct MyRenderPipeline {
@@ -12,27 +12,7 @@ pub struct MyRenderPipeline {
1212

1313
impl MyRenderPipeline {
1414
pub fn new(device: &Device, out_format: TextureFormat) -> anyhow::Result<Self> {
15-
// Workaround in wgpu 27.0.1 where the macro expansion of `include_spirv_raw!` doesn't compile
16-
// see https://github.com/gfx-rs/wgpu/pull/8250
17-
// let module = unsafe {
18-
// device.create_shader_module_passthrough(include_spirv_raw!(env!("SHADER_SPV_PATH")))
19-
// };
20-
let module = unsafe {
21-
device.create_shader_module_passthrough(ShaderModuleDescriptorPassthrough {
22-
label: Some(env!("SHADER_SPV_PATH")),
23-
entry_point: "".to_owned(),
24-
num_workgroups: (0, 0, 0),
25-
runtime_checks: ShaderRuntimeChecks::unchecked(),
26-
spirv: Some(wgpu::util::make_spirv_raw(include_bytes!(env!(
27-
"SHADER_SPV_PATH"
28-
)))),
29-
dxil: None,
30-
msl: None,
31-
hlsl: None,
32-
glsl: None,
33-
wgsl: None,
34-
})
35-
};
15+
let module = device.create_shader_module(include_spirv!(env!("SHADER_SPV_PATH")));
3616

3717
let layout = device.create_pipeline_layout(&PipelineLayoutDescriptor {
3818
label: Some("MyRenderPipeline layout"),

graphics/mygraphics/build.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use cargo_gpu::Install;
2-
use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy};
2+
use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvMetadata};
33
use std::path::PathBuf;
44

55
pub fn main() -> anyhow::Result<()> {
@@ -12,10 +12,8 @@ pub fn main() -> anyhow::Result<()> {
1212
let install = Install::from_shader_crate(crate_path.clone()).run()?;
1313
let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3");
1414
builder.print_metadata = MetadataPrintout::DependencyOnly;
15-
builder.shader_panic_strategy = ShaderPanicStrategy::DebugPrintfThenExit {
16-
print_inputs: true,
17-
print_backtrace: true,
18-
};
15+
builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit;
16+
builder.spirv_metadata = SpirvMetadata::Full;
1917

2018
let compile_result = builder.build()?;
2119
let spv_path = compile_result.module.unwrap_single();

graphics/mygraphics/build.rs.liquid

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{% if integration == "spirv-builder" -%}
2-
use spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvBuilder};
2+
use spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvBuilder, SpirvMetadata};
33
{% endif -%}
44
{% if integration == "cargo-gpu" -%}
55
use cargo_gpu::Install;
6-
use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy};
6+
use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvMetadata};
77
{% endif -%}
88
use std::path::PathBuf;
99

@@ -22,10 +22,8 @@ pub fn main() -> anyhow::Result<()> {
2222
let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3");
2323
{% endif -%}
2424
builder.print_metadata = MetadataPrintout::DependencyOnly;
25-
builder.shader_panic_strategy = ShaderPanicStrategy::DebugPrintfThenExit {
26-
print_inputs: true,
27-
print_backtrace: true,
28-
};
25+
builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit;
26+
builder.spirv_metadata = SpirvMetadata::Full;
2927

3028
let compile_result = builder.build()?;
3129
let spv_path = compile_result.module.unwrap_single();

0 commit comments

Comments
 (0)