From bad47e9eb4754bd99691a15868a5f82b76fb1529 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Wed, 4 Jun 2025 17:52:28 +0200 Subject: [PATCH 1/3] up version to what is published on crates --- Cargo.toml | 4 ++-- spirv-tools-sys/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 48bde95..3f3c620 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ members = [ name = "spirv-tools" description = "Wrapper crate for SPIRV-Tools" repository = "https://github.com/rust-gpu/spirv-tools-rs" -version = "0.10.0" +version = "0.11.0" authors = ["Embark "] edition = "2021" license = "MIT OR Apache-2.0" @@ -31,7 +31,7 @@ use-installed-tools = [ use-compiled-tools = ["spirv-tools-sys/use-compiled-tools"] [dependencies] -spirv-tools-sys = { version = "0.8", path = "./spirv-tools-sys", default-features = false } +spirv-tools-sys = { version = "0.9", path = "./spirv-tools-sys", default-features = false } # Used for parsing output when running binaries memchr = { version = "2.3", optional = true } tempfile = { version = "3.1", optional = true } diff --git a/spirv-tools-sys/Cargo.toml b/spirv-tools-sys/Cargo.toml index 3315e74..d399447 100644 --- a/spirv-tools-sys/Cargo.toml +++ b/spirv-tools-sys/Cargo.toml @@ -2,7 +2,7 @@ name = "spirv-tools-sys" description = "Wrapper crate for SPIRV-Tools" repository = "https://github.com/rust-gpu/spirv-tools-rs" -version = "0.8.0" +version = "0.9.0" authors = ["Embark "] edition = "2021" # This is the same license for the underlying SPIRV-Tools code From 14034752eb0cbd2f491bc4a273bb737077e1f1e3 Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Wed, 4 Jun 2025 17:45:20 +0200 Subject: [PATCH 2/3] add vulkan1.3, vulkan1.4 and spv1.6 `TargetEnv` --- spirv-tools-sys/src/shared.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/spirv-tools-sys/src/shared.rs b/spirv-tools-sys/src/shared.rs index 7ed3d41..d47463f 100644 --- a/spirv-tools-sys/src/shared.rs +++ b/spirv-tools-sys/src/shared.rs @@ -68,6 +68,12 @@ pub enum TargetEnv { Universal_1_5, /// Vulkan 1.2 latest revision. Vulkan_1_2, + /// SPIR-V 1.6 latest revision, no other restrictions. + Universal_1_6, + /// Vulkan 1.3 latest revision. + Vulkan_1_3, + /// Vulkan 1.4 latest revision. + Vulkan_1_4, } impl Default for TargetEnv { @@ -86,12 +92,15 @@ impl std::str::FromStr for TargetEnv { "vulkan1.0" => Self::Vulkan_1_0, "vulkan1.1" => Self::Vulkan_1_1, "vulkan1.2" => Self::Vulkan_1_2, + "vulkan1.3" => Self::Vulkan_1_3, + "vulkan1.4" => Self::Vulkan_1_4, "spv1.0" => Self::Universal_1_0, "spv1.1" => Self::Universal_1_1, "spv1.2" => Self::Universal_1_2, "spv1.3" => Self::Universal_1_3, "spv1.4" => Self::Universal_1_4, "spv1.5" => Self::Universal_1_5, + "spv1.6" => Self::Universal_1_6, "opencl1.2embedded" => Self::OpenCLEmbedded_1_2, "opencl1.2" => Self::OpenCL_1_2, "opencl2.0embedded" => Self::OpenCLEmbedded_2_0, @@ -118,12 +127,15 @@ impl fmt::Display for TargetEnv { Self::Vulkan_1_0 => "vulkan1.0", Self::Vulkan_1_1 => "vulkan1.1", Self::Vulkan_1_2 => "vulkan1.2", + Self::Vulkan_1_3 => "vulkan1.3", + Self::Vulkan_1_4 => "vulkan1.4", Self::Universal_1_0 => "spv1.0", Self::Universal_1_1 => "spv1.1", Self::Universal_1_2 => "spv1.2", Self::Universal_1_3 => "spv1.3", Self::Universal_1_4 => "spv1.4", Self::Universal_1_5 => "spv1.5", + Self::Universal_1_6 => "spv1.6", Self::OpenCLEmbedded_1_2 => "opencl1.2embedded", Self::OpenCL_1_2 => "opencl1.2", Self::OpenCLEmbedded_2_0 => "opencl2.0embedded", From 7b32f1fd8fa02ddab87550c5374effe11198bcab Mon Sep 17 00:00:00 2001 From: Firestar99 Date: Wed, 4 Jun 2025 18:08:54 +0200 Subject: [PATCH 3/3] add `TargetEnv::spirv_version` from rust-gpu --- spirv-tools-sys/src/shared.rs | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/spirv-tools-sys/src/shared.rs b/spirv-tools-sys/src/shared.rs index d47463f..54b6927 100644 --- a/spirv-tools-sys/src/shared.rs +++ b/spirv-tools-sys/src/shared.rs @@ -76,6 +76,48 @@ pub enum TargetEnv { Vulkan_1_4, } +impl TargetEnv { + /// Returns the `(mayor, minor)` version of spv this enum variant must at least support + /// + /// The spirv versions for vulkan targets have been pulled from the source of the vulkan spec: + /// + pub fn spirv_version(&self) -> (u8, u8) { + #[allow(clippy::match_same_arms)] + match self { + TargetEnv::Universal_1_0 => (1, 0), + TargetEnv::Universal_1_1 => (1, 1), + TargetEnv::Universal_1_2 => (1, 2), + TargetEnv::Universal_1_3 => (1, 3), + TargetEnv::Universal_1_4 => (1, 4), + TargetEnv::Universal_1_5 => (1, 5), + TargetEnv::Universal_1_6 => (1, 6), + + TargetEnv::OpenGL_4_0 => (1, 0), + TargetEnv::OpenGL_4_1 => (1, 0), + TargetEnv::OpenGL_4_2 => (1, 0), + TargetEnv::OpenGL_4_3 => (1, 0), + TargetEnv::OpenGL_4_5 => (1, 0), + + TargetEnv::OpenCL_1_2 => (1, 0), + TargetEnv::OpenCL_2_0 => (1, 0), + TargetEnv::OpenCL_2_1 => (1, 0), + TargetEnv::OpenCL_2_2 => (1, 2), + TargetEnv::OpenCLEmbedded_1_2 => (1, 0), + TargetEnv::OpenCLEmbedded_2_0 => (1, 0), + TargetEnv::OpenCLEmbedded_2_1 => (1, 0), + TargetEnv::OpenCLEmbedded_2_2 => (1, 2), + + TargetEnv::Vulkan_1_0 => (1, 0), + TargetEnv::Vulkan_1_1 => (1, 3), + TargetEnv::WebGPU_0 => (1, 3), + TargetEnv::Vulkan_1_1_Spirv_1_4 => (1, 4), + TargetEnv::Vulkan_1_2 => (1, 5), + TargetEnv::Vulkan_1_3 => (1, 6), + TargetEnv::Vulkan_1_4 => (1, 6), + } + } +} + impl Default for TargetEnv { fn default() -> Self { // This is the default target environment for (AFAICT) all spirv-tools