From cba4f2fc7f283dd0b13bc138e6ad46d86f4767d1 Mon Sep 17 00:00:00 2001 From: firestar99 Date: Thu, 1 Oct 2026 18:08:25 +0200 Subject: [PATCH 1/2] BROKEN: use naga-wgsl target for wgpu --- .../ash/cargo-gpu/mygraphics/build.rs | 8 ++++--- .../ash/spirv-builder/mygraphics/build.rs | 8 ++++--- .../wgpu/cargo-gpu/mygraphics/build.rs | 8 ++++--- .../src/wgpu_renderer/render_pipeline.rs | 4 ++-- .../wgpu/spirv-builder/mygraphics/build.rs | 8 ++++--- .../src/wgpu_renderer/render_pipeline.rs | 4 ++-- graphics/mygraphics/build.rs | 24 +++++++++++++++---- graphics/mygraphics/build.rs.liquid | 21 ++++++++++++---- .../src/wgpu_renderer/render_pipeline.rs | 4 ++-- 9 files changed, 63 insertions(+), 26 deletions(-) diff --git a/generated/graphics/ash/cargo-gpu/mygraphics/build.rs b/generated/graphics/ash/cargo-gpu/mygraphics/build.rs index 64aa839..e6b41cf 100644 --- a/generated/graphics/ash/cargo-gpu/mygraphics/build.rs +++ b/generated/graphics/ash/cargo-gpu/mygraphics/build.rs @@ -9,16 +9,18 @@ pub fn main() -> anyhow::Result<()> { .copied() .collect::(); + let target = "spirv-unknown-vulkan1.3"; let install = Install::from_shader_crate(crate_path.clone()) .within_build_script() .run()?; - let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3"); + let mut builder = install.to_spirv_builder(crate_path, target); builder.build_script.defaults = 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(); - println!("cargo::rustc-env=SHADER_SPV_PATH={}", spv_path.display()); + let shader_path = compile_result.module.unwrap_single(); + + println!("cargo::rustc-env=SHADER_SPV_PATH={}", shader_path.display()); Ok(()) } diff --git a/generated/graphics/ash/spirv-builder/mygraphics/build.rs b/generated/graphics/ash/spirv-builder/mygraphics/build.rs index 6d3cb07..62bfb20 100644 --- a/generated/graphics/ash/spirv-builder/mygraphics/build.rs +++ b/generated/graphics/ash/spirv-builder/mygraphics/build.rs @@ -8,13 +8,15 @@ pub fn main() -> anyhow::Result<()> { .copied() .collect::(); - let mut builder = SpirvBuilder::new(crate_path, "spirv-unknown-vulkan1.3"); + let target = "spirv-unknown-vulkan1.3"; + let mut builder = SpirvBuilder::new(crate_path, target); builder.build_script.defaults = 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(); - println!("cargo::rustc-env=SHADER_SPV_PATH={}", spv_path.display()); + let shader_path = compile_result.module.unwrap_single(); + + println!("cargo::rustc-env=SHADER_SPV_PATH={}", shader_path.display()); Ok(()) } diff --git a/generated/graphics/wgpu/cargo-gpu/mygraphics/build.rs b/generated/graphics/wgpu/cargo-gpu/mygraphics/build.rs index 64aa839..2d24bb6 100644 --- a/generated/graphics/wgpu/cargo-gpu/mygraphics/build.rs +++ b/generated/graphics/wgpu/cargo-gpu/mygraphics/build.rs @@ -9,16 +9,18 @@ pub fn main() -> anyhow::Result<()> { .copied() .collect::(); + let target = "spirv-unknown-naga-wgsl"; let install = Install::from_shader_crate(crate_path.clone()) .within_build_script() .run()?; - let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3"); + let mut builder = install.to_spirv_builder(crate_path, target); builder.build_script.defaults = 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(); - println!("cargo::rustc-env=SHADER_SPV_PATH={}", spv_path.display()); + let shader_path = compile_result.module.unwrap_single(); + + println!("cargo::rustc-env=SHADER_WGSL_PATH={}", shader_path.display()); Ok(()) } 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 3083ff1..685b6f3 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 @@ -3,7 +3,7 @@ use mygraphics_shaders::ShaderConstants; use wgpu::{ ColorTargetState, ColorWrites, Device, FragmentState, FrontFace, MultisampleState, PipelineLayoutDescriptor, PolygonMode, PrimitiveState, PrimitiveTopology, RenderPass, - RenderPipeline, RenderPipelineDescriptor, TextureFormat, VertexState, include_spirv, + RenderPipeline, RenderPipelineDescriptor, TextureFormat, VertexState, include_wgsl, }; #[derive(Debug, Clone)] @@ -17,7 +17,7 @@ impl MyRenderPipeline { global_bind_group_layout: &GlobalBindGroupLayout, out_format: TextureFormat, ) -> anyhow::Result { - let module = device.create_shader_module(include_spirv!(env!("SHADER_SPV_PATH"))); + let module = device.create_shader_module(include_wgsl!(env!("SHADER_WGSL_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 6d3cb07..9f4fded 100644 --- a/generated/graphics/wgpu/spirv-builder/mygraphics/build.rs +++ b/generated/graphics/wgpu/spirv-builder/mygraphics/build.rs @@ -8,13 +8,15 @@ pub fn main() -> anyhow::Result<()> { .copied() .collect::(); - let mut builder = SpirvBuilder::new(crate_path, "spirv-unknown-vulkan1.3"); + let target = "spirv-unknown-naga-wgsl"; + let mut builder = SpirvBuilder::new(crate_path, target); builder.build_script.defaults = 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(); - println!("cargo::rustc-env=SHADER_SPV_PATH={}", spv_path.display()); + let shader_path = compile_result.module.unwrap_single(); + + println!("cargo::rustc-env=SHADER_WGSL_PATH={}", shader_path.display()); Ok(()) } 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 3083ff1..685b6f3 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 @@ -3,7 +3,7 @@ use mygraphics_shaders::ShaderConstants; use wgpu::{ ColorTargetState, ColorWrites, Device, FragmentState, FrontFace, MultisampleState, PipelineLayoutDescriptor, PolygonMode, PrimitiveState, PrimitiveTopology, RenderPass, - RenderPipeline, RenderPipelineDescriptor, TextureFormat, VertexState, include_spirv, + RenderPipeline, RenderPipelineDescriptor, TextureFormat, VertexState, include_wgsl, }; #[derive(Debug, Clone)] @@ -17,7 +17,7 @@ impl MyRenderPipeline { global_bind_group_layout: &GlobalBindGroupLayout, out_format: TextureFormat, ) -> anyhow::Result { - let module = device.create_shader_module(include_spirv!(env!("SHADER_SPV_PATH"))); + let module = device.create_shader_module(include_wgsl!(env!("SHADER_WGSL_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 64aa839..86feef4 100644 --- a/graphics/mygraphics/build.rs +++ b/graphics/mygraphics/build.rs @@ -12,13 +12,29 @@ pub fn main() -> anyhow::Result<()> { let install = Install::from_shader_crate(crate_path.clone()) .within_build_script() .run()?; - let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3"); + let mut builder = install.to_spirv_builder(&crate_path, ""); builder.build_script.defaults = 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(); - println!("cargo::rustc-env=SHADER_SPV_PATH={}", spv_path.display()); + // SPIR-V + { + builder.target = Some("spirv-unknown-vulkan1.3".to_owned()); + let compile_result = builder.build()?; + println!( + "cargo::rustc-env=SHADER_SPV_PATH={}", + compile_result.module.unwrap_single().display() + ); + } + + // wgsl + { + builder.target = Some("spirv-unknown-naga-wgsl".to_owned()); + let compile_result = builder.build()?; + println!( + "cargo::rustc-env=SHADER_WGSL_PATH={}", + compile_result.module.unwrap_single().display() + ); + } Ok(()) } diff --git a/graphics/mygraphics/build.rs.liquid b/graphics/mygraphics/build.rs.liquid index 16d4181..398de93 100644 --- a/graphics/mygraphics/build.rs.liquid +++ b/graphics/mygraphics/build.rs.liquid @@ -14,21 +14,34 @@ pub fn main() -> anyhow::Result<()> { .copied() .collect::(); + {% if api == "ash" -%} + let target = "spirv-unknown-vulkan1.3"; + {% endif -%} + {% if api == "wgpu" -%} + let target = "spirv-unknown-naga-wgsl"; + {% endif -%} + {% if integration == "spirv-builder" -%} - let mut builder = SpirvBuilder::new(crate_path, "spirv-unknown-vulkan1.3"); + let mut builder = SpirvBuilder::new(crate_path, target); {% endif -%} {% if integration == "cargo-gpu" -%} let install = Install::from_shader_crate(crate_path.clone()) .within_build_script() .run()?; - let mut builder = install.to_spirv_builder(crate_path, "spirv-unknown-vulkan1.3"); + let mut builder = install.to_spirv_builder(crate_path, target); {% endif -%} builder.build_script.defaults = 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(); - println!("cargo::rustc-env=SHADER_SPV_PATH={}", spv_path.display()); + let shader_path = compile_result.module.unwrap_single(); + + {% if api == "ash" -%} + println!("cargo::rustc-env=SHADER_SPV_PATH={}", shader_path.display()); + {% endif -%} + {% if api == "wgpu" -%} + println!("cargo::rustc-env=SHADER_WGSL_PATH={}", shader_path.display()); + {% endif -%} Ok(()) } diff --git a/graphics/mygraphics/src/wgpu_renderer/render_pipeline.rs b/graphics/mygraphics/src/wgpu_renderer/render_pipeline.rs index 3083ff1..685b6f3 100644 --- a/graphics/mygraphics/src/wgpu_renderer/render_pipeline.rs +++ b/graphics/mygraphics/src/wgpu_renderer/render_pipeline.rs @@ -3,7 +3,7 @@ use mygraphics_shaders::ShaderConstants; use wgpu::{ ColorTargetState, ColorWrites, Device, FragmentState, FrontFace, MultisampleState, PipelineLayoutDescriptor, PolygonMode, PrimitiveState, PrimitiveTopology, RenderPass, - RenderPipeline, RenderPipelineDescriptor, TextureFormat, VertexState, include_spirv, + RenderPipeline, RenderPipelineDescriptor, TextureFormat, VertexState, include_wgsl, }; #[derive(Debug, Clone)] @@ -17,7 +17,7 @@ impl MyRenderPipeline { global_bind_group_layout: &GlobalBindGroupLayout, out_format: TextureFormat, ) -> anyhow::Result { - let module = device.create_shader_module(include_spirv!(env!("SHADER_SPV_PATH"))); + let module = device.create_shader_module(include_wgsl!(env!("SHADER_WGSL_PATH"))); let layout = device.create_pipeline_layout(&PipelineLayoutDescriptor { label: Some("MyRenderPipeline layout"), From 727009083a9717f4b27d72b62b3401aaf7b7fea5 Mon Sep 17 00:00:00 2001 From: firestar99 Date: Fri, 2 Oct 2026 13:09:40 +0200 Subject: [PATCH 2/2] NOMERGE: update to naga-30 branch --- Cargo.lock | 18 ++++++------------ Cargo.toml | 4 ++-- generated/graphics/ash/cargo-gpu/Cargo.toml | 4 ++-- .../graphics/ash/spirv-builder/Cargo.toml | 4 ++-- generated/graphics/wgpu/cargo-gpu/Cargo.toml | 4 ++-- .../graphics/wgpu/spirv-builder/Cargo.toml | 4 ++-- graphics/Cargo.toml.liquid | 6 +++--- 7 files changed, 19 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2bd344f..163b379 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -406,8 +406,7 @@ dependencies = [ [[package]] name = "cargo-gpu-install" version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668b4bd1b59810c4f907eeb36bb0f0a450c824219b2e599b9b8ef2b3ae056e94" +source = "git+https://github.com/Rust-GPU/rust-gpu.git?rev=42d2720c67c3c643bf90a6faa8380bd6c6b5fb33#42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" dependencies = [ "anyhow", "cargo_metadata", @@ -2969,8 +2968,7 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc_codegen_spirv-types" version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d703f5624720c5b6012f4b88d6e6766f43ed50d80144eaffd6791c3270754cdc" +source = "git+https://github.com/Rust-GPU/rust-gpu.git?rev=42d2720c67c3c643bf90a6faa8380bd6c6b5fb33#42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" dependencies = [ "rspirv", "semver", @@ -3276,8 +3274,7 @@ dependencies = [ [[package]] name = "spirv-builder" version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57fa119866f0311546e5309b18770b72141c25d185452c11a812be2c7b9d84e9" +source = "git+https://github.com/Rust-GPU/rust-gpu.git?rev=42d2720c67c3c643bf90a6faa8380bd6c6b5fb33#42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" dependencies = [ "cargo_metadata", "log", @@ -3293,8 +3290,7 @@ dependencies = [ [[package]] name = "spirv-std" version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d98471765e294d4dd6289350e3633b5c5ba57bb382c3287d83e69ee737179e0" +source = "git+https://github.com/Rust-GPU/rust-gpu.git?rev=42d2720c67c3c643bf90a6faa8380bd6c6b5fb33#42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" dependencies = [ "bitflags 2.13.2", "glam", @@ -3307,8 +3303,7 @@ dependencies = [ [[package]] name = "spirv-std-macros" version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13a6a0d063d4dd003e43818135b7aa4a30c41c48b5d0efe2cac02220448d4f19" +source = "git+https://github.com/Rust-GPU/rust-gpu.git?rev=42d2720c67c3c643bf90a6faa8380bd6c6b5fb33#42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" dependencies = [ "proc-macro2", "quote", @@ -3319,8 +3314,7 @@ dependencies = [ [[package]] name = "spirv-std-types" version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655632248eaaa205cea4656bc73c8285cbd8109fc784010b24ea6bd0bab79ac1" +source = "git+https://github.com/Rust-GPU/rust-gpu.git?rev=42d2720c67c3c643bf90a6faa8380bd6c6b5fb33#42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" [[package]] name = "stable_deref_trait" diff --git a/Cargo.toml b/Cargo.toml index 7cdea26..8d92fc3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,8 +24,8 @@ wgpu = { version = "30.0.1", default-features = false, features = ["std", "parki pollster = "1.0.1" # rust-gpu -cargo-gpu-install = { version = "0.10.0" } -spirv-std = { version = "0.10.0" } +cargo-gpu-install = { version = "0.10.0", git = "https://github.com/Rust-GPU/rust-gpu.git", rev = "42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" } +spirv-std = { version = "0.10.0", git = "https://github.com/Rust-GPU/rust-gpu.git", rev = "42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" } # math libraries glam = { version = "0.33.11", default-features = false, features = ["bytemuck"] } diff --git a/generated/graphics/ash/cargo-gpu/Cargo.toml b/generated/graphics/ash/cargo-gpu/Cargo.toml index 75dbe8c..fd7fb21 100644 --- a/generated/graphics/ash/cargo-gpu/Cargo.toml +++ b/generated/graphics/ash/cargo-gpu/Cargo.toml @@ -25,8 +25,8 @@ gpu-allocator = { version = "0.28.0", default-features = false, features = ["std # rust-gpu # While `cargo-gpu` is backwards compatible with older rust-gpu versions, easiest is to just match the versions exactly. -cargo-gpu-install = { version = "0.10.0" } -spirv-std = { version = "0.10.0" } +cargo-gpu-install = { version = "0.10.0", git = "https://github.com/Rust-GPU/rust-gpu.git", rev = "42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" } +spirv-std = { version = "0.10.0", git = "https://github.com/Rust-GPU/rust-gpu.git", rev = "42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" } # math libraries glam = { version = "0.33.11", default-features = false, features = ["bytemuck"] } diff --git a/generated/graphics/ash/spirv-builder/Cargo.toml b/generated/graphics/ash/spirv-builder/Cargo.toml index 6372d1f..ed3a827 100644 --- a/generated/graphics/ash/spirv-builder/Cargo.toml +++ b/generated/graphics/ash/spirv-builder/Cargo.toml @@ -25,8 +25,8 @@ gpu-allocator = { version = "0.28.0", default-features = false, features = ["std # rust-gpu # The version of the dependencies `spirv-builder` and `spirv-std` must match exactly! -spirv-builder = { version = "0.10.0" } -spirv-std = { version = "0.10.0" } +spirv-builder = { version = "0.10.0", git = "https://github.com/Rust-GPU/rust-gpu.git", rev = "42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" } +spirv-std = { version = "0.10.0", git = "https://github.com/Rust-GPU/rust-gpu.git", rev = "42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" } # math libraries glam = { version = "0.33.11", default-features = false, features = ["bytemuck"] } diff --git a/generated/graphics/wgpu/cargo-gpu/Cargo.toml b/generated/graphics/wgpu/cargo-gpu/Cargo.toml index 23493ae..1abdc23 100644 --- a/generated/graphics/wgpu/cargo-gpu/Cargo.toml +++ b/generated/graphics/wgpu/cargo-gpu/Cargo.toml @@ -24,8 +24,8 @@ pollster = "1.0.1" # rust-gpu # While `cargo-gpu` is backwards compatible with older rust-gpu versions, easiest is to just match the versions exactly. -cargo-gpu-install = { version = "0.10.0" } -spirv-std = { version = "0.10.0" } +cargo-gpu-install = { version = "0.10.0", git = "https://github.com/Rust-GPU/rust-gpu.git", rev = "42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" } +spirv-std = { version = "0.10.0", git = "https://github.com/Rust-GPU/rust-gpu.git", rev = "42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" } # math libraries glam = { version = "0.33.11", default-features = false, features = ["bytemuck"] } diff --git a/generated/graphics/wgpu/spirv-builder/Cargo.toml b/generated/graphics/wgpu/spirv-builder/Cargo.toml index ce08b9f..b75e41a 100644 --- a/generated/graphics/wgpu/spirv-builder/Cargo.toml +++ b/generated/graphics/wgpu/spirv-builder/Cargo.toml @@ -24,8 +24,8 @@ pollster = "1.0.1" # rust-gpu # The version of the dependencies `spirv-builder` and `spirv-std` must match exactly! -spirv-builder = { version = "0.10.0" } -spirv-std = { version = "0.10.0" } +spirv-builder = { version = "0.10.0", git = "https://github.com/Rust-GPU/rust-gpu.git", rev = "42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" } +spirv-std = { version = "0.10.0", git = "https://github.com/Rust-GPU/rust-gpu.git", rev = "42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" } # math libraries glam = { version = "0.33.11", default-features = false, features = ["bytemuck"] } diff --git a/graphics/Cargo.toml.liquid b/graphics/Cargo.toml.liquid index 3901333..99f7322 100644 --- a/graphics/Cargo.toml.liquid +++ b/graphics/Cargo.toml.liquid @@ -32,13 +32,13 @@ pollster = "1.0.1" # rust-gpu {% if integration == "spirv-builder" -%} # The version of the dependencies `spirv-builder` and `spirv-std` must match exactly! -spirv-builder = { version = "0.10.0" } +spirv-builder = { version = "0.10.0", git = "https://github.com/Rust-GPU/rust-gpu.git", rev = "42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" } {% endif -%} {% if integration == "cargo-gpu" -%} # While `cargo-gpu` is backwards compatible with older rust-gpu versions, easiest is to just match the versions exactly. -cargo-gpu-install = { version = "0.10.0" } +cargo-gpu-install = { version = "0.10.0", git = "https://github.com/Rust-GPU/rust-gpu.git", rev = "42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" } {% endif -%} -spirv-std = { version = "0.10.0" } +spirv-std = { version = "0.10.0", git = "https://github.com/Rust-GPU/rust-gpu.git", rev = "42d2720c67c3c643bf90a6faa8380bd6c6b5fb33" } # math libraries glam = { version = "0.33.11", default-features = false, features = ["bytemuck"] }