From 4be9bbaf9d21a65fdb060f35fe86936fcd7bd034 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Tue, 1 Jul 2025 14:36:55 +0200 Subject: [PATCH 1/7] target enum: change `SpirvBuilder::new` to accept target as `SpirvTargetEnv` instead of silently failing to parse --- .../rustc_codegen_spirv-target-specs/src/lib.rs | 16 ---------------- crates/spirv-builder/src/lib.rs | 8 +++----- examples/multibuilder/src/main.rs | 4 ++-- examples/runners/ash/src/main.rs | 4 ++-- examples/runners/wgpu/builder/src/main.rs | 4 ++-- examples/runners/wgpu/src/lib.rs | 3 ++- tests/difftests/lib/src/scaffold/compute/wgpu.rs | 4 ++-- 7 files changed, 13 insertions(+), 30 deletions(-) diff --git a/crates/rustc_codegen_spirv-target-specs/src/lib.rs b/crates/rustc_codegen_spirv-target-specs/src/lib.rs index 667eee1386..4f67defa54 100644 --- a/crates/rustc_codegen_spirv-target-specs/src/lib.rs +++ b/crates/rustc_codegen_spirv-target-specs/src/lib.rs @@ -109,22 +109,6 @@ impl SpirvTargetEnv { } } -pub trait IntoSpirvTarget: Sized { - fn to_spirv_target_env(&self) -> Result; -} - -impl IntoSpirvTarget for SpirvTargetEnv { - fn to_spirv_target_env(&self) -> Result { - Ok(*self) - } -} - -impl IntoSpirvTarget for &str { - fn to_spirv_target_env(&self) -> Result { - SpirvTargetEnv::parse_triple(self) - } -} - #[cfg(test)] mod tests { use super::*; diff --git a/crates/spirv-builder/src/lib.rs b/crates/spirv-builder/src/lib.rs index 08bbdbf9e9..91c2fbcbca 100644 --- a/crates/spirv-builder/src/lib.rs +++ b/crates/spirv-builder/src/lib.rs @@ -90,9 +90,7 @@ use std::path::{Path, PathBuf}; use std::process::{Command, Stdio}; use thiserror::Error; -pub use rustc_codegen_spirv_target_specs::{ - IntoSpirvTarget, SpirvTargetEnv, SpirvTargetParseError, -}; +pub use rustc_codegen_spirv_target_specs::{SpirvTargetEnv, SpirvTargetParseError}; pub use rustc_codegen_spirv_types::*; #[cfg(feature = "include-target-specs")] @@ -492,10 +490,10 @@ impl Default for SpirvBuilder { } impl SpirvBuilder { - pub fn new(path_to_crate: impl AsRef, target: impl IntoSpirvTarget) -> Self { + pub fn new(path_to_crate: impl AsRef, target: SpirvTargetEnv) -> Self { Self { path_to_crate: Some(path_to_crate.as_ref().to_owned()), - target: target.to_spirv_target_env().ok(), + target: Some(target), ..SpirvBuilder::default() } } diff --git a/examples/multibuilder/src/main.rs b/examples/multibuilder/src/main.rs index e694b72ee3..1eebfc5317 100644 --- a/examples/multibuilder/src/main.rs +++ b/examples/multibuilder/src/main.rs @@ -1,9 +1,9 @@ -use spirv_builder::{MetadataPrintout, SpirvBuilder}; +use spirv_builder::{MetadataPrintout, SpirvBuilder, SpirvTargetEnv}; fn main() { let result = SpirvBuilder::new( concat!(env!("CARGO_MANIFEST_DIR"), "/../shaders/sky-shader"), - "spirv-unknown-spv1.3", + SpirvTargetEnv::Vulkan_1_3, ) .print_metadata(MetadataPrintout::DependencyOnly) .multimodule(true) diff --git a/examples/runners/ash/src/main.rs b/examples/runners/ash/src/main.rs index 7a006574ca..9beb97b4c1 100644 --- a/examples/runners/ash/src/main.rs +++ b/examples/runners/ash/src/main.rs @@ -91,7 +91,7 @@ use std::{ use clap::Parser; -use spirv_builder::{MetadataPrintout, SpirvBuilder}; +use spirv_builder::{MetadataPrintout, SpirvBuilder, SpirvTargetEnv}; use shared::ShaderConstants; @@ -247,7 +247,7 @@ pub fn compile_shaders() -> Vec { SpirvBuilder::new( concat!(env!("CARGO_MANIFEST_DIR"), "/../../shaders/sky-shader"), - "spirv-unknown-vulkan1.1", + SpirvTargetEnv::Vulkan_1_1, ) .print_metadata(MetadataPrintout::None) .shader_panic_strategy(spirv_builder::ShaderPanicStrategy::DebugPrintfThenExit { diff --git a/examples/runners/wgpu/builder/src/main.rs b/examples/runners/wgpu/builder/src/main.rs index 7fb9735381..787befbc3e 100644 --- a/examples/runners/wgpu/builder/src/main.rs +++ b/examples/runners/wgpu/builder/src/main.rs @@ -1,4 +1,4 @@ -use spirv_builder::{MetadataPrintout, SpirvBuilder}; +use spirv_builder::{MetadataPrintout, SpirvBuilder, SpirvTargetEnv}; use std::env; use std::error::Error; use std::fs; @@ -7,7 +7,7 @@ use std::path::Path; fn build_shader(path_to_crate: &str, codegen_names: bool) -> Result<(), Box> { let builder_dir = &Path::new(env!("CARGO_MANIFEST_DIR")); let path_to_crate = builder_dir.join(path_to_crate); - let result = SpirvBuilder::new(path_to_crate, "spirv-unknown-vulkan1.1") + let result = SpirvBuilder::new(path_to_crate, SpirvTargetEnv::Vulkan_1_1) .print_metadata(MetadataPrintout::Full) .build()?; if codegen_names { diff --git a/examples/runners/wgpu/src/lib.rs b/examples/runners/wgpu/src/lib.rs index 34daf8d6f6..f40290e3ba 100644 --- a/examples/runners/wgpu/src/lib.rs +++ b/examples/runners/wgpu/src/lib.rs @@ -73,6 +73,7 @@ use clap::Parser; use clap::ValueEnum; +use spirv_builder::SpirvTargetEnv; use std::borrow::Cow; use strum::{Display, EnumString}; @@ -152,7 +153,7 @@ fn maybe_watch( let has_debug_printf = options.force_spirv_passthru; - let builder = SpirvBuilder::new(crate_path, "spirv-unknown-vulkan1.1") + let builder = SpirvBuilder::new(crate_path, SpirvTargetEnv::Vulkan_1_1) .print_metadata(MetadataPrintout::None) .shader_panic_strategy(if has_debug_printf { spirv_builder::ShaderPanicStrategy::DebugPrintfThenExit { diff --git a/tests/difftests/lib/src/scaffold/compute/wgpu.rs b/tests/difftests/lib/src/scaffold/compute/wgpu.rs index 08c32f0937..6120c276d9 100644 --- a/tests/difftests/lib/src/scaffold/compute/wgpu.rs +++ b/tests/difftests/lib/src/scaffold/compute/wgpu.rs @@ -2,7 +2,7 @@ use crate::config::Config; use anyhow::Context; use bytemuck::Pod; use futures::executor::block_on; -use spirv_builder::{ModuleResult, SpirvBuilder}; +use spirv_builder::{ModuleResult, SpirvBuilder, SpirvTargetEnv}; use std::{ borrow::Cow, env, @@ -36,7 +36,7 @@ impl ComputeShader for RustComputeShader { &self, device: &wgpu::Device, ) -> anyhow::Result<(wgpu::ShaderModule, Option)> { - let builder = SpirvBuilder::new(&self.path, "spirv-unknown-vulkan1.1") + let builder = SpirvBuilder::new(&self.path, SpirvTargetEnv::Vulkan_1_2) .print_metadata(spirv_builder::MetadataPrintout::None) .release(true) .multimodule(false) From 6bd4a1b1a390be8b71c67dae414c693533a2c2a7 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Tue, 1 Jul 2025 16:46:10 +0200 Subject: [PATCH 2/7] target enum: fixup usages in this repo --- crates/spirv-builder/README.md | 4 ++-- examples/runners/wgpu/src/lib.rs | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/crates/spirv-builder/README.md b/crates/spirv-builder/README.md index 69711c6dab..aba4640f96 100644 --- a/crates/spirv-builder/README.md +++ b/crates/spirv-builder/README.md @@ -11,10 +11,10 @@ It takes care of pulling in the `SPIR-V` backend for Rust, `rustc_codegen_spirv` ## Example ```rust,no_run -use spirv_builder::{MetadataPrintout, SpirvBuilder}; +use spirv_builder::{MetadataPrintout, SpirvBuilder, SpirvTargetEnv}; fn main() -> Result<(), Box> { - SpirvBuilder::new("my_shaders", "spirv-unknown-vulkan1.1") + SpirvBuilder::new("my_shaders", SpirvTargetEnv::Vulkan_1_1) .print_metadata(MetadataPrintout::Full) .build()?; Ok(()) diff --git a/examples/runners/wgpu/src/lib.rs b/examples/runners/wgpu/src/lib.rs index f40290e3ba..7a07a723d0 100644 --- a/examples/runners/wgpu/src/lib.rs +++ b/examples/runners/wgpu/src/lib.rs @@ -73,7 +73,6 @@ use clap::Parser; use clap::ValueEnum; -use spirv_builder::SpirvTargetEnv; use std::borrow::Cow; use strum::{Display, EnumString}; @@ -129,7 +128,7 @@ fn maybe_watch( ) -> CompiledShaderModules { #[cfg(not(any(target_os = "android", target_arch = "wasm32")))] { - use spirv_builder::{CompileResult, MetadataPrintout, SpirvBuilder}; + use spirv_builder::{CompileResult, MetadataPrintout, SpirvBuilder, SpirvTargetEnv}; use std::path::PathBuf; // Hack: spirv_builder builds into a custom directory if running under cargo, to not // deadlock, and the default target directory if not. However, packages like `proc-macro2` From 4d8cce5a99fd77259f706ba1c1d15456c2e2b1e2 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Thu, 12 Jun 2025 19:23:26 +0200 Subject: [PATCH 3/7] wgsl: add `spirv-unknown-wgsl` target, transpiling with naga --- Cargo.lock | 1 + .../src/include_str.rs | 3 + .../src/lib.rs | 2 + .../target-specs/spirv-unknown-wgsl.json | 26 +++++++ crates/rustc_codegen_spirv/Cargo.toml | 1 + crates/rustc_codegen_spirv/src/lib.rs | 1 + crates/rustc_codegen_spirv/src/link.rs | 5 ++ .../rustc_codegen_spirv/src/naga_transpile.rs | 75 +++++++++++++++++++ crates/rustc_codegen_spirv/src/target.rs | 4 + 9 files changed, 118 insertions(+) create mode 100644 crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-wgsl.json create mode 100644 crates/rustc_codegen_spirv/src/naga_transpile.rs diff --git a/Cargo.lock b/Cargo.lock index 985d14bf2b..c7469e33aa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2433,6 +2433,7 @@ dependencies = [ "lazy_static", "libc", "log", + "naga", "object", "pretty_assertions", "regex", diff --git a/crates/rustc_codegen_spirv-target-specs/src/include_str.rs b/crates/rustc_codegen_spirv-target-specs/src/include_str.rs index 93941e8da4..ab6b7a4415 100644 --- a/crates/rustc_codegen_spirv-target-specs/src/include_str.rs +++ b/crates/rustc_codegen_spirv-target-specs/src/include_str.rs @@ -59,6 +59,9 @@ impl SpirvTargetEnv { SpirvTargetEnv::Vulkan_1_4 => { include_str!("../target-specs/spirv-unknown-vulkan1.4.json") } + SpirvTargetEnv::Wgsl => { + include_str!("../target-specs/spirv-unknown-wgsl.json") + } } } } diff --git a/crates/rustc_codegen_spirv-target-specs/src/lib.rs b/crates/rustc_codegen_spirv-target-specs/src/lib.rs index 4f67defa54..40e342ed4f 100644 --- a/crates/rustc_codegen_spirv-target-specs/src/lib.rs +++ b/crates/rustc_codegen_spirv-target-specs/src/lib.rs @@ -58,6 +58,8 @@ pub enum SpirvTargetEnv { Vulkan_1_3, #[strum(to_string = "vulkan1.4")] Vulkan_1_4, + #[strum(to_string = "wgsl")] + Wgsl, } #[derive(Error)] diff --git a/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-wgsl.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-wgsl.json new file mode 100644 index 0000000000..602d077026 --- /dev/null +++ b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-wgsl.json @@ -0,0 +1,26 @@ +{ + "allows-weak-linkage": false, + "arch": "spirv", + "crt-objects-fallback": "false", + "crt-static-allows-dylibs": true, + "data-layout": "e-m:e-p:32:32:32-i64:64-n8:16:32:64", + "dll-prefix": "", + "dll-suffix": ".spv.json", + "dynamic-linking": true, + "emit-debug-gdb-scripts": false, + "env": "wgsl", + "linker-flavor": "unix", + "linker-is-gnu": false, + "llvm-target": "spirv-unknown-wgsl", + "main-needs-argc-argv": false, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "os": "unknown", + "panic-strategy": "abort", + "simd-types-indirect": false, + "target-pointer-width": "32" +} diff --git a/crates/rustc_codegen_spirv/Cargo.toml b/crates/rustc_codegen_spirv/Cargo.toml index 5af8dbea20..1e08fe839c 100644 --- a/crates/rustc_codegen_spirv/Cargo.toml +++ b/crates/rustc_codegen_spirv/Cargo.toml @@ -60,6 +60,7 @@ itertools = "0.10.5" tracing.workspace = true tracing-subscriber.workspace = true tracing-tree = "0.3.0" +naga = { version = "25.0.1", features = ["spv-in", "wgsl-out"] } # required for cargo gpu to resolve the needed target specs rustc_codegen_spirv-target-specs.workspace = true diff --git a/crates/rustc_codegen_spirv/src/lib.rs b/crates/rustc_codegen_spirv/src/lib.rs index 82d8e8e7a2..2422bc42a8 100644 --- a/crates/rustc_codegen_spirv/src/lib.rs +++ b/crates/rustc_codegen_spirv/src/lib.rs @@ -129,6 +129,7 @@ mod custom_decorations; mod custom_insts; mod link; mod linker; +mod naga_transpile; mod spirv_type; mod spirv_type_constraints; mod symbols; diff --git a/crates/rustc_codegen_spirv/src/link.rs b/crates/rustc_codegen_spirv/src/link.rs index 4c702b7c78..21771f9041 100644 --- a/crates/rustc_codegen_spirv/src/link.rs +++ b/crates/rustc_codegen_spirv/src/link.rs @@ -2,6 +2,7 @@ use crate::maybe_pqp_cg_ssa as rustc_codegen_ssa; use crate::codegen_cx::{CodegenArgs, SpirvMetadata}; +use crate::naga_transpile::should_transpile; use crate::{SpirvCodegenBackend, SpirvModuleBuffer, SpirvThinBuffer, linker}; use ar::{Archive, GnuBuilder, Header}; use rspirv::binary::Assemble; @@ -311,6 +312,10 @@ fn post_link_single_module( drop(save_modules_timer); } + + if let Some(transpile) = should_transpile(sess) { + transpile(sess, cg_args, &spv_binary, out_filename).ok(); + } } fn do_spirv_opt( diff --git a/crates/rustc_codegen_spirv/src/naga_transpile.rs b/crates/rustc_codegen_spirv/src/naga_transpile.rs new file mode 100644 index 0000000000..0acb2b5bce --- /dev/null +++ b/crates/rustc_codegen_spirv/src/naga_transpile.rs @@ -0,0 +1,75 @@ +use crate::codegen_cx::CodegenArgs; +use rustc_codegen_spirv_target_specs::SpirvTargetEnv; +use rustc_session::Session; +use rustc_span::ErrorGuaranteed; +use std::path::Path; + +pub type NagaTranspile = fn( + sess: &Session, + cg_args: &CodegenArgs, + spv_binary: &[u32], + out_filename: &Path, +) -> Result<(), ErrorGuaranteed>; + +pub fn should_transpile(sess: &Session) -> Option { + let target = SpirvTargetEnv::parse_triple(sess.opts.target_triple.tuple()) + .expect("parsing should fail earlier"); + match target { + SpirvTargetEnv::Wgsl => Some(transpile::wgsl_transpile), + _ => None, + } +} + +mod transpile { + use crate::codegen_cx::CodegenArgs; + use naga::error::ShaderError; + use naga::valid::Capabilities; + use rustc_session::Session; + use rustc_span::ErrorGuaranteed; + use std::path::Path; + + pub fn wgsl_transpile( + sess: &Session, + _cg_args: &CodegenArgs, + spv_binary: &[u32], + out_filename: &Path, + ) -> Result<(), ErrorGuaranteed> { + // these should be params via spirv-builder + let opts = naga::front::spv::Options::default(); + let capabilities = Capabilities::default(); + let writer_flags = naga::back::wgsl::WriterFlags::empty(); + + let module = naga::front::spv::parse_u8_slice(bytemuck::cast_slice(spv_binary), &opts) + .map_err(|err| { + sess.dcx() + .err(format!("Naga failed to parse spv: \n{}", ShaderError { + source: String::new(), + label: None, + inner: Box::new(err), + })) + })?; + let mut validator = + naga::valid::Validator::new(naga::valid::ValidationFlags::default(), capabilities); + let info = validator.validate(&module).map_err(|err| { + sess.dcx() + .err(format!("Naga validation failed: \n{}", ShaderError { + source: String::new(), + label: None, + inner: Box::new(err), + })) + })?; + + let wgsl_dst = out_filename.with_extension("wgsl"); + let wgsl = naga::back::wgsl::write_string(&module, &info, writer_flags).map_err(|err| { + sess.dcx() + .err(format!("Naga failed to write wgsl : \n{}", err)) + })?; + + std::fs::write(&wgsl_dst, wgsl).map_err(|err| { + sess.dcx() + .err(format!("failed to write wgsl to file: {}", err)) + })?; + + Ok(()) + } +} diff --git a/crates/rustc_codegen_spirv/src/target.rs b/crates/rustc_codegen_spirv/src/target.rs index c9912877da..9ea4822a04 100644 --- a/crates/rustc_codegen_spirv/src/target.rs +++ b/crates/rustc_codegen_spirv/src/target.rs @@ -33,6 +33,8 @@ impl TargetsExt for SpirvTargetEnv { | SpirvTargetEnv::Vulkan_1_2 | SpirvTargetEnv::Vulkan_1_3 | SpirvTargetEnv::Vulkan_1_4 => MemoryModel::Vulkan, + + SpirvTargetEnv::Wgsl => MemoryModel::Vulkan, } } @@ -57,6 +59,8 @@ impl TargetsExt for SpirvTargetEnv { SpirvTargetEnv::Vulkan_1_2 => spirv_tools::TargetEnv::Vulkan_1_2, SpirvTargetEnv::Vulkan_1_3 => spirv_tools::TargetEnv::Vulkan_1_3, SpirvTargetEnv::Vulkan_1_4 => spirv_tools::TargetEnv::Vulkan_1_4, + + SpirvTargetEnv::Wgsl => spirv_tools::TargetEnv::Vulkan_1_2, } } From e40f94437272addd5e039fc3ebbd1781b2e6e98f Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Mon, 16 Jun 2025 10:03:25 +0200 Subject: [PATCH 4/7] wgsl: hide naga behind feature --- crates/rustc_codegen_spirv/Cargo.toml | 3 ++- crates/rustc_codegen_spirv/src/link.rs | 6 ++++-- .../rustc_codegen_spirv/src/naga_transpile.rs | 20 ++++++++++++++----- tests/compiletests/Cargo.toml | 2 +- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/crates/rustc_codegen_spirv/Cargo.toml b/crates/rustc_codegen_spirv/Cargo.toml index 1e08fe839c..0408aebdd1 100644 --- a/crates/rustc_codegen_spirv/Cargo.toml +++ b/crates/rustc_codegen_spirv/Cargo.toml @@ -29,6 +29,7 @@ use-compiled-tools = ["spirv-tools/use-compiled-tools"] # and will likely produce compile errors when built against a different toolchain. # Enable this feature to be able to experiment with other versions. skip-toolchain-check = [] +naga = ["dep:naga"] [dependencies] # HACK(eddyb) these only exist to unify features across dependency trees, @@ -60,7 +61,7 @@ itertools = "0.10.5" tracing.workspace = true tracing-subscriber.workspace = true tracing-tree = "0.3.0" -naga = { version = "25.0.1", features = ["spv-in", "wgsl-out"] } +naga = { version = "25.0.1", features = ["spv-in", "wgsl-out"], optional = true } # required for cargo gpu to resolve the needed target specs rustc_codegen_spirv-target-specs.workspace = true diff --git a/crates/rustc_codegen_spirv/src/link.rs b/crates/rustc_codegen_spirv/src/link.rs index 21771f9041..e4dc0f03d3 100644 --- a/crates/rustc_codegen_spirv/src/link.rs +++ b/crates/rustc_codegen_spirv/src/link.rs @@ -313,8 +313,10 @@ fn post_link_single_module( drop(save_modules_timer); } - if let Some(transpile) = should_transpile(sess) { - transpile(sess, cg_args, &spv_binary, out_filename).ok(); + if let Ok(transpile) = should_transpile(sess) { + if let Some(transpile) = transpile { + transpile(sess, cg_args, &spv_binary, out_filename).ok(); + } } } diff --git a/crates/rustc_codegen_spirv/src/naga_transpile.rs b/crates/rustc_codegen_spirv/src/naga_transpile.rs index 0acb2b5bce..ba9cb4f580 100644 --- a/crates/rustc_codegen_spirv/src/naga_transpile.rs +++ b/crates/rustc_codegen_spirv/src/naga_transpile.rs @@ -11,15 +11,25 @@ pub type NagaTranspile = fn( out_filename: &Path, ) -> Result<(), ErrorGuaranteed>; -pub fn should_transpile(sess: &Session) -> Option { +pub fn should_transpile(sess: &Session) -> Result, ErrorGuaranteed> { let target = SpirvTargetEnv::parse_triple(sess.opts.target_triple.tuple()) .expect("parsing should fail earlier"); - match target { - SpirvTargetEnv::Wgsl => Some(transpile::wgsl_transpile), - _ => None, - } + let result: Result, ()> = match target { + #[cfg(feature = "naga")] + SpirvTargetEnv::Wgsl => Ok(Some(transpile::wgsl_transpile)), + #[cfg(not(feature = "naga"))] + SpirvTargetEnv::Wgsl => Err(()), + _ => Ok(None), + }; + result.map_err(|_| { + sess.dcx().err(format!( + "Target {} requires feature \"naga\" on rustc_codegen_spirv", + target.target_triple() + )) + }) } +#[cfg(feature = "naga")] mod transpile { use crate::codegen_cx::CodegenArgs; use naga::error::ShaderError; diff --git a/tests/compiletests/Cargo.toml b/tests/compiletests/Cargo.toml index b03db33b8e..1c45e1925b 100644 --- a/tests/compiletests/Cargo.toml +++ b/tests/compiletests/Cargo.toml @@ -15,7 +15,7 @@ use-compiled-tools = ["rustc_codegen_spirv/use-compiled-tools"] [dependencies] compiletest = { version = "0.11.2", package = "compiletest_rs" } -rustc_codegen_spirv = { workspace = true } +rustc_codegen_spirv = { workspace = true, features = ["naga"] } rustc_codegen_spirv-target-specs = { workspace = true, features = ["dir_path"] } clap = { version = "4", features = ["derive"] } itertools = "0.10.5" From 31e24e67c384ca775040fb9e360e0e188b5ec6c5 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Mon, 16 Jun 2025 11:07:07 +0200 Subject: [PATCH 5/7] wgsl: ignore wgsl in compile tests with unsupported extensions or instructions --- .../ui/arch/all_memory_barrier.rs | 1 + ...convert_u_to_acceleration_structure_khr.rs | 1 + tests/compiletests/ui/arch/debug_printf.rs | 1 + .../ui/arch/demote_to_helper_invocation.rs | 1 + .../ui/arch/emit_stream_vertex.rs | 1 + tests/compiletests/ui/arch/emit_vertex.rs | 1 + tests/compiletests/ui/arch/end_primitive.rs | 1 + .../ui/arch/end_stream_primitive.rs | 1 + .../compiletests/ui/arch/execute_callable.rs | 1 + .../ui/arch/ignore_intersection_khr.rs | 1 + tests/compiletests/ui/arch/memory_barrier.rs | 1 + .../ray_query_confirm_intersection_khr.rs | 1 + ...query_get_intersection_barycentrics_khr.rs | 1 + ..._intersection_candidate_aabb_opaque_khr.rs | 1 + ...y_query_get_intersection_front_face_khr.rs | 1 + ...ery_get_intersection_geometry_index_khr.rs | 1 + ..._intersection_instance_custom_index_khr.rs | 1 + ..._query_get_intersection_instance_id_khr.rs | 1 + ...t_intersection_object_ray_direction_khr.rs | 1 + ..._get_intersection_object_ray_origin_khr.rs | 1 + ...ry_get_intersection_object_to_world_khr.rs | 1 + ...ry_get_intersection_primitive_index_khr.rs | 1 + ..._shader_binding_table_record_offset_khr.rs | 1 + .../arch/ray_query_get_intersection_t_khr.rs | 1 + .../ray_query_get_intersection_type_khr.rs | 1 + .../ui/arch/ray_query_get_ray_flags_khr.rs | 1 + .../ui/arch/ray_query_get_ray_t_min_khr.rs | 1 + .../ray_query_get_world_ray_direction_khr.rs | 1 + .../ray_query_get_world_ray_origin_khr.rs | 1 + .../ui/arch/ray_query_initialize_khr.rs | 1 + .../ui/arch/ray_query_terminate_khr.rs | 1 + tests/compiletests/ui/arch/read_clock_khr.rs | 1 + .../ui/arch/report_intersection_khr.rs | 1 + .../compiletests/ui/arch/terminate_ray_khr.rs | 1 + tests/compiletests/ui/arch/trace_ray_khr.rs | 1 + .../ui/arch/workgroup_memory_barrier.rs | 1 + tests/compiletests/ui/dis/asm.rs | 1 + tests/compiletests/ui/dis/asm.stderr | 2 +- tests/compiletests/ui/dis/asm_op_decorate.rs | 1 + .../ui/dis/complex_image_sample_inst.rs | 1 + .../ui/dis/complex_image_sample_inst.stderr | 2 +- .../ui/dis/non-writable-storage_buffer.rs | 1 + .../ui/dis/panic_builtin_bounds_check.rs | 2 + .../ui/dis/panic_builtin_bounds_check.stderr | 6 +- .../ui/dis/panic_sequential_many.rs | 2 + .../ui/dis/panic_sequential_many.stderr | 76 +++++++++---------- .../compiletests/ui/image/query/query_lod.rs | 1 + .../ui/image/query/rect_image_query_size.rs | 1 + .../sampled_image_rect_query_size_lod_err.rs | 1 + ...mpled_image_rect_query_size_lod_err.stderr | 4 +- .../ui/lang/asm/infer-access-chain-array.rs | 1 + .../compiletests/ui/spirv-attr/bool-inputs.rs | 1 + tests/compiletests/ui/spirv-attr/invariant.rs | 5 +- .../compiletests/ui/spirv-attr/matrix-type.rs | 1 + .../storage_class/runtime_descriptor_array.rs | 1 + .../runtime_descriptor_array_error.rs | 1 + .../runtime_descriptor_array_error.stderr | 8 +- .../typed_buffer_descriptor_array.rs | 1 + .../typed_buffer_descriptor_array_slice.rs | 1 + tests/compiletests/ui/target_features_err.rs | 1 + 60 files changed, 108 insertions(+), 50 deletions(-) diff --git a/tests/compiletests/ui/arch/all_memory_barrier.rs b/tests/compiletests/ui/arch/all_memory_barrier.rs index b3f6d2f374..2507788306 100644 --- a/tests/compiletests/ui/arch/all_memory_barrier.rs +++ b/tests/compiletests/ui/arch/all_memory_barrier.rs @@ -1,6 +1,7 @@ // build-pass // compile-flags: -C target-feature=+VulkanMemoryModelDeviceScopeKHR,+ext:SPV_KHR_vulkan_memory_model // compile-flags: -C llvm-args=--disassemble-fn=all_memory_barrier::all_memory_barrier +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/convert_u_to_acceleration_structure_khr.rs b/tests/compiletests/ui/arch/convert_u_to_acceleration_structure_khr.rs index b053ef6d87..c3a6ee89bd 100644 --- a/tests/compiletests/ui/arch/convert_u_to_acceleration_structure_khr.rs +++ b/tests/compiletests/ui/arch/convert_u_to_acceleration_structure_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayTracingKHR,+ext:SPV_KHR_ray_tracing +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/debug_printf.rs b/tests/compiletests/ui/arch/debug_printf.rs index e396b2f538..1c37084f7b 100644 --- a/tests/compiletests/ui/arch/debug_printf.rs +++ b/tests/compiletests/ui/arch/debug_printf.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+ext:SPV_KHR_non_semantic_info +// ignore-wgsl use spirv_std::spirv; use spirv_std::{ diff --git a/tests/compiletests/ui/arch/demote_to_helper_invocation.rs b/tests/compiletests/ui/arch/demote_to_helper_invocation.rs index 862b1f4a6b..fcaa27afb2 100644 --- a/tests/compiletests/ui/arch/demote_to_helper_invocation.rs +++ b/tests/compiletests/ui/arch/demote_to_helper_invocation.rs @@ -1,6 +1,7 @@ // build-pass // // compile-flags: -C target-feature=+DemoteToHelperInvocationEXT,+ext:SPV_EXT_demote_to_helper_invocation +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/emit_stream_vertex.rs b/tests/compiletests/ui/arch/emit_stream_vertex.rs index 09b5874f61..f0be0f9403 100644 --- a/tests/compiletests/ui/arch/emit_stream_vertex.rs +++ b/tests/compiletests/ui/arch/emit_stream_vertex.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -C target-feature=+GeometryStreams +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/emit_vertex.rs b/tests/compiletests/ui/arch/emit_vertex.rs index c8fa3fe781..26a17d12ec 100644 --- a/tests/compiletests/ui/arch/emit_vertex.rs +++ b/tests/compiletests/ui/arch/emit_vertex.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+Geometry +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/end_primitive.rs b/tests/compiletests/ui/arch/end_primitive.rs index 0749ecd1e2..c6f365c66a 100644 --- a/tests/compiletests/ui/arch/end_primitive.rs +++ b/tests/compiletests/ui/arch/end_primitive.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+Geometry +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/end_stream_primitive.rs b/tests/compiletests/ui/arch/end_stream_primitive.rs index 82e138538d..d98400dd24 100644 --- a/tests/compiletests/ui/arch/end_stream_primitive.rs +++ b/tests/compiletests/ui/arch/end_stream_primitive.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -C target-feature=+GeometryStreams +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/execute_callable.rs b/tests/compiletests/ui/arch/execute_callable.rs index 41375a5153..d4b5c84924 100644 --- a/tests/compiletests/ui/arch/execute_callable.rs +++ b/tests/compiletests/ui/arch/execute_callable.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayTracingKHR,+ext:SPV_KHR_ray_tracing +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/ignore_intersection_khr.rs b/tests/compiletests/ui/arch/ignore_intersection_khr.rs index c7c68f7fb1..57a2df3b42 100644 --- a/tests/compiletests/ui/arch/ignore_intersection_khr.rs +++ b/tests/compiletests/ui/arch/ignore_intersection_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayTracingKHR,+ext:SPV_KHR_ray_tracing +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/memory_barrier.rs b/tests/compiletests/ui/arch/memory_barrier.rs index 3c6033b910..ff57dfa6ac 100644 --- a/tests/compiletests/ui/arch/memory_barrier.rs +++ b/tests/compiletests/ui/arch/memory_barrier.rs @@ -1,4 +1,5 @@ // build-pass +// ignore-wgsl #![feature(adt_const_params)] #![allow(incomplete_features)] diff --git a/tests/compiletests/ui/arch/ray_query_confirm_intersection_khr.rs b/tests/compiletests/ui/arch/ray_query_confirm_intersection_khr.rs index d75c69878c..3db1cded3d 100644 --- a/tests/compiletests/ui/arch/ray_query_confirm_intersection_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_confirm_intersection_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_intersection_barycentrics_khr.rs b/tests/compiletests/ui/arch/ray_query_get_intersection_barycentrics_khr.rs index 4e859c6fea..fa445f04d9 100644 --- a/tests/compiletests/ui/arch/ray_query_get_intersection_barycentrics_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_intersection_barycentrics_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_intersection_candidate_aabb_opaque_khr.rs b/tests/compiletests/ui/arch/ray_query_get_intersection_candidate_aabb_opaque_khr.rs index 87376f005c..79caa709e5 100644 --- a/tests/compiletests/ui/arch/ray_query_get_intersection_candidate_aabb_opaque_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_intersection_candidate_aabb_opaque_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_intersection_front_face_khr.rs b/tests/compiletests/ui/arch/ray_query_get_intersection_front_face_khr.rs index ba6006988e..3b27c2c058 100644 --- a/tests/compiletests/ui/arch/ray_query_get_intersection_front_face_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_intersection_front_face_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_intersection_geometry_index_khr.rs b/tests/compiletests/ui/arch/ray_query_get_intersection_geometry_index_khr.rs index 69323141d3..ff5f61dae7 100644 --- a/tests/compiletests/ui/arch/ray_query_get_intersection_geometry_index_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_intersection_geometry_index_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_intersection_instance_custom_index_khr.rs b/tests/compiletests/ui/arch/ray_query_get_intersection_instance_custom_index_khr.rs index 2dfc5bb17e..11fa6bbc77 100644 --- a/tests/compiletests/ui/arch/ray_query_get_intersection_instance_custom_index_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_intersection_instance_custom_index_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_intersection_instance_id_khr.rs b/tests/compiletests/ui/arch/ray_query_get_intersection_instance_id_khr.rs index 20b413deec..07e55fe3d2 100644 --- a/tests/compiletests/ui/arch/ray_query_get_intersection_instance_id_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_intersection_instance_id_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_intersection_object_ray_direction_khr.rs b/tests/compiletests/ui/arch/ray_query_get_intersection_object_ray_direction_khr.rs index 177490b1b2..f53ded11cd 100644 --- a/tests/compiletests/ui/arch/ray_query_get_intersection_object_ray_direction_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_intersection_object_ray_direction_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_intersection_object_ray_origin_khr.rs b/tests/compiletests/ui/arch/ray_query_get_intersection_object_ray_origin_khr.rs index a0ea175b89..3551f50045 100644 --- a/tests/compiletests/ui/arch/ray_query_get_intersection_object_ray_origin_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_intersection_object_ray_origin_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_intersection_object_to_world_khr.rs b/tests/compiletests/ui/arch/ray_query_get_intersection_object_to_world_khr.rs index ac3f9c3ac7..baf5f384ec 100644 --- a/tests/compiletests/ui/arch/ray_query_get_intersection_object_to_world_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_intersection_object_to_world_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_intersection_primitive_index_khr.rs b/tests/compiletests/ui/arch/ray_query_get_intersection_primitive_index_khr.rs index a4f9ab84cc..c7f590bc1f 100644 --- a/tests/compiletests/ui/arch/ray_query_get_intersection_primitive_index_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_intersection_primitive_index_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_intersection_shader_binding_table_record_offset_khr.rs b/tests/compiletests/ui/arch/ray_query_get_intersection_shader_binding_table_record_offset_khr.rs index 159c4aa16d..53bfe38def 100644 --- a/tests/compiletests/ui/arch/ray_query_get_intersection_shader_binding_table_record_offset_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_intersection_shader_binding_table_record_offset_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_intersection_t_khr.rs b/tests/compiletests/ui/arch/ray_query_get_intersection_t_khr.rs index 39cd3dde59..1701a69edb 100644 --- a/tests/compiletests/ui/arch/ray_query_get_intersection_t_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_intersection_t_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_intersection_type_khr.rs b/tests/compiletests/ui/arch/ray_query_get_intersection_type_khr.rs index 39b848003e..41616987ee 100644 --- a/tests/compiletests/ui/arch/ray_query_get_intersection_type_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_intersection_type_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_ray_flags_khr.rs b/tests/compiletests/ui/arch/ray_query_get_ray_flags_khr.rs index 816e808b93..203e7d63a9 100644 --- a/tests/compiletests/ui/arch/ray_query_get_ray_flags_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_ray_flags_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_ray_t_min_khr.rs b/tests/compiletests/ui/arch/ray_query_get_ray_t_min_khr.rs index b5c0d82c3f..af907449fe 100644 --- a/tests/compiletests/ui/arch/ray_query_get_ray_t_min_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_ray_t_min_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_world_ray_direction_khr.rs b/tests/compiletests/ui/arch/ray_query_get_world_ray_direction_khr.rs index 1f579e38b5..e944de22bf 100644 --- a/tests/compiletests/ui/arch/ray_query_get_world_ray_direction_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_world_ray_direction_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_get_world_ray_origin_khr.rs b/tests/compiletests/ui/arch/ray_query_get_world_ray_origin_khr.rs index f56a47e67b..61bc0337a7 100644 --- a/tests/compiletests/ui/arch/ray_query_get_world_ray_origin_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_get_world_ray_origin_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_initialize_khr.rs b/tests/compiletests/ui/arch/ray_query_initialize_khr.rs index ac2e5f0fab..07ce9d04a2 100644 --- a/tests/compiletests/ui/arch/ray_query_initialize_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_initialize_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayTracingKHR,+RayQueryKHR,+ext:SPV_KHR_ray_tracing,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/ray_query_terminate_khr.rs b/tests/compiletests/ui/arch/ray_query_terminate_khr.rs index 02c5b4fde6..3d7ac033e0 100644 --- a/tests/compiletests/ui/arch/ray_query_terminate_khr.rs +++ b/tests/compiletests/ui/arch/ray_query_terminate_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayQueryKHR,+ext:SPV_KHR_ray_query +// ignore-wgsl use glam::Vec3; use spirv_std::ray_tracing::{AccelerationStructure, RayFlags, RayQuery}; diff --git a/tests/compiletests/ui/arch/read_clock_khr.rs b/tests/compiletests/ui/arch/read_clock_khr.rs index 681388db1b..69a4d076b1 100644 --- a/tests/compiletests/ui/arch/read_clock_khr.rs +++ b/tests/compiletests/ui/arch/read_clock_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+Int64,+ShaderClockKHR,+ext:SPV_KHR_shader_clock +// ignore-wgsl use glam::UVec2; use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/report_intersection_khr.rs b/tests/compiletests/ui/arch/report_intersection_khr.rs index a7d3cca8c8..f4b26f3d8d 100644 --- a/tests/compiletests/ui/arch/report_intersection_khr.rs +++ b/tests/compiletests/ui/arch/report_intersection_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayTracingKHR,+ext:SPV_KHR_ray_tracing +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/terminate_ray_khr.rs b/tests/compiletests/ui/arch/terminate_ray_khr.rs index 5d986dfa1c..e3a349ead2 100644 --- a/tests/compiletests/ui/arch/terminate_ray_khr.rs +++ b/tests/compiletests/ui/arch/terminate_ray_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayTracingKHR,+ext:SPV_KHR_ray_tracing +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/trace_ray_khr.rs b/tests/compiletests/ui/arch/trace_ray_khr.rs index f210a65c98..533ef1c5e0 100644 --- a/tests/compiletests/ui/arch/trace_ray_khr.rs +++ b/tests/compiletests/ui/arch/trace_ray_khr.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayTracingKHR,+ext:SPV_KHR_ray_tracing +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/workgroup_memory_barrier.rs b/tests/compiletests/ui/arch/workgroup_memory_barrier.rs index 1a4b6de668..e70c45a0ac 100644 --- a/tests/compiletests/ui/arch/workgroup_memory_barrier.rs +++ b/tests/compiletests/ui/arch/workgroup_memory_barrier.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -C llvm-args=--disassemble-fn=workgroup_memory_barrier::workgroup_memory_barrier +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/dis/asm.rs b/tests/compiletests/ui/dis/asm.rs index 1e2a5a6f01..1829f2d2a9 100644 --- a/tests/compiletests/ui/dis/asm.rs +++ b/tests/compiletests/ui/dis/asm.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -C llvm-args=--disassemble-fn=asm::asm +// ignore-wgsl use core::arch::asm; use spirv_std::spirv; diff --git a/tests/compiletests/ui/dis/asm.stderr b/tests/compiletests/ui/dis/asm.stderr index b0e55dbc55..501c02b442 100644 --- a/tests/compiletests/ui/dis/asm.stderr +++ b/tests/compiletests/ui/dis/asm.stderr @@ -1,6 +1,6 @@ %1 = OpFunction %2 None %3 %4 = OpLabel -OpLine %5 9 8 +OpLine %5 10 8 OpMemoryBarrier %6 %7 OpNoLine OpReturn diff --git a/tests/compiletests/ui/dis/asm_op_decorate.rs b/tests/compiletests/ui/dis/asm_op_decorate.rs index a46835ee64..95379135c4 100644 --- a/tests/compiletests/ui/dis/asm_op_decorate.rs +++ b/tests/compiletests/ui/dis/asm_op_decorate.rs @@ -14,6 +14,7 @@ // ignore-vulkan1.2 // ignore-vulkan1.3 // ignore-vulkan1.4 +// ignore-wgsl use core::arch::asm; use spirv_std::spirv; diff --git a/tests/compiletests/ui/dis/complex_image_sample_inst.rs b/tests/compiletests/ui/dis/complex_image_sample_inst.rs index f42cce8d0b..89791d33be 100644 --- a/tests/compiletests/ui/dis/complex_image_sample_inst.rs +++ b/tests/compiletests/ui/dis/complex_image_sample_inst.rs @@ -1,6 +1,7 @@ // build-pass // compile-flags: -Ctarget-feature=+RuntimeDescriptorArray,+ext:SPV_EXT_descriptor_indexing // compile-flags: -C llvm-args=--disassemble-fn=complex_image_sample_inst::sample_proj_lod +// ignore-wgsl use core::arch::asm; use spirv_std::spirv; diff --git a/tests/compiletests/ui/dis/complex_image_sample_inst.stderr b/tests/compiletests/ui/dis/complex_image_sample_inst.stderr index 2682527c58..5d28c521a2 100644 --- a/tests/compiletests/ui/dis/complex_image_sample_inst.stderr +++ b/tests/compiletests/ui/dis/complex_image_sample_inst.stderr @@ -5,7 +5,7 @@ %8 = OpFunctionParameter %9 %10 = OpFunctionParameter %9 %11 = OpLabel -OpLine %12 18 8 +OpLine %12 19 8 %13 = OpAccessChain %14 %15 %16 %17 = OpLoad %18 %13 %19 = OpImageSampleProjExplicitLod %2 %17 %4 Grad|ConstOffset %5 %7 %20 diff --git a/tests/compiletests/ui/dis/non-writable-storage_buffer.rs b/tests/compiletests/ui/dis/non-writable-storage_buffer.rs index 483f7c75ad..b03ea9e939 100644 --- a/tests/compiletests/ui/dis/non-writable-storage_buffer.rs +++ b/tests/compiletests/ui/dis/non-writable-storage_buffer.rs @@ -15,6 +15,7 @@ // ignore-vulkan1.2 // ignore-vulkan1.3 // ignore-vulkan1.4 +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/dis/panic_builtin_bounds_check.rs b/tests/compiletests/ui/dis/panic_builtin_bounds_check.rs index 93b5e62a8f..a3ce594b33 100644 --- a/tests/compiletests/ui/dis/panic_builtin_bounds_check.rs +++ b/tests/compiletests/ui/dis/panic_builtin_bounds_check.rs @@ -18,6 +18,8 @@ // normalize-stderr-test "\S:\S*/panic_builtin_bounds_check.rs" -> "$$DIR/panic_builtin_bounds_check.rs" // FIXME(eddyb) handle this one in the test runner. // normalize-stderr-test "\S*/lib/rustlib/" -> "$$SYSROOT/lib/rustlib/" +// +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/dis/panic_builtin_bounds_check.stderr b/tests/compiletests/ui/dis/panic_builtin_bounds_check.stderr index d2066bab76..213e2e0834 100644 --- a/tests/compiletests/ui/dis/panic_builtin_bounds_check.stderr +++ b/tests/compiletests/ui/dis/panic_builtin_bounds_check.stderr @@ -4,7 +4,7 @@ OpExtension "SPV_KHR_non_semantic_info" OpMemoryModel Logical Simple OpEntryPoint Fragment %2 "main" OpExecutionMode %2 OriginUpperLeft -%3 = OpString "/n[Rust panicked at $DIR/panic_builtin_bounds_check.rs:25:5]/n index out of bounds: the len is %u but the index is %u/n in main()/n" +%3 = OpString "/n[Rust panicked at $DIR/panic_builtin_bounds_check.rs:27:5]/n index out of bounds: the len is %u but the index is %u/n in main()/n" %4 = OpString "$DIR/panic_builtin_bounds_check.rs" %5 = OpTypeVoid %6 = OpTypeFunction %5 @@ -15,7 +15,7 @@ OpExecutionMode %2 OriginUpperLeft %11 = OpUndef %8 %2 = OpFunction %5 None %6 %12 = OpLabel -OpLine %4 25 4 +OpLine %4 27 4 %13 = OpULessThan %7 %9 %10 OpNoLine OpSelectionMerge %14 None @@ -23,7 +23,7 @@ OpBranchConditional %13 %15 %16 %15 = OpLabel OpBranch %14 %16 = OpLabel -OpLine %4 25 4 +OpLine %4 27 4 %17 = OpExtInst %5 %1 1 %3 %11 %9 OpNoLine OpReturn diff --git a/tests/compiletests/ui/dis/panic_sequential_many.rs b/tests/compiletests/ui/dis/panic_sequential_many.rs index 4cb7db174d..679e19edce 100644 --- a/tests/compiletests/ui/dis/panic_sequential_many.rs +++ b/tests/compiletests/ui/dis/panic_sequential_many.rs @@ -19,6 +19,8 @@ // normalize-stderr-test "\S:\S*/panic_sequential_many.rs" -> "$$DIR/panic_sequential_many.rs" // FIXME(eddyb) handle this one in the test runner. // normalize-stderr-test "\S*/lib/rustlib/" -> "$$SYSROOT/lib/rustlib/" +// +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/dis/panic_sequential_many.stderr b/tests/compiletests/ui/dis/panic_sequential_many.stderr index 5c86eaab48..21cd242d7c 100644 --- a/tests/compiletests/ui/dis/panic_sequential_many.stderr +++ b/tests/compiletests/ui/dis/panic_sequential_many.stderr @@ -4,7 +4,7 @@ OpExtension "SPV_KHR_non_semantic_info" OpMemoryModel Logical Simple OpEntryPoint Fragment %2 "main" %3 %4 %5 OpExecutionMode %2 OriginUpperLeft -%6 = OpString "/n[Rust panicked at $DIR/panic_sequential_many.rs:29:10]/n attempt to divide by zero/n in main()/n" +%6 = OpString "/n[Rust panicked at $DIR/panic_sequential_many.rs:31:10]/n attempt to divide by zero/n in main()/n" %7 = OpString "$DIR/panic_sequential_many.rs" OpName %3 "x" OpName %4 "y" @@ -26,248 +26,248 @@ OpDecorate %5 Location 0 %5 = OpVariable %10 Output %2 = OpFunction %11 None %12 %15 = OpLabel -OpLine %7 26 12 +OpLine %7 28 12 %16 = OpLoad %8 %3 -OpLine %7 26 35 +OpLine %7 28 35 %17 = OpLoad %8 %4 -OpLine %7 29 9 +OpLine %7 31 9 %18 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %19 None OpBranchConditional %18 %20 %21 %20 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %22 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %21 = OpLabel OpBranch %19 %19 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %23 = OpUDiv %8 %16 %17 %24 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %25 None OpBranchConditional %24 %26 %27 %26 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %28 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %27 = OpLabel OpBranch %25 %25 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %29 = OpUDiv %8 %23 %17 %30 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %31 None OpBranchConditional %30 %32 %33 %32 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %34 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %33 = OpLabel OpBranch %31 %31 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %35 = OpUDiv %8 %29 %17 %36 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %37 None OpBranchConditional %36 %38 %39 %38 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %40 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %39 = OpLabel OpBranch %37 %37 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %41 = OpUDiv %8 %35 %17 %42 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %43 None OpBranchConditional %42 %44 %45 %44 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %46 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %45 = OpLabel OpBranch %43 %43 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %47 = OpUDiv %8 %41 %17 %48 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %49 None OpBranchConditional %48 %50 %51 %50 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %52 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %51 = OpLabel OpBranch %49 %49 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %53 = OpUDiv %8 %47 %17 %54 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %55 None OpBranchConditional %54 %56 %57 %56 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %58 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %57 = OpLabel OpBranch %55 %55 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %59 = OpUDiv %8 %53 %17 %60 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %61 None OpBranchConditional %60 %62 %63 %62 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %64 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %63 = OpLabel OpBranch %61 %61 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %65 = OpUDiv %8 %59 %17 %66 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %67 None OpBranchConditional %66 %68 %69 %68 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %70 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %69 = OpLabel OpBranch %67 %67 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %71 = OpUDiv %8 %65 %17 %72 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %73 None OpBranchConditional %72 %74 %75 %74 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %76 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %75 = OpLabel OpBranch %73 %73 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %77 = OpUDiv %8 %71 %17 %78 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %79 None OpBranchConditional %78 %80 %81 %80 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %82 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %81 = OpLabel OpBranch %79 %79 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %83 = OpUDiv %8 %77 %17 %84 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %85 None OpBranchConditional %84 %86 %87 %86 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %88 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %87 = OpLabel OpBranch %85 %85 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %89 = OpUDiv %8 %83 %17 %90 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %91 None OpBranchConditional %90 %92 %93 %92 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %94 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %93 = OpLabel OpBranch %91 %91 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %95 = OpUDiv %8 %89 %17 %96 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %97 None OpBranchConditional %96 %98 %99 %98 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %100 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %99 = OpLabel OpBranch %97 %97 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %101 = OpUDiv %8 %95 %17 %102 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %103 None OpBranchConditional %102 %104 %105 %104 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %106 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %105 = OpLabel OpBranch %103 %103 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %107 = OpUDiv %8 %101 %17 %108 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %109 None OpBranchConditional %108 %110 %111 %110 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %112 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %111 = OpLabel OpBranch %109 %109 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %113 = OpUDiv %8 %107 %17 %114 = OpIEqual %13 %17 %14 OpNoLine OpSelectionMerge %115 None OpBranchConditional %114 %116 %117 %116 = OpLabel -OpLine %7 29 9 +OpLine %7 31 9 %118 = OpExtInst %11 %1 1 %6 OpNoLine OpReturn %117 = OpLabel OpBranch %115 %115 = OpLabel -OpLine %7 29 4 +OpLine %7 31 4 %119 = OpUDiv %8 %113 %17 OpStore %5 %119 OpNoLine diff --git a/tests/compiletests/ui/image/query/query_lod.rs b/tests/compiletests/ui/image/query/query_lod.rs index 4d764d0514..06eef09871 100644 --- a/tests/compiletests/ui/image/query/query_lod.rs +++ b/tests/compiletests/ui/image/query/query_lod.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -C target-feature=+ImageQuery +// ignore-wgsl use spirv_std::spirv; use spirv_std::{Image, Sampler, arch}; diff --git a/tests/compiletests/ui/image/query/rect_image_query_size.rs b/tests/compiletests/ui/image/query/rect_image_query_size.rs index 3182412157..9806c1c075 100644 --- a/tests/compiletests/ui/image/query/rect_image_query_size.rs +++ b/tests/compiletests/ui/image/query/rect_image_query_size.rs @@ -6,6 +6,7 @@ // ignore-vulkan1.2 // ignore-vulkan1.3 // ignore-vulkan1.4 +// ignore-wgsl use spirv_std::spirv; use spirv_std::{Image, arch}; diff --git a/tests/compiletests/ui/image/query/sampled_image_rect_query_size_lod_err.rs b/tests/compiletests/ui/image/query/sampled_image_rect_query_size_lod_err.rs index acfe0a61a3..44aaf782e8 100644 --- a/tests/compiletests/ui/image/query/sampled_image_rect_query_size_lod_err.rs +++ b/tests/compiletests/ui/image/query/sampled_image_rect_query_size_lod_err.rs @@ -7,6 +7,7 @@ // ignore-vulkan1.2 // ignore-vulkan1.3 // ignore-vulkan1.4 +// ignore-wgsl use spirv_std::{Image, arch, image::SampledImage, spirv}; diff --git a/tests/compiletests/ui/image/query/sampled_image_rect_query_size_lod_err.stderr b/tests/compiletests/ui/image/query/sampled_image_rect_query_size_lod_err.stderr index 32c369a9bd..9c6a0fe48c 100644 --- a/tests/compiletests/ui/image/query/sampled_image_rect_query_size_lod_err.stderr +++ b/tests/compiletests/ui/image/query/sampled_image_rect_query_size_lod_err.stderr @@ -1,7 +1,7 @@ error[E0277]: the trait bound `Image: HasQuerySizeLod` is not satisfied - --> $DIR/sampled_image_rect_query_size_lod_err.rs:21:28 + --> $DIR/sampled_image_rect_query_size_lod_err.rs:22:28 | -21 | *output = rect_sampled.query_size_lod(0); +22 | *output = rect_sampled.query_size_lod(0); | ^^^^^^^^^^^^^^ the trait `HasQuerySizeLod` is not implemented for `Image` | = help: the following other types implement trait `HasQuerySizeLod`: diff --git a/tests/compiletests/ui/lang/asm/infer-access-chain-array.rs b/tests/compiletests/ui/lang/asm/infer-access-chain-array.rs index cd3649989a..faeae33b2f 100644 --- a/tests/compiletests/ui/lang/asm/infer-access-chain-array.rs +++ b/tests/compiletests/ui/lang/asm/infer-access-chain-array.rs @@ -2,6 +2,7 @@ // when used to index arrays. // build-pass +// ignore-wgsl use core::arch::asm; use glam::Vec4; diff --git a/tests/compiletests/ui/spirv-attr/bool-inputs.rs b/tests/compiletests/ui/spirv-attr/bool-inputs.rs index c0d74df93b..b03acfe8fd 100644 --- a/tests/compiletests/ui/spirv-attr/bool-inputs.rs +++ b/tests/compiletests/ui/spirv-attr/bool-inputs.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+FragmentFullyCoveredEXT,+ext:SPV_EXT_fragment_fully_covered +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/spirv-attr/invariant.rs b/tests/compiletests/ui/spirv-attr/invariant.rs index 37e7a698ec..027e951eaa 100644 --- a/tests/compiletests/ui/spirv-attr/invariant.rs +++ b/tests/compiletests/ui/spirv-attr/invariant.rs @@ -1,7 +1,10 @@ // Tests that the invariant attribute works // build-pass +use spirv_std::glam::Vec4; use spirv_std::spirv; #[spirv(vertex)] -pub fn main(#[spirv(invariant)] output: &mut f32) {} +pub fn main(#[spirv(invariant)] output: &mut f32, #[spirv(position)] pos: &mut Vec4) { + *pos = Vec4::ZERO; +} diff --git a/tests/compiletests/ui/spirv-attr/matrix-type.rs b/tests/compiletests/ui/spirv-attr/matrix-type.rs index ef8ca60349..a00c002ef0 100644 --- a/tests/compiletests/ui/spirv-attr/matrix-type.rs +++ b/tests/compiletests/ui/spirv-attr/matrix-type.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -Ctarget-feature=+RayTracingKHR,+ext:SPV_KHR_ray_tracing +// ignore-wgsl use spirv_std::spirv; diff --git a/tests/compiletests/ui/storage_class/runtime_descriptor_array.rs b/tests/compiletests/ui/storage_class/runtime_descriptor_array.rs index 0596b56725..5e107ab17f 100644 --- a/tests/compiletests/ui/storage_class/runtime_descriptor_array.rs +++ b/tests/compiletests/ui/storage_class/runtime_descriptor_array.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -C target-feature=+RuntimeDescriptorArray,+ext:SPV_EXT_descriptor_indexing +// ignore-wgsl use spirv_std::spirv; use spirv_std::{Image, RuntimeArray, Sampler}; diff --git a/tests/compiletests/ui/storage_class/runtime_descriptor_array_error.rs b/tests/compiletests/ui/storage_class/runtime_descriptor_array_error.rs index 5ccefec3de..46c52d91fe 100644 --- a/tests/compiletests/ui/storage_class/runtime_descriptor_array_error.rs +++ b/tests/compiletests/ui/storage_class/runtime_descriptor_array_error.rs @@ -1,4 +1,5 @@ // build-fail +// ignore-wgsl use spirv_std::{Image, RuntimeArray, spirv}; diff --git a/tests/compiletests/ui/storage_class/runtime_descriptor_array_error.stderr b/tests/compiletests/ui/storage_class/runtime_descriptor_array_error.stderr index a3c0d1b0b6..15d94679c3 100644 --- a/tests/compiletests/ui/storage_class/runtime_descriptor_array_error.stderr +++ b/tests/compiletests/ui/storage_class/runtime_descriptor_array_error.stderr @@ -1,13 +1,13 @@ error: descriptor indexing must use &RuntimeArray, not &[T] - --> $DIR/runtime_descriptor_array_error.rs:7:52 + --> $DIR/runtime_descriptor_array_error.rs:8:52 | -7 | #[spirv(descriptor_set = 0, binding = 0)] one: &[Image!(2D, type=f32, sampled)], +8 | #[spirv(descriptor_set = 0, binding = 0)] one: &[Image!(2D, type=f32, sampled)], | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use &[T] instead of &RuntimeArray - --> $DIR/runtime_descriptor_array_error.rs:8:61 + --> $DIR/runtime_descriptor_array_error.rs:9:61 | -8 | #[spirv(uniform, descriptor_set = 0, binding = 0)] two: &RuntimeArray, +9 | #[spirv(uniform, descriptor_set = 0, binding = 0)] two: &RuntimeArray, | ^^^^^^^^^^^^^^^^^^ error: aborting due to 1 previous error; 1 warning emitted diff --git a/tests/compiletests/ui/storage_class/typed_buffer_descriptor_array.rs b/tests/compiletests/ui/storage_class/typed_buffer_descriptor_array.rs index 1383707dec..fe221bf5ed 100644 --- a/tests/compiletests/ui/storage_class/typed_buffer_descriptor_array.rs +++ b/tests/compiletests/ui/storage_class/typed_buffer_descriptor_array.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -C target-feature=+RuntimeDescriptorArray,+ext:SPV_EXT_descriptor_indexing +// ignore-wgsl use glam::Vec4; use spirv_std::spirv; diff --git a/tests/compiletests/ui/storage_class/typed_buffer_descriptor_array_slice.rs b/tests/compiletests/ui/storage_class/typed_buffer_descriptor_array_slice.rs index 9e62e99706..1141cfade4 100644 --- a/tests/compiletests/ui/storage_class/typed_buffer_descriptor_array_slice.rs +++ b/tests/compiletests/ui/storage_class/typed_buffer_descriptor_array_slice.rs @@ -1,5 +1,6 @@ // build-pass // compile-flags: -C target-feature=+RuntimeDescriptorArray,+ext:SPV_EXT_descriptor_indexing +// ignore-wgsl use glam::Vec4; use spirv_std::spirv; diff --git a/tests/compiletests/ui/target_features_err.rs b/tests/compiletests/ui/target_features_err.rs index f6def31c4f..74db9699a2 100644 --- a/tests/compiletests/ui/target_features_err.rs +++ b/tests/compiletests/ui/target_features_err.rs @@ -1,5 +1,6 @@ // build-fail // compile-flags: -Ctarget-feature=+rayTracingKHR,+ext:SPV_KHR_ray_tracing +// ignore-wgsl use spirv_std::spirv; From 7c3291fd501212c8321197f5c42118d923384ef8 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Mon, 16 Jun 2025 11:13:11 +0200 Subject: [PATCH 6/7] wgsl: fix clippy --- crates/rustc_codegen_spirv/src/link.rs | 6 ++---- crates/rustc_codegen_spirv/src/naga_transpile.rs | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/crates/rustc_codegen_spirv/src/link.rs b/crates/rustc_codegen_spirv/src/link.rs index e4dc0f03d3..760e107125 100644 --- a/crates/rustc_codegen_spirv/src/link.rs +++ b/crates/rustc_codegen_spirv/src/link.rs @@ -313,10 +313,8 @@ fn post_link_single_module( drop(save_modules_timer); } - if let Ok(transpile) = should_transpile(sess) { - if let Some(transpile) = transpile { - transpile(sess, cg_args, &spv_binary, out_filename).ok(); - } + if let Ok(Some(transpile)) = should_transpile(sess) { + transpile(sess, cg_args, &spv_binary, out_filename).ok(); } } diff --git a/crates/rustc_codegen_spirv/src/naga_transpile.rs b/crates/rustc_codegen_spirv/src/naga_transpile.rs index ba9cb4f580..15bcc13f2a 100644 --- a/crates/rustc_codegen_spirv/src/naga_transpile.rs +++ b/crates/rustc_codegen_spirv/src/naga_transpile.rs @@ -21,7 +21,7 @@ pub fn should_transpile(sess: &Session) -> Result, ErrorGu SpirvTargetEnv::Wgsl => Err(()), _ => Ok(None), }; - result.map_err(|_| { + result.map_err(|_e| { sess.dcx().err(format!( "Target {} requires feature \"naga\" on rustc_codegen_spirv", target.target_triple() From db23681eda4e5780fa6b11b752e1296835fcf3ea Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Tue, 1 Jul 2025 19:57:45 +0200 Subject: [PATCH 7/7] wgsl ci: add experimental wgsl compiletest to ci --- .github/workflows/ci.yaml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 1cb32bfb9e..157547670d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -119,9 +119,17 @@ jobs: compiletest: name: Compiletest strategy: + fail-fast: false matrix: os: [ ubuntu-24.04, windows-2022, macOS-latest ] + target_env: [ "vulkan1.1,vulkan1.2,vulkan1.3,vulkan1.4" ] + experimental: [ false ] + include: + - os: ubuntu-24.04 + target_env: wgsl + experimental: true runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.experimental }} steps: - uses: actions/checkout@v4 - name: Install Vulkan SDK @@ -134,7 +142,7 @@ jobs: - name: cargo fetch --locked run: cargo fetch --locked --target $TARGET - name: compiletest - run: cargo run -p compiletests --release --no-default-features --features "use-installed-tools" -- --target-env vulkan1.1,vulkan1.2,vulkan1.3,vulkan1.4,spv1.3 + run: cargo run -p compiletests --release --no-default-features --features "use-installed-tools" -- --target-env ${{ matrix.target_env }} difftest: name: Difftest