From 134c1e86fe3b5118d9a3b1618126953b9df7bcf0 Mon Sep 17 00:00:00 2001 From: firestar99 Date: Fri, 19 Dec 2025 14:21:45 +0100 Subject: [PATCH 1/5] wgpu: switch from shader passthrough to regular shader modules --- .../ash/cargo-gpu/mygraphics/build.rs | 8 +++--- .../ash/spirv-builder/mygraphics/build.rs | 8 +++--- .../wgpu/cargo-gpu/mygraphics/build.rs | 8 +++--- .../mygraphics/src/wgpu_renderer/mod.rs | 5 ++-- .../src/wgpu_renderer/render_pipeline.rs | 26 +++---------------- .../wgpu/spirv-builder/mygraphics/build.rs | 8 +++--- .../mygraphics/src/wgpu_renderer/mod.rs | 5 ++-- .../src/wgpu_renderer/render_pipeline.rs | 26 +++---------------- graphics/mygraphics/build.rs | 8 +++--- graphics/mygraphics/build.rs.liquid | 10 +++---- graphics/mygraphics/src/wgpu_renderer/mod.rs | 5 ++-- .../src/wgpu_renderer/render_pipeline.rs | 26 +++---------------- 12 files changed, 34 insertions(+), 109 deletions(-) diff --git a/generated/graphics/ash/cargo-gpu/mygraphics/build.rs b/generated/graphics/ash/cargo-gpu/mygraphics/build.rs index 0219afa..7cbfc8e 100644 --- a/generated/graphics/ash/cargo-gpu/mygraphics/build.rs +++ b/generated/graphics/ash/cargo-gpu/mygraphics/build.rs @@ -1,5 +1,5 @@ use cargo_gpu::Install; -use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy}; +use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvMetadata}; use std::path::PathBuf; pub fn main() -> anyhow::Result<()> { @@ -12,10 +12,8 @@ pub fn main() -> anyhow::Result<()> { let install = Install::from_shader_crate(crate_path.clone()).run()?; let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3"); builder.print_metadata = MetadataPrintout::DependencyOnly; - builder.shader_panic_strategy = ShaderPanicStrategy::DebugPrintfThenExit { - print_inputs: true, - print_backtrace: true, - }; + builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit; + builder.spirv_metadata = SpirvMetadata::Full; let compile_result = builder.build()?; let spv_path = compile_result.module.unwrap_single(); diff --git a/generated/graphics/ash/spirv-builder/mygraphics/build.rs b/generated/graphics/ash/spirv-builder/mygraphics/build.rs index 5993ae2..1c38849 100644 --- a/generated/graphics/ash/spirv-builder/mygraphics/build.rs +++ b/generated/graphics/ash/spirv-builder/mygraphics/build.rs @@ -1,4 +1,4 @@ -use spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvBuilder}; +use spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvBuilder, SpirvMetadata}; use std::path::PathBuf; pub fn main() -> anyhow::Result<()> { @@ -10,10 +10,8 @@ pub fn main() -> anyhow::Result<()> { let mut builder = SpirvBuilder::new(crate_path, "spirv-unknown-vulkan1.3"); builder.print_metadata = MetadataPrintout::DependencyOnly; - builder.shader_panic_strategy = ShaderPanicStrategy::DebugPrintfThenExit { - print_inputs: true, - print_backtrace: true, - }; + builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit; + builder.spirv_metadata = SpirvMetadata::Full; let compile_result = builder.build()?; let spv_path = compile_result.module.unwrap_single(); diff --git a/generated/graphics/wgpu/cargo-gpu/mygraphics/build.rs b/generated/graphics/wgpu/cargo-gpu/mygraphics/build.rs index 0219afa..7cbfc8e 100644 --- a/generated/graphics/wgpu/cargo-gpu/mygraphics/build.rs +++ b/generated/graphics/wgpu/cargo-gpu/mygraphics/build.rs @@ -1,5 +1,5 @@ use cargo_gpu::Install; -use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy}; +use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvMetadata}; use std::path::PathBuf; pub fn main() -> anyhow::Result<()> { @@ -12,10 +12,8 @@ pub fn main() -> anyhow::Result<()> { let install = Install::from_shader_crate(crate_path.clone()).run()?; let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3"); builder.print_metadata = MetadataPrintout::DependencyOnly; - builder.shader_panic_strategy = ShaderPanicStrategy::DebugPrintfThenExit { - print_inputs: true, - print_backtrace: true, - }; + builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit; + builder.spirv_metadata = SpirvMetadata::Full; let compile_result = builder.build()?; let spv_path = compile_result.module.unwrap_single(); diff --git a/generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/mod.rs b/generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/mod.rs index f9a670f..ab8e881 100644 --- a/generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/mod.rs +++ b/generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/mod.rs @@ -36,8 +36,7 @@ pub async fn main_inner() -> anyhow::Result<()> { let adapter = wgpu::util::initialize_adapter_from_env_or_default(&instance, Some(&surface)).await?; - let required_features = - wgpu::Features::PUSH_CONSTANTS | wgpu::Features::EXPERIMENTAL_PASSTHROUGH_SHADERS; + let required_features = wgpu::Features::PUSH_CONSTANTS; let required_limits = wgpu::Limits { max_push_constant_size: 128, ..Default::default() @@ -47,7 +46,7 @@ pub async fn main_inner() -> anyhow::Result<()> { label: None, required_features, required_limits, - experimental_features: unsafe { wgpu::ExperimentalFeatures::enabled() }, + experimental_features: wgpu::ExperimentalFeatures::disabled(), memory_hints: wgpu::MemoryHints::Performance, trace: Default::default(), }) diff --git a/generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/render_pipeline.rs b/generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/render_pipeline.rs index f100339..ee2097e 100644 --- a/generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/render_pipeline.rs +++ b/generated/graphics/wgpu/cargo-gpu/mygraphics/src/wgpu_renderer/render_pipeline.rs @@ -2,8 +2,8 @@ use mygraphics_shaders::ShaderConstants; use wgpu::{ ColorTargetState, ColorWrites, Device, FragmentState, FrontFace, MultisampleState, PipelineLayoutDescriptor, PolygonMode, PrimitiveState, PrimitiveTopology, PushConstantRange, - RenderPass, RenderPipeline, RenderPipelineDescriptor, ShaderModuleDescriptorPassthrough, - ShaderRuntimeChecks, ShaderStages, TextureFormat, VertexState, + RenderPass, RenderPipeline, RenderPipelineDescriptor, ShaderStages, TextureFormat, VertexState, + include_spirv, }; pub struct MyRenderPipeline { @@ -12,27 +12,7 @@ pub struct MyRenderPipeline { impl MyRenderPipeline { pub fn new(device: &Device, out_format: TextureFormat) -> anyhow::Result { - // Workaround in wgpu 27.0.1 where the macro expansion of `include_spirv_raw!` doesn't compile - // see https://github.com/gfx-rs/wgpu/pull/8250 - // let module = unsafe { - // device.create_shader_module_passthrough(include_spirv_raw!(env!("SHADER_SPV_PATH"))) - // }; - let module = unsafe { - device.create_shader_module_passthrough(ShaderModuleDescriptorPassthrough { - label: Some(env!("SHADER_SPV_PATH")), - entry_point: "".to_owned(), - num_workgroups: (0, 0, 0), - runtime_checks: ShaderRuntimeChecks::unchecked(), - spirv: Some(wgpu::util::make_spirv_raw(include_bytes!(env!( - "SHADER_SPV_PATH" - )))), - dxil: None, - msl: None, - hlsl: None, - glsl: None, - wgsl: None, - }) - }; + let module = device.create_shader_module(include_spirv!(env!("SHADER_SPV_PATH"))); let layout = device.create_pipeline_layout(&PipelineLayoutDescriptor { label: Some("MyRenderPipeline layout"), diff --git a/generated/graphics/wgpu/spirv-builder/mygraphics/build.rs b/generated/graphics/wgpu/spirv-builder/mygraphics/build.rs index 5993ae2..1c38849 100644 --- a/generated/graphics/wgpu/spirv-builder/mygraphics/build.rs +++ b/generated/graphics/wgpu/spirv-builder/mygraphics/build.rs @@ -1,4 +1,4 @@ -use spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvBuilder}; +use spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvBuilder, SpirvMetadata}; use std::path::PathBuf; pub fn main() -> anyhow::Result<()> { @@ -10,10 +10,8 @@ pub fn main() -> anyhow::Result<()> { let mut builder = SpirvBuilder::new(crate_path, "spirv-unknown-vulkan1.3"); builder.print_metadata = MetadataPrintout::DependencyOnly; - builder.shader_panic_strategy = ShaderPanicStrategy::DebugPrintfThenExit { - print_inputs: true, - print_backtrace: true, - }; + builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit; + builder.spirv_metadata = SpirvMetadata::Full; let compile_result = builder.build()?; let spv_path = compile_result.module.unwrap_single(); diff --git a/generated/graphics/wgpu/spirv-builder/mygraphics/src/wgpu_renderer/mod.rs b/generated/graphics/wgpu/spirv-builder/mygraphics/src/wgpu_renderer/mod.rs index f9a670f..ab8e881 100644 --- a/generated/graphics/wgpu/spirv-builder/mygraphics/src/wgpu_renderer/mod.rs +++ b/generated/graphics/wgpu/spirv-builder/mygraphics/src/wgpu_renderer/mod.rs @@ -36,8 +36,7 @@ pub async fn main_inner() -> anyhow::Result<()> { let adapter = wgpu::util::initialize_adapter_from_env_or_default(&instance, Some(&surface)).await?; - let required_features = - wgpu::Features::PUSH_CONSTANTS | wgpu::Features::EXPERIMENTAL_PASSTHROUGH_SHADERS; + let required_features = wgpu::Features::PUSH_CONSTANTS; let required_limits = wgpu::Limits { max_push_constant_size: 128, ..Default::default() @@ -47,7 +46,7 @@ pub async fn main_inner() -> anyhow::Result<()> { label: None, required_features, required_limits, - experimental_features: unsafe { wgpu::ExperimentalFeatures::enabled() }, + experimental_features: wgpu::ExperimentalFeatures::disabled(), memory_hints: wgpu::MemoryHints::Performance, trace: Default::default(), }) diff --git a/generated/graphics/wgpu/spirv-builder/mygraphics/src/wgpu_renderer/render_pipeline.rs b/generated/graphics/wgpu/spirv-builder/mygraphics/src/wgpu_renderer/render_pipeline.rs index f100339..ee2097e 100644 --- a/generated/graphics/wgpu/spirv-builder/mygraphics/src/wgpu_renderer/render_pipeline.rs +++ b/generated/graphics/wgpu/spirv-builder/mygraphics/src/wgpu_renderer/render_pipeline.rs @@ -2,8 +2,8 @@ use mygraphics_shaders::ShaderConstants; use wgpu::{ ColorTargetState, ColorWrites, Device, FragmentState, FrontFace, MultisampleState, PipelineLayoutDescriptor, PolygonMode, PrimitiveState, PrimitiveTopology, PushConstantRange, - RenderPass, RenderPipeline, RenderPipelineDescriptor, ShaderModuleDescriptorPassthrough, - ShaderRuntimeChecks, ShaderStages, TextureFormat, VertexState, + RenderPass, RenderPipeline, RenderPipelineDescriptor, ShaderStages, TextureFormat, VertexState, + include_spirv, }; pub struct MyRenderPipeline { @@ -12,27 +12,7 @@ pub struct MyRenderPipeline { impl MyRenderPipeline { pub fn new(device: &Device, out_format: TextureFormat) -> anyhow::Result { - // Workaround in wgpu 27.0.1 where the macro expansion of `include_spirv_raw!` doesn't compile - // see https://github.com/gfx-rs/wgpu/pull/8250 - // let module = unsafe { - // device.create_shader_module_passthrough(include_spirv_raw!(env!("SHADER_SPV_PATH"))) - // }; - let module = unsafe { - device.create_shader_module_passthrough(ShaderModuleDescriptorPassthrough { - label: Some(env!("SHADER_SPV_PATH")), - entry_point: "".to_owned(), - num_workgroups: (0, 0, 0), - runtime_checks: ShaderRuntimeChecks::unchecked(), - spirv: Some(wgpu::util::make_spirv_raw(include_bytes!(env!( - "SHADER_SPV_PATH" - )))), - dxil: None, - msl: None, - hlsl: None, - glsl: None, - wgsl: None, - }) - }; + let module = device.create_shader_module(include_spirv!(env!("SHADER_SPV_PATH"))); let layout = device.create_pipeline_layout(&PipelineLayoutDescriptor { label: Some("MyRenderPipeline layout"), diff --git a/graphics/mygraphics/build.rs b/graphics/mygraphics/build.rs index 0219afa..7cbfc8e 100644 --- a/graphics/mygraphics/build.rs +++ b/graphics/mygraphics/build.rs @@ -1,5 +1,5 @@ use cargo_gpu::Install; -use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy}; +use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvMetadata}; use std::path::PathBuf; pub fn main() -> anyhow::Result<()> { @@ -12,10 +12,8 @@ pub fn main() -> anyhow::Result<()> { let install = Install::from_shader_crate(crate_path.clone()).run()?; let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3"); builder.print_metadata = MetadataPrintout::DependencyOnly; - builder.shader_panic_strategy = ShaderPanicStrategy::DebugPrintfThenExit { - print_inputs: true, - print_backtrace: true, - }; + builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit; + builder.spirv_metadata = SpirvMetadata::Full; let compile_result = builder.build()?; let spv_path = compile_result.module.unwrap_single(); diff --git a/graphics/mygraphics/build.rs.liquid b/graphics/mygraphics/build.rs.liquid index 7debc6e..cb904a2 100644 --- a/graphics/mygraphics/build.rs.liquid +++ b/graphics/mygraphics/build.rs.liquid @@ -1,9 +1,9 @@ {% if integration == "spirv-builder" -%} -use spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvBuilder}; +use spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvBuilder, SpirvMetadata}; {% endif -%} {% if integration == "cargo-gpu" -%} use cargo_gpu::Install; -use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy}; +use cargo_gpu::spirv_builder::{MetadataPrintout, ShaderPanicStrategy, SpirvMetadata}; {% endif -%} use std::path::PathBuf; @@ -22,10 +22,8 @@ pub fn main() -> anyhow::Result<()> { let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3"); {% endif -%} builder.print_metadata = MetadataPrintout::DependencyOnly; - builder.shader_panic_strategy = ShaderPanicStrategy::DebugPrintfThenExit { - print_inputs: true, - print_backtrace: true, - }; + builder.shader_panic_strategy = ShaderPanicStrategy::SilentExit; + builder.spirv_metadata = SpirvMetadata::Full; let compile_result = builder.build()?; let spv_path = compile_result.module.unwrap_single(); diff --git a/graphics/mygraphics/src/wgpu_renderer/mod.rs b/graphics/mygraphics/src/wgpu_renderer/mod.rs index f9a670f..ab8e881 100644 --- a/graphics/mygraphics/src/wgpu_renderer/mod.rs +++ b/graphics/mygraphics/src/wgpu_renderer/mod.rs @@ -36,8 +36,7 @@ pub async fn main_inner() -> anyhow::Result<()> { let adapter = wgpu::util::initialize_adapter_from_env_or_default(&instance, Some(&surface)).await?; - let required_features = - wgpu::Features::PUSH_CONSTANTS | wgpu::Features::EXPERIMENTAL_PASSTHROUGH_SHADERS; + let required_features = wgpu::Features::PUSH_CONSTANTS; let required_limits = wgpu::Limits { max_push_constant_size: 128, ..Default::default() @@ -47,7 +46,7 @@ pub async fn main_inner() -> anyhow::Result<()> { label: None, required_features, required_limits, - experimental_features: unsafe { wgpu::ExperimentalFeatures::enabled() }, + experimental_features: wgpu::ExperimentalFeatures::disabled(), memory_hints: wgpu::MemoryHints::Performance, trace: Default::default(), }) diff --git a/graphics/mygraphics/src/wgpu_renderer/render_pipeline.rs b/graphics/mygraphics/src/wgpu_renderer/render_pipeline.rs index f100339..ee2097e 100644 --- a/graphics/mygraphics/src/wgpu_renderer/render_pipeline.rs +++ b/graphics/mygraphics/src/wgpu_renderer/render_pipeline.rs @@ -2,8 +2,8 @@ use mygraphics_shaders::ShaderConstants; use wgpu::{ ColorTargetState, ColorWrites, Device, FragmentState, FrontFace, MultisampleState, PipelineLayoutDescriptor, PolygonMode, PrimitiveState, PrimitiveTopology, PushConstantRange, - RenderPass, RenderPipeline, RenderPipelineDescriptor, ShaderModuleDescriptorPassthrough, - ShaderRuntimeChecks, ShaderStages, TextureFormat, VertexState, + RenderPass, RenderPipeline, RenderPipelineDescriptor, ShaderStages, TextureFormat, VertexState, + include_spirv, }; pub struct MyRenderPipeline { @@ -12,27 +12,7 @@ pub struct MyRenderPipeline { impl MyRenderPipeline { pub fn new(device: &Device, out_format: TextureFormat) -> anyhow::Result { - // Workaround in wgpu 27.0.1 where the macro expansion of `include_spirv_raw!` doesn't compile - // see https://github.com/gfx-rs/wgpu/pull/8250 - // let module = unsafe { - // device.create_shader_module_passthrough(include_spirv_raw!(env!("SHADER_SPV_PATH"))) - // }; - let module = unsafe { - device.create_shader_module_passthrough(ShaderModuleDescriptorPassthrough { - label: Some(env!("SHADER_SPV_PATH")), - entry_point: "".to_owned(), - num_workgroups: (0, 0, 0), - runtime_checks: ShaderRuntimeChecks::unchecked(), - spirv: Some(wgpu::util::make_spirv_raw(include_bytes!(env!( - "SHADER_SPV_PATH" - )))), - dxil: None, - msl: None, - hlsl: None, - glsl: None, - wgsl: None, - }) - }; + let module = device.create_shader_module(include_spirv!(env!("SHADER_SPV_PATH"))); let layout = device.create_pipeline_layout(&PipelineLayoutDescriptor { label: Some("MyRenderPipeline layout"), From 06ec0423d1958217be98716ba191ff356885047a Mon Sep 17 00:00:00 2001 From: firestar99 Date: Fri, 19 Dec 2025 14:30:00 +0100 Subject: [PATCH 2/5] update rust-gpu, remove dylib declaration see https://github.com/Rust-GPU/rust-gpu/pull/477 --- Cargo.lock | 12 ++++++------ Cargo.toml | 4 ++-- generated/graphics/ash/cargo-gpu/Cargo.toml | 4 ++-- .../ash/cargo-gpu/mygraphics-shaders/Cargo.toml | 3 --- generated/graphics/ash/spirv-builder/Cargo.toml | 4 ++-- .../ash/spirv-builder/mygraphics-shaders/Cargo.toml | 3 --- generated/graphics/wgpu/cargo-gpu/Cargo.toml | 4 ++-- .../wgpu/cargo-gpu/mygraphics-shaders/Cargo.toml | 3 --- generated/graphics/wgpu/spirv-builder/Cargo.toml | 4 ++-- .../wgpu/spirv-builder/mygraphics-shaders/Cargo.toml | 3 --- graphics/Cargo.toml.liquid | 6 +++--- graphics/mygraphics-shaders/Cargo.toml | 3 --- 12 files changed, 19 insertions(+), 34 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0d3e397..6745f1f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -401,7 +401,7 @@ dependencies = [ [[package]] name = "cargo-gpu" version = "0.1.0" -source = "git+https://github.com/Rust-GPU/cargo-gpu?rev=bf24eb6060e0c7b0013eceddd23b5d7cee68f4cc#bf24eb6060e0c7b0013eceddd23b5d7cee68f4cc" +source = "git+https://github.com/Rust-GPU/cargo-gpu?rev=bb74342b90066ce8b7d50ba8e058df356a54acf4#bb74342b90066ce8b7d50ba8e058df356a54acf4" dependencies = [ "anyhow", "cargo_metadata", @@ -2928,7 +2928,7 @@ checksum = "6c89eaf493b3dfc730cda42a77014aad65e03213992c7afe0dff60a9f7d3dd94" [[package]] name = "rustc_codegen_spirv-types" version = "0.9.0" -source = "git+https://github.com/Rust-GPU/rust-gpu?rev=3df836eb9d7b01344f52737bf9a310d1fb5a0c26#3df836eb9d7b01344f52737bf9a310d1fb5a0c26" +source = "git+https://github.com/Rust-GPU/rust-gpu?rev=e97524f6b4816056b3edaa70c3e0e0c656392c05#e97524f6b4816056b3edaa70c3e0e0c656392c05" dependencies = [ "rspirv", "serde", @@ -3263,7 +3263,7 @@ dependencies = [ [[package]] name = "spirv-builder" version = "0.9.0" -source = "git+https://github.com/Rust-GPU/rust-gpu?rev=3df836eb9d7b01344f52737bf9a310d1fb5a0c26#3df836eb9d7b01344f52737bf9a310d1fb5a0c26" +source = "git+https://github.com/Rust-GPU/rust-gpu?rev=e97524f6b4816056b3edaa70c3e0e0c656392c05#e97524f6b4816056b3edaa70c3e0e0c656392c05" dependencies = [ "cargo_metadata", "clap", @@ -3281,7 +3281,7 @@ dependencies = [ [[package]] name = "spirv-std" version = "0.9.0" -source = "git+https://github.com/Rust-GPU/rust-gpu?rev=6fb875068d0d35b1a81ae89b73cf7a464f8c60f7#6fb875068d0d35b1a81ae89b73cf7a464f8c60f7" +source = "git+https://github.com/Rust-GPU/rust-gpu?rev=96fcc9dbe475921997050c25c02a62c7a12d48e0#96fcc9dbe475921997050c25c02a62c7a12d48e0" dependencies = [ "bitflags 1.3.2", "glam", @@ -3294,7 +3294,7 @@ dependencies = [ [[package]] name = "spirv-std-macros" version = "0.9.0" -source = "git+https://github.com/Rust-GPU/rust-gpu?rev=6fb875068d0d35b1a81ae89b73cf7a464f8c60f7#6fb875068d0d35b1a81ae89b73cf7a464f8c60f7" +source = "git+https://github.com/Rust-GPU/rust-gpu?rev=96fcc9dbe475921997050c25c02a62c7a12d48e0#96fcc9dbe475921997050c25c02a62c7a12d48e0" dependencies = [ "proc-macro2", "quote", @@ -3305,7 +3305,7 @@ dependencies = [ [[package]] name = "spirv-std-types" version = "0.9.0" -source = "git+https://github.com/Rust-GPU/rust-gpu?rev=6fb875068d0d35b1a81ae89b73cf7a464f8c60f7#6fb875068d0d35b1a81ae89b73cf7a464f8c60f7" +source = "git+https://github.com/Rust-GPU/rust-gpu?rev=96fcc9dbe475921997050c25c02a62c7a12d48e0#96fcc9dbe475921997050c25c02a62c7a12d48e0" [[package]] name = "stable_deref_trait" diff --git a/Cargo.toml b/Cargo.toml index bb3189d..b035c6d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,8 +24,8 @@ wgpu = { version = "27.0.1", default-features = false, features = ["std", "parki pollster = "0.4.0" # rust-gpu -cargo-gpu = { git = "https://github.com/Rust-GPU/cargo-gpu", rev = "bf24eb6060e0c7b0013eceddd23b5d7cee68f4cc" } -spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "6fb875068d0d35b1a81ae89b73cf7a464f8c60f7" } +cargo-gpu = { git = "https://github.com/Rust-GPU/cargo-gpu", rev = "bb74342b90066ce8b7d50ba8e058df356a54acf4" } +spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "96fcc9dbe475921997050c25c02a62c7a12d48e0" } # other glam = { version = "0.30.9", default-features = false } diff --git a/generated/graphics/ash/cargo-gpu/Cargo.toml b/generated/graphics/ash/cargo-gpu/Cargo.toml index 338ec1f..c765d0b 100644 --- a/generated/graphics/ash/cargo-gpu/Cargo.toml +++ b/generated/graphics/ash/cargo-gpu/Cargo.toml @@ -21,8 +21,8 @@ ash = "0.38" ash-window = "0.13" # rust-gpu -cargo-gpu = { git = "https://github.com/Rust-GPU/cargo-gpu", rev = "bf24eb6060e0c7b0013eceddd23b5d7cee68f4cc" } -spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "6fb875068d0d35b1a81ae89b73cf7a464f8c60f7" } +cargo-gpu = { git = "https://github.com/Rust-GPU/cargo-gpu", rev = "bb74342b90066ce8b7d50ba8e058df356a54acf4" } +spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "96fcc9dbe475921997050c25c02a62c7a12d48e0" } # other glam = { version = "0.30.9", default-features = false } diff --git a/generated/graphics/ash/cargo-gpu/mygraphics-shaders/Cargo.toml b/generated/graphics/ash/cargo-gpu/mygraphics-shaders/Cargo.toml index 0860c8b..75db940 100644 --- a/generated/graphics/ash/cargo-gpu/mygraphics-shaders/Cargo.toml +++ b/generated/graphics/ash/cargo-gpu/mygraphics-shaders/Cargo.toml @@ -6,9 +6,6 @@ edition = "2024" [lints] workspace = true -[lib] -crate-type = ["lib", "dylib"] - [dependencies] spirv-std.workspace = true glam.workspace = true diff --git a/generated/graphics/ash/spirv-builder/Cargo.toml b/generated/graphics/ash/spirv-builder/Cargo.toml index 1944c29..e8d1af9 100644 --- a/generated/graphics/ash/spirv-builder/Cargo.toml +++ b/generated/graphics/ash/spirv-builder/Cargo.toml @@ -22,8 +22,8 @@ ash-window = "0.13" # rust-gpu # The version of the dependencies `spirv-builder` and `spirv-std` must match exactly! -spirv-builder = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "6fb875068d0d35b1a81ae89b73cf7a464f8c60f7" } -spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "6fb875068d0d35b1a81ae89b73cf7a464f8c60f7" } +spirv-builder = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "96fcc9dbe475921997050c25c02a62c7a12d48e0" } +spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "96fcc9dbe475921997050c25c02a62c7a12d48e0" } # other glam = { version = "0.30.9", default-features = false } diff --git a/generated/graphics/ash/spirv-builder/mygraphics-shaders/Cargo.toml b/generated/graphics/ash/spirv-builder/mygraphics-shaders/Cargo.toml index 0860c8b..75db940 100644 --- a/generated/graphics/ash/spirv-builder/mygraphics-shaders/Cargo.toml +++ b/generated/graphics/ash/spirv-builder/mygraphics-shaders/Cargo.toml @@ -6,9 +6,6 @@ edition = "2024" [lints] workspace = true -[lib] -crate-type = ["lib", "dylib"] - [dependencies] spirv-std.workspace = true glam.workspace = true diff --git a/generated/graphics/wgpu/cargo-gpu/Cargo.toml b/generated/graphics/wgpu/cargo-gpu/Cargo.toml index 49f0b10..f152195 100644 --- a/generated/graphics/wgpu/cargo-gpu/Cargo.toml +++ b/generated/graphics/wgpu/cargo-gpu/Cargo.toml @@ -21,8 +21,8 @@ wgpu = { version = "27.0.1", default-features = false, features = ["std", "parki pollster = "0.4.0" # rust-gpu -cargo-gpu = { git = "https://github.com/Rust-GPU/cargo-gpu", rev = "bf24eb6060e0c7b0013eceddd23b5d7cee68f4cc" } -spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "6fb875068d0d35b1a81ae89b73cf7a464f8c60f7" } +cargo-gpu = { git = "https://github.com/Rust-GPU/cargo-gpu", rev = "bb74342b90066ce8b7d50ba8e058df356a54acf4" } +spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "96fcc9dbe475921997050c25c02a62c7a12d48e0" } # other glam = { version = "0.30.9", default-features = false } diff --git a/generated/graphics/wgpu/cargo-gpu/mygraphics-shaders/Cargo.toml b/generated/graphics/wgpu/cargo-gpu/mygraphics-shaders/Cargo.toml index 0860c8b..75db940 100644 --- a/generated/graphics/wgpu/cargo-gpu/mygraphics-shaders/Cargo.toml +++ b/generated/graphics/wgpu/cargo-gpu/mygraphics-shaders/Cargo.toml @@ -6,9 +6,6 @@ edition = "2024" [lints] workspace = true -[lib] -crate-type = ["lib", "dylib"] - [dependencies] spirv-std.workspace = true glam.workspace = true diff --git a/generated/graphics/wgpu/spirv-builder/Cargo.toml b/generated/graphics/wgpu/spirv-builder/Cargo.toml index 5d9e4b9..2396e2c 100644 --- a/generated/graphics/wgpu/spirv-builder/Cargo.toml +++ b/generated/graphics/wgpu/spirv-builder/Cargo.toml @@ -22,8 +22,8 @@ pollster = "0.4.0" # rust-gpu # The version of the dependencies `spirv-builder` and `spirv-std` must match exactly! -spirv-builder = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "6fb875068d0d35b1a81ae89b73cf7a464f8c60f7" } -spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "6fb875068d0d35b1a81ae89b73cf7a464f8c60f7" } +spirv-builder = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "96fcc9dbe475921997050c25c02a62c7a12d48e0" } +spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "96fcc9dbe475921997050c25c02a62c7a12d48e0" } # other glam = { version = "0.30.9", default-features = false } diff --git a/generated/graphics/wgpu/spirv-builder/mygraphics-shaders/Cargo.toml b/generated/graphics/wgpu/spirv-builder/mygraphics-shaders/Cargo.toml index 0860c8b..75db940 100644 --- a/generated/graphics/wgpu/spirv-builder/mygraphics-shaders/Cargo.toml +++ b/generated/graphics/wgpu/spirv-builder/mygraphics-shaders/Cargo.toml @@ -6,9 +6,6 @@ edition = "2024" [lints] workspace = true -[lib] -crate-type = ["lib", "dylib"] - [dependencies] spirv-std.workspace = true glam.workspace = true diff --git a/graphics/Cargo.toml.liquid b/graphics/Cargo.toml.liquid index 5257139..8342047 100644 --- a/graphics/Cargo.toml.liquid +++ b/graphics/Cargo.toml.liquid @@ -29,12 +29,12 @@ pollster = "0.4.0" # rust-gpu {% if integration == "spirv-builder" -%} # The version of the dependencies `spirv-builder` and `spirv-std` must match exactly! -spirv-builder = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "6fb875068d0d35b1a81ae89b73cf7a464f8c60f7" } +spirv-builder = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "96fcc9dbe475921997050c25c02a62c7a12d48e0" } {% endif -%} {% if integration == "cargo-gpu" -%} -cargo-gpu = { git = "https://github.com/Rust-GPU/cargo-gpu", rev = "bf24eb6060e0c7b0013eceddd23b5d7cee68f4cc" } +cargo-gpu = { git = "https://github.com/Rust-GPU/cargo-gpu", rev = "bb74342b90066ce8b7d50ba8e058df356a54acf4" } {% endif -%} -spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "6fb875068d0d35b1a81ae89b73cf7a464f8c60f7" } +spirv-std = { git = "https://github.com/Rust-GPU/rust-gpu", rev = "96fcc9dbe475921997050c25c02a62c7a12d48e0" } # other glam = { version = "0.30.9", default-features = false } diff --git a/graphics/mygraphics-shaders/Cargo.toml b/graphics/mygraphics-shaders/Cargo.toml index 0860c8b..75db940 100644 --- a/graphics/mygraphics-shaders/Cargo.toml +++ b/graphics/mygraphics-shaders/Cargo.toml @@ -6,9 +6,6 @@ edition = "2024" [lints] workspace = true -[lib] -crate-type = ["lib", "dylib"] - [dependencies] spirv-std.workspace = true glam.workspace = true From b0e2ae63a408162e535deda6ee353e77f411cf66 Mon Sep 17 00:00:00 2001 From: firestar99 Date: Fri, 19 Dec 2025 14:50:37 +0100 Subject: [PATCH 3/5] ci: cleanup, remove unnecessary `cd xtask`, better step naming --- .github/workflows/ci.yaml | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f4fa22b..2348c89 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -49,18 +49,19 @@ jobs: # figure out native target triple while we're at it - name: install rust-toolchain run: echo "TARGET=$(rustc --print host-tuple)" >> "$GITHUB_ENV" - - name: xtask cargo fetch --locked - run: cd xtask && cargo fetch --locked --target $TARGET + - name: cargo fetch --locked + run: cargo fetch --locked --target $TARGET - name: xtask build - run: cd xtask && cargo build + run: cargo build -p xtask - name: xtask generate - # generate all variants, since `--clean` deletes `generated/`, not generating all of them will cause changes + # generate all variants + # If this fails, the files committed don't match what should have been generated. + # Since `--clean` deletes `generated/`, any additional files in git are marked as removed. run: cargo xtask generate --clean - name: check generated files are up-to-date run: | git add . git diff --cached - # if this fails, the files committed don't match what should have been generated git diff --quiet && git diff --cached --quiet # no --locked, templates need to generate their lockfile - name: cargo fetch @@ -104,16 +105,15 @@ jobs: run: echo "TARGET=$(rustc --print host-tuple)" >> "$GITHUB_ENV" - name: Install rustup components run: rustup component add rustfmt clippy - - name: xtask cargo fetch --locked - run: cd xtask && cargo fetch --locked --target $TARGET - - name: xtask build - run: cd xtask && cargo build + # no --target since lint needs all targets + - name: cargo fetch --locked + run: cargo fetch --locked - name: xtask test - run: cd xtask && cargo nextest run + run: cargo nextest run -p xtask - name: xtask fmt - run: cd xtask && cargo fmt --all -- --check + run: cargo fmt -p xtask --all -- --check - name: xtask clippy - run: cd xtask && cargo clippy --all-targets -- -D warnings + run: cargo clippy -p xtask --all-targets -- -D warnings lint: name: lint @@ -133,18 +133,19 @@ jobs: run: echo "TARGET=$(rustc --print host-tuple)" >> "$GITHUB_ENV" - name: Install rustup components run: rustup component add rustfmt clippy - - name: xtask cargo fetch --locked - run: cd xtask && cargo fetch --locked + # no --target since lint needs all targets + - name: cargo fetch --locked + run: cargo fetch --locked - name: xtask build - run: cd xtask && cargo build + run: cargo build -p xtask - name: xtask generate run: cargo xtask generate ${{ matrix.integration }} # no --locked, templates need to generate their lockfile - name: cargo fetch run: cargo xtask generate ${{ matrix.integration }} -x "cargo fetch" - - name: fmt + - name: cargo fmt run: cargo xtask generate ${{ matrix.integration }} -x "cargo fmt --all -- --check" - - name: clippy + - name: cargo clippy run: cargo xtask generate ${{ matrix.integration }} -x "cargo clippy --all-targets -- -D warnings" defaults: From cbed0de7c9a5f886fafc43488d9f393457846f07 Mon Sep 17 00:00:00 2001 From: firestar99 Date: Fri, 19 Dec 2025 14:56:37 +0100 Subject: [PATCH 4/5] ci: test template with cargo-gpu variant --- .github/workflows/ci.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2348c89..f0ca8ef 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -51,6 +51,12 @@ jobs: run: echo "TARGET=$(rustc --print host-tuple)" >> "$GITHUB_ENV" - name: cargo fetch --locked run: cargo fetch --locked --target $TARGET + - if: ${{ matrix.integration == 'cargo-gpu' }} + name: template build + run: cargo build --workspace --exclude xtask + - if: ${{ matrix.integration == 'cargo-gpu' }} + name: template test + run: cargo nextest run --workspace --exclude xtask --no-tests warn - name: xtask build run: cargo build -p xtask - name: xtask generate From d032a4d32b296916945eb4ca43f4198bd2d81eff Mon Sep 17 00:00:00 2001 From: firestar99 Date: Fri, 19 Dec 2025 14:58:07 +0100 Subject: [PATCH 5/5] ci: check fmt and clippy on template I'm concerned clippy don't skip the cargo-gpu install step, increasing lint ci times. But that's not our bottleneck either --- .github/workflows/ci.yaml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f0ca8ef..ead2b9b 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -82,7 +82,7 @@ jobs: # to update the branch protection rules when the test matrix changes test_success: runs-on: ubuntu-24.04 - needs: [test, xtask-test, lint] + needs: [test, template-test, lint] # Hack for buggy GitHub Actions behavior with skipped checks: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks#handling-skipped-but-required-checks if: ${{ always() }} steps: @@ -90,10 +90,10 @@ jobs: - run: | echo "Checking statuses..." [[ "${{ needs.test.result }}" == "success" ]] || exit 1 - [[ "${{ needs.xtask-test.result }}" == "success" ]] || exit 1 + [[ "${{ needs.template-test.result }}" == "success" ]] || exit 1 [[ "${{ needs.lint.result }}" == "success" ]] || exit 1 - xtask-test: + template-test: name: xtask test & lint runs-on: ubuntu-24.04 steps: @@ -116,10 +116,12 @@ jobs: run: cargo fetch --locked - name: xtask test run: cargo nextest run -p xtask - - name: xtask fmt - run: cargo fmt -p xtask --all -- --check + - name: fmt + run: cargo fmt --all -- --check - name: xtask clippy run: cargo clippy -p xtask --all-targets -- -D warnings + - name: template clippy + run: cargo clippy --workspace --exclude xtask --all-targets -- -D warnings lint: name: lint