From f062d2c6beeb960bbd734d085d4c804688e754ce Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Thu, 12 Jun 2025 19:23:26 +0200 Subject: [PATCH 1/6] wgsl: add `spirv-unknown-naga-wgsl` target, transpiling with naga --- Cargo.lock | 1 + .../src/include_str.rs | 3 + .../src/lib.rs | 2 + .../target-specs/spirv-unknown-naga-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 | 79 +++++++++++++++++++ crates/rustc_codegen_spirv/src/target.rs | 4 + 9 files changed, 122 insertions(+) create mode 100644 crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-naga-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..fda743693b 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::Naga_Wgsl => { + include_str!("../target-specs/spirv-unknown-naga-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 85f0bdcaea..1f3a14431a 100644 --- a/crates/rustc_codegen_spirv-target-specs/src/lib.rs +++ b/crates/rustc_codegen_spirv-target-specs/src/lib.rs @@ -60,6 +60,8 @@ pub enum SpirvTargetEnv { Vulkan_1_3, #[strum(to_string = "vulkan1.4")] Vulkan_1_4, + #[strum(to_string = "naga-wgsl")] + Naga_Wgsl, } #[derive(Clone, Error, Eq, PartialEq)] diff --git a/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-naga-wgsl.json b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-naga-wgsl.json new file mode 100644 index 0000000000..d4962c0cdb --- /dev/null +++ b/crates/rustc_codegen_spirv-target-specs/target-specs/spirv-unknown-naga-wgsl.json @@ -0,0 +1,26 @@ +{ + "allows-weak-linkage": false, + "arch": "spirv", + "crt-objects-fallback": "false", + "crt-static-allows-dylibs": true, + "crt-static-respected": 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": "naga-wgsl", + "linker-flavor": "unix", + "linker-is-gnu": false, + "llvm-target": "spirv-unknown-naga-wgsl", + "main-needs-argc-argv": false, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "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 2954fd31d4..9fccf174fe 100644 --- a/crates/rustc_codegen_spirv/src/lib.rs +++ b/crates/rustc_codegen_spirv/src/lib.rs @@ -133,6 +133,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 540d8a2841..a6cc01b8ba 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; @@ -322,6 +323,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..39e77cbba6 --- /dev/null +++ b/crates/rustc_codegen_spirv/src/naga_transpile.rs @@ -0,0 +1,79 @@ +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::Naga_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 b7f131da46..236018a78c 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::Naga_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::Naga_Wgsl => spirv_tools::TargetEnv::Vulkan_1_2, } } From cf5b21c36708a32003776c120bb228fd4328b159 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Mon, 16 Jun 2025 10:03:25 +0200 Subject: [PATCH 2/6] wgsl: hide naga behind feature --- crates/rustc_codegen_spirv/Cargo.toml | 3 ++- crates/rustc_codegen_spirv/src/link.rs | 2 +- .../rustc_codegen_spirv/src/naga_transpile.rs | 20 ++++++++++++++----- tests/compiletests/Cargo.toml | 2 +- 4 files changed, 19 insertions(+), 8 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 a6cc01b8ba..96f6dc8d34 100644 --- a/crates/rustc_codegen_spirv/src/link.rs +++ b/crates/rustc_codegen_spirv/src/link.rs @@ -324,7 +324,7 @@ fn post_link_single_module( drop(save_modules_timer); } - if let Some(transpile) = should_transpile(sess) { + 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 39e77cbba6..57f9b0c667 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::Naga_Wgsl => Some(transpile::wgsl_transpile), - _ => None, - } + let result: Result, ()> = match target { + #[cfg(feature = "naga")] + SpirvTargetEnv::Naga_Wgsl => Ok(Some(transpile::wgsl_transpile)), + #[cfg(not(feature = "naga"))] + SpirvTargetEnv::Naga_Wgsl => Err(()), + _ => Ok(None), + }; + result.map_err(|_e| { + 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 bfe6c6a5759e66928ebb9eae8386b37863075a93 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Thu, 3 Jul 2025 18:07:11 +0200 Subject: [PATCH 3/6] wgsl: enable naga feature by default, cargo-gpu can't handle it --- crates/rustc_codegen_spirv/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/rustc_codegen_spirv/Cargo.toml b/crates/rustc_codegen_spirv/Cargo.toml index 0408aebdd1..ac45397f4a 100644 --- a/crates/rustc_codegen_spirv/Cargo.toml +++ b/crates/rustc_codegen_spirv/Cargo.toml @@ -20,10 +20,10 @@ crate-type = ["dylib"] default = ["use-compiled-tools"] # If enabled, uses spirv-tools binaries installed in PATH, instead of # compiling and linking the spirv-tools C++ code -use-installed-tools = ["spirv-tools/use-installed-tools"] +use-installed-tools = ["spirv-tools/use-installed-tools", "naga"] # If enabled will compile and link the C++ code for the spirv tools, the compiled # version is preferred if both this and `use-installed-tools` are enabled -use-compiled-tools = ["spirv-tools/use-compiled-tools"] +use-compiled-tools = ["spirv-tools/use-compiled-tools", "naga"] # If enabled, this will not check whether the current rustc version is set to the # appropriate channel. rustc_cogeden_spirv requires a specific nightly version, # and will likely produce compile errors when built against a different toolchain. From 329d3fe2ba4ed30ae4387b2a7fca09dd7f01eca7 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Fri, 11 Jul 2025 18:52:59 +0200 Subject: [PATCH 4/6] compiletest: fix parsing for target envs with `-` --- tests/compiletests/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/compiletests/src/main.rs b/tests/compiletests/src/main.rs index e665198ff9..d6c3c8254e 100644 --- a/tests/compiletests/src/main.rs +++ b/tests/compiletests/src/main.rs @@ -140,7 +140,7 @@ impl Runner { .environments() .flat_map(|target| VARIATIONS.iter().map(move |variation| (target, variation))) { - let target = if target.contains("-") { + let target = if target.starts_with("spirv-unknown-") { SpirvTargetEnv::parse_triple(target) } else { SpirvTargetEnv::parse_triple(&format!("spirv-unknown-{target}")) From 9943c554cf3af80e980e71f9d06b212ac90aee9e Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Mon, 16 Jun 2025 11:07:07 +0200 Subject: [PATCH 5/6] wgsl: ignore naga targets 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 | 8 ++-- .../ui/dis/panic_sequential_many.rs | 2 + .../ui/dis/panic_sequential_many.stderr | 40 +++++++++---------- .../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, 91 insertions(+), 33 deletions(-) diff --git a/tests/compiletests/ui/arch/all_memory_barrier.rs b/tests/compiletests/ui/arch/all_memory_barrier.rs index b3f6d2f374..adfe7ab836 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-naga 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..48404f6b3c 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-naga use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/debug_printf.rs b/tests/compiletests/ui/arch/debug_printf.rs index e396b2f538..3b5022e430 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-naga 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..18405b103e 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-naga 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..b4bbafe2e7 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-naga use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/emit_vertex.rs b/tests/compiletests/ui/arch/emit_vertex.rs index c8fa3fe781..3005d98f50 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-naga use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/end_primitive.rs b/tests/compiletests/ui/arch/end_primitive.rs index 0749ecd1e2..eba55624d5 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-naga 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..1c30cddb0d 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-naga use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/execute_callable.rs b/tests/compiletests/ui/arch/execute_callable.rs index 41375a5153..79810e9bc8 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-naga 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..c80960de48 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-naga use spirv_std::spirv; diff --git a/tests/compiletests/ui/arch/memory_barrier.rs b/tests/compiletests/ui/arch/memory_barrier.rs index 3c6033b910..39310f1f04 100644 --- a/tests/compiletests/ui/arch/memory_barrier.rs +++ b/tests/compiletests/ui/arch/memory_barrier.rs @@ -1,4 +1,5 @@ // build-pass +// ignore-naga #![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..c2e2ced4d5 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-naga 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..74edf65040 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-naga 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..19c625f466 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-naga 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..bda1a59dca 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-naga 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..e453362bc7 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-naga 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..7ac735a1a3 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-naga 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..e3c0c37ef7 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-naga 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..abdca7fe7a 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-naga 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..aaeabddd40 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-naga 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..7e5cd69031 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-naga 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..bc8d8b7925 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-naga 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..3e58521e56 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-naga 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..054542fdd5 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-naga 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..93be2c779c 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-naga 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..737bfb300c 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-naga 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..c23234890f 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-naga 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..7e3d567fee 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-naga 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..efd80dbf7b 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-naga 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..75893656d1 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-naga 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..a1b53aa677 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-naga 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..db09ea17e3 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-naga 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..cc0ab9be11 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-naga 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..e9be85b18a 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-naga 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..496ada41eb 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-naga 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..ae2f216798 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-naga use spirv_std::spirv; diff --git a/tests/compiletests/ui/dis/asm.rs b/tests/compiletests/ui/dis/asm.rs index 1e2a5a6f01..941f2a3522 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-naga 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 a9b227e012..b500f90468 100644 --- a/tests/compiletests/ui/dis/asm_op_decorate.rs +++ b/tests/compiletests/ui/dis/asm_op_decorate.rs @@ -17,6 +17,7 @@ // ignore-vulkan1.2 // ignore-vulkan1.3 // ignore-vulkan1.4 +// ignore-naga 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..0a6d999485 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-naga 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 3b53078ce2..9dc7776631 100644 --- a/tests/compiletests/ui/dis/non-writable-storage_buffer.rs +++ b/tests/compiletests/ui/dis/non-writable-storage_buffer.rs @@ -18,6 +18,7 @@ // ignore-vulkan1.2 // ignore-vulkan1.3 // ignore-vulkan1.4 +// ignore-naga 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 832a15174c..e13f5a4a3e 100644 --- a/tests/compiletests/ui/dis/panic_builtin_bounds_check.rs +++ b/tests/compiletests/ui/dis/panic_builtin_bounds_check.rs @@ -17,6 +17,8 @@ // normalize-stderr-test "OpMemoryModel Logical Vulkan" -> "OpMemoryModel Logical Simple" // FIXME(eddyb) handle this one in the test runner. // normalize-stderr-test "\S*/lib/rustlib/" -> "$$SYSROOT/lib/rustlib/" +// +// ignore-naga // HACK(eddyb) `compiletest` handles `ui\dis\`, but not `ui\\dis\\`, on Windows. // normalize-stderr-test "ui/dis/" -> "$$DIR/" diff --git a/tests/compiletests/ui/dis/panic_builtin_bounds_check.stderr b/tests/compiletests/ui/dis/panic_builtin_bounds_check.stderr index edef031324..2d185143ee 100644 --- a/tests/compiletests/ui/dis/panic_builtin_bounds_check.stderr +++ b/tests/compiletests/ui/dis/panic_builtin_bounds_check.stderr @@ -23,11 +23,11 @@ OpDecorate %6 ArrayStride 4 %18 = OpTypePointer Function %9 %2 = OpFunction %7 None %8 %19 = OpLabel -OpLine %5 32 4 +OpLine %5 34 4 %20 = OpVariable %11 Function -OpLine %5 32 23 +OpLine %5 34 23 %21 = OpCompositeConstruct %6 %12 %13 %14 %15 -OpLine %5 27 4 +OpLine %5 29 4 OpStore %20 %21 %22 = OpULessThan %16 %17 %10 OpNoLine @@ -41,7 +41,7 @@ OpLine %4 280 4 OpNoLine OpReturn %23 = OpLabel -OpLine %5 27 4 +OpLine %5 29 4 %27 = OpIAdd %9 %12 %17 %28 = OpInBoundsAccessChain %18 %20 %27 %29 = OpLoad %9 %28 diff --git a/tests/compiletests/ui/dis/panic_sequential_many.rs b/tests/compiletests/ui/dis/panic_sequential_many.rs index c64641e0ef..a7c1098988 100644 --- a/tests/compiletests/ui/dis/panic_sequential_many.rs +++ b/tests/compiletests/ui/dis/panic_sequential_many.rs @@ -18,6 +18,8 @@ // normalize-stderr-test "OpMemoryModel Logical Vulkan" -> "OpMemoryModel Logical Simple" // FIXME(eddyb) handle this one in the test runner. // normalize-stderr-test "\S*/lib/rustlib/" -> "$$SYSROOT/lib/rustlib/" +// +// ignore-naga // HACK(eddyb) `compiletest` handles `ui\dis\`, but not `ui\\dis\\`, on Windows. // normalize-stderr-test "ui/dis/" -> "$$DIR/" diff --git a/tests/compiletests/ui/dis/panic_sequential_many.stderr b/tests/compiletests/ui/dis/panic_sequential_many.stderr index ad3952f81b..aa036e5032 100644 --- a/tests/compiletests/ui/dis/panic_sequential_many.stderr +++ b/tests/compiletests/ui/dis/panic_sequential_many.stderr @@ -27,11 +27,11 @@ OpDecorate %5 Location 0 %5 = OpVariable %11 Output %2 = OpFunction %12 None %13 %16 = OpLabel -OpLine %8 28 12 +OpLine %8 30 12 %17 = OpLoad %9 %3 -OpLine %8 28 35 +OpLine %8 30 35 %18 = OpLoad %9 %4 -OpLine %8 31 9 +OpLine %8 33 9 %19 = OpIEqual %14 %18 %15 OpNoLine OpSelectionMerge %20 None @@ -44,7 +44,7 @@ OpReturn %22 = OpLabel OpBranch %20 %20 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %24 = OpUDiv %9 %17 %18 %25 = OpIEqual %14 %18 %15 OpNoLine @@ -58,7 +58,7 @@ OpReturn %28 = OpLabel OpBranch %26 %26 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %30 = OpUDiv %9 %24 %18 %31 = OpIEqual %14 %18 %15 OpNoLine @@ -72,7 +72,7 @@ OpReturn %34 = OpLabel OpBranch %32 %32 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %36 = OpUDiv %9 %30 %18 %37 = OpIEqual %14 %18 %15 OpNoLine @@ -86,7 +86,7 @@ OpReturn %40 = OpLabel OpBranch %38 %38 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %42 = OpUDiv %9 %36 %18 %43 = OpIEqual %14 %18 %15 OpNoLine @@ -100,7 +100,7 @@ OpReturn %46 = OpLabel OpBranch %44 %44 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %48 = OpUDiv %9 %42 %18 %49 = OpIEqual %14 %18 %15 OpNoLine @@ -114,7 +114,7 @@ OpReturn %52 = OpLabel OpBranch %50 %50 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %54 = OpUDiv %9 %48 %18 %55 = OpIEqual %14 %18 %15 OpNoLine @@ -128,7 +128,7 @@ OpReturn %58 = OpLabel OpBranch %56 %56 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %60 = OpUDiv %9 %54 %18 %61 = OpIEqual %14 %18 %15 OpNoLine @@ -142,7 +142,7 @@ OpReturn %64 = OpLabel OpBranch %62 %62 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %66 = OpUDiv %9 %60 %18 %67 = OpIEqual %14 %18 %15 OpNoLine @@ -156,7 +156,7 @@ OpReturn %70 = OpLabel OpBranch %68 %68 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %72 = OpUDiv %9 %66 %18 %73 = OpIEqual %14 %18 %15 OpNoLine @@ -170,7 +170,7 @@ OpReturn %76 = OpLabel OpBranch %74 %74 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %78 = OpUDiv %9 %72 %18 %79 = OpIEqual %14 %18 %15 OpNoLine @@ -184,7 +184,7 @@ OpReturn %82 = OpLabel OpBranch %80 %80 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %84 = OpUDiv %9 %78 %18 %85 = OpIEqual %14 %18 %15 OpNoLine @@ -198,7 +198,7 @@ OpReturn %88 = OpLabel OpBranch %86 %86 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %90 = OpUDiv %9 %84 %18 %91 = OpIEqual %14 %18 %15 OpNoLine @@ -212,7 +212,7 @@ OpReturn %94 = OpLabel OpBranch %92 %92 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %96 = OpUDiv %9 %90 %18 %97 = OpIEqual %14 %18 %15 OpNoLine @@ -226,7 +226,7 @@ OpReturn %100 = OpLabel OpBranch %98 %98 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %102 = OpUDiv %9 %96 %18 %103 = OpIEqual %14 %18 %15 OpNoLine @@ -240,7 +240,7 @@ OpReturn %106 = OpLabel OpBranch %104 %104 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %108 = OpUDiv %9 %102 %18 %109 = OpIEqual %14 %18 %15 OpNoLine @@ -254,7 +254,7 @@ OpReturn %112 = OpLabel OpBranch %110 %110 = OpLabel -OpLine %8 31 9 +OpLine %8 33 9 %114 = OpUDiv %9 %108 %18 %115 = OpIEqual %14 %18 %15 OpNoLine @@ -268,7 +268,7 @@ OpReturn %118 = OpLabel OpBranch %116 %116 = OpLabel -OpLine %8 31 4 +OpLine %8 33 4 %120 = OpUDiv %9 %114 %18 OpStore %5 %120 OpNoLine diff --git a/tests/compiletests/ui/image/query/query_lod.rs b/tests/compiletests/ui/image/query/query_lod.rs index 4d764d0514..f5b68e8d07 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-naga 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..38e8f5ac06 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-naga 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..5d9a9072d0 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-naga 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..981afc414c 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-naga 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..9aaba163d6 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-naga 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..a1c87cfca8 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-naga 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..3e4e432a40 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-naga 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..23cf386f8c 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-naga 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..71a493c38f 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-naga 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..6eea70f3b8 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-naga 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..b06674d9cd 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-naga use spirv_std::spirv; From cefb5044b5defe0a9ca421bab2b2cd9c60ac4534 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Tue, 1 Jul 2025 19:57:45 +0200 Subject: [PATCH 6/6] 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..4885538e39 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: naga-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