Skip to content

Commit e9830da

Browse files
committed
add TargetEnv::spirv_version from rust-gpu
1 parent bb6e09e commit e9830da

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

spirv-tools-sys/src/shared.rs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,48 @@ pub enum TargetEnv {
7676
Vulkan_1_4,
7777
}
7878

79+
impl TargetEnv {
80+
/// Returns the `(mayor, minor)` version of spv this enum variant must at least support
81+
///
82+
/// The spirv versions for vulkan targets have been pulled from the source of the vulkan spec:
83+
/// <https://github.com/KhronosGroup/Vulkan-Docs/blob/main/appendices/spirvenv.adoc?plain=1#L21>
84+
pub fn spirv_version(&self) -> (u8, u8) {
85+
#[allow(clippy::match_same_arms)]
86+
match self {
87+
TargetEnv::Universal_1_0 => (1, 0),
88+
TargetEnv::Universal_1_1 => (1, 1),
89+
TargetEnv::Universal_1_2 => (1, 2),
90+
TargetEnv::Universal_1_3 => (1, 3),
91+
TargetEnv::Universal_1_4 => (1, 4),
92+
TargetEnv::Universal_1_5 => (1, 5),
93+
TargetEnv::Universal_1_6 => (1, 6),
94+
95+
TargetEnv::OpenGL_4_0 => (1, 0),
96+
TargetEnv::OpenGL_4_1 => (1, 0),
97+
TargetEnv::OpenGL_4_2 => (1, 0),
98+
TargetEnv::OpenGL_4_3 => (1, 0),
99+
TargetEnv::OpenGL_4_5 => (1, 0),
100+
101+
TargetEnv::OpenCL_1_2 => (1, 0),
102+
TargetEnv::OpenCL_2_0 => (1, 0),
103+
TargetEnv::OpenCL_2_1 => (1, 0),
104+
TargetEnv::OpenCL_2_2 => (1, 2),
105+
TargetEnv::OpenCLEmbedded_1_2 => (1, 0),
106+
TargetEnv::OpenCLEmbedded_2_0 => (1, 0),
107+
TargetEnv::OpenCLEmbedded_2_1 => (1, 0),
108+
TargetEnv::OpenCLEmbedded_2_2 => (1, 2),
109+
110+
TargetEnv::Vulkan_1_0 => (1, 0),
111+
TargetEnv::Vulkan_1_1 => (1, 3),
112+
TargetEnv::WebGPU_0 => (1, 3),
113+
TargetEnv::Vulkan_1_1_Spirv_1_4 => (1, 4),
114+
TargetEnv::Vulkan_1_2 => (1, 5),
115+
TargetEnv::Vulkan_1_3 => (1, 6),
116+
TargetEnv::Vulkan_1_4 => (1, 6),
117+
}
118+
}
119+
}
120+
79121
impl Default for TargetEnv {
80122
fn default() -> Self {
81123
// This is the default target environment for (AFAICT) all spirv-tools

0 commit comments

Comments
 (0)