Skip to content

Commit ad77c80

Browse files
committed
add vulkan1.3, vulkan1.4 and spv1.6 targets
1 parent e8367f0 commit ad77c80

File tree

10 files changed

+106
-40
lines changed

10 files changed

+106
-40
lines changed

.github/workflows/ci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ jobs:
151151
- name: cargo fetch --locked
152152
run: cargo fetch --locked --target ${{ matrix.target }}
153153
- name: compiletest
154-
run: cargo run -p compiletests --release --no-default-features --features "use-installed-tools" -- --target-env vulkan1.1,vulkan1.2,spv1.3
154+
run: cargo run -p compiletests --release --no-default-features --features "use-installed-tools" -- --target-env vulkan1.1,vulkan1.2,vulkan1.3,vulkan1.4
155155

156156
difftest:
157157
name: Difftest

Cargo.lock

Lines changed: 2 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,4 @@ codegen-units = 256
8787
codegen-units = 1
8888

8989
[patch.crates-io]
90-
spirv-tools = { git = "https://github.com/Rust-GPU/spirv-tools-rs", rev = "b9411778af320dfbf16c69b28aec4e8a6b08c402" }
90+
spirv-tools = { git = "https://github.com/Rust-GPU/spirv-tools-rs", rev = "7b32f1fd8fa02ddab87550c5374effe11198bcab" }

crates/rustc_codegen_spirv-target-specs/src/include_str.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ pub const TARGET_SPECS: &[(&str, &str)] = &[
4444
"spirv-unknown-spv1.5.json",
4545
include_str!("../target-specs/spirv-unknown-spv1.5.json"),
4646
),
47+
(
48+
"spirv-unknown-spv1.6.json",
49+
include_str!("../target-specs/spirv-unknown-spv1.6.json"),
50+
),
4751
(
4852
"spirv-unknown-vulkan1.0.json",
4953
include_str!("../target-specs/spirv-unknown-vulkan1.0.json"),
@@ -60,4 +64,12 @@ pub const TARGET_SPECS: &[(&str, &str)] = &[
6064
"spirv-unknown-vulkan1.2.json",
6165
include_str!("../target-specs/spirv-unknown-vulkan1.2.json"),
6266
),
67+
(
68+
"spirv-unknown-vulkan1.3.json",
69+
include_str!("../target-specs/spirv-unknown-vulkan1.3.json"),
70+
),
71+
(
72+
"spirv-unknown-vulkan1.4.json",
73+
include_str!("../target-specs/spirv-unknown-vulkan1.4.json"),
74+
),
6375
];
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"allows-weak-linkage": false,
3+
"arch": "spirv",
4+
"crt-objects-fallback": "false",
5+
"crt-static-allows-dylibs": true,
6+
"data-layout": "e-m:e-p:32:32:32-i64:64-n8:16:32:64",
7+
"dll-prefix": "",
8+
"dll-suffix": ".spv.json",
9+
"dynamic-linking": true,
10+
"emit-debug-gdb-scripts": false,
11+
"env": "spv1.6",
12+
"linker-flavor": "unix",
13+
"linker-is-gnu": false,
14+
"llvm-target": "spirv-unknown-spv1.6",
15+
"main-needs-argc-argv": false,
16+
"metadata": {
17+
"description": null,
18+
"host_tools": null,
19+
"std": null,
20+
"tier": null
21+
},
22+
"os": "unknown",
23+
"panic-strategy": "abort",
24+
"simd-types-indirect": false,
25+
"target-pointer-width": "32"
26+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"allows-weak-linkage": false,
3+
"arch": "spirv",
4+
"crt-objects-fallback": "false",
5+
"crt-static-allows-dylibs": true,
6+
"data-layout": "e-m:e-p:32:32:32-i64:64-n8:16:32:64",
7+
"dll-prefix": "",
8+
"dll-suffix": ".spv.json",
9+
"dynamic-linking": true,
10+
"emit-debug-gdb-scripts": false,
11+
"env": "vulkan1.3",
12+
"linker-flavor": "unix",
13+
"linker-is-gnu": false,
14+
"llvm-target": "spirv-unknown-vulkan1.3",
15+
"main-needs-argc-argv": false,
16+
"metadata": {
17+
"description": null,
18+
"host_tools": null,
19+
"std": null,
20+
"tier": null
21+
},
22+
"os": "unknown",
23+
"panic-strategy": "abort",
24+
"simd-types-indirect": false,
25+
"target-pointer-width": "32"
26+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"allows-weak-linkage": false,
3+
"arch": "spirv",
4+
"crt-objects-fallback": "false",
5+
"crt-static-allows-dylibs": true,
6+
"data-layout": "e-m:e-p:32:32:32-i64:64-n8:16:32:64",
7+
"dll-prefix": "",
8+
"dll-suffix": ".spv.json",
9+
"dynamic-linking": true,
10+
"emit-debug-gdb-scripts": false,
11+
"env": "vulkan1.4",
12+
"linker-flavor": "unix",
13+
"linker-is-gnu": false,
14+
"llvm-target": "spirv-unknown-vulkan1.4",
15+
"main-needs-argc-argv": false,
16+
"metadata": {
17+
"description": null,
18+
"host_tools": null,
19+
"std": null,
20+
"tier": null
21+
},
22+
"os": "unknown",
23+
"panic-strategy": "abort",
24+
"simd-types-indirect": false,
25+
"target-pointer-width": "32"
26+
}

crates/rustc_codegen_spirv/src/target.rs

Lines changed: 6 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ impl SpirvTarget {
1717
| TargetEnv::Universal_1_2
1818
| TargetEnv::Universal_1_3
1919
| TargetEnv::Universal_1_4
20-
| TargetEnv::Universal_1_5 => MemoryModel::Simple,
20+
| TargetEnv::Universal_1_5
21+
| TargetEnv::Universal_1_6 => MemoryModel::Simple,
2122

2223
TargetEnv::OpenGL_4_0
2324
| TargetEnv::OpenGL_4_1
@@ -38,41 +39,14 @@ impl SpirvTarget {
3839
| TargetEnv::Vulkan_1_1
3940
| TargetEnv::WebGPU_0
4041
| TargetEnv::Vulkan_1_1_Spirv_1_4
41-
| TargetEnv::Vulkan_1_2 => MemoryModel::Vulkan,
42+
| TargetEnv::Vulkan_1_2
43+
| TargetEnv::Vulkan_1_3
44+
| TargetEnv::Vulkan_1_4 => MemoryModel::Vulkan,
4245
}
4346
}
4447

4548
pub fn spirv_version(&self) -> (u8, u8) {
46-
#[allow(clippy::match_same_arms)]
47-
match self.env {
48-
TargetEnv::Universal_1_0 => (1, 0),
49-
TargetEnv::Universal_1_1 => (1, 1),
50-
TargetEnv::Universal_1_2 => (1, 2),
51-
TargetEnv::Universal_1_3 => (1, 3),
52-
TargetEnv::Universal_1_4 => (1, 4),
53-
TargetEnv::Universal_1_5 => (1, 5),
54-
55-
TargetEnv::OpenGL_4_0 => (1, 0),
56-
TargetEnv::OpenGL_4_1 => (1, 0),
57-
TargetEnv::OpenGL_4_2 => (1, 0),
58-
TargetEnv::OpenGL_4_3 => (1, 0),
59-
TargetEnv::OpenGL_4_5 => (1, 0),
60-
61-
TargetEnv::OpenCL_1_2 => (1, 0),
62-
TargetEnv::OpenCL_2_0 => (1, 0),
63-
TargetEnv::OpenCL_2_1 => (1, 0),
64-
TargetEnv::OpenCL_2_2 => (1, 2),
65-
TargetEnv::OpenCLEmbedded_1_2 => (1, 0),
66-
TargetEnv::OpenCLEmbedded_2_0 => (1, 0),
67-
TargetEnv::OpenCLEmbedded_2_1 => (1, 0),
68-
TargetEnv::OpenCLEmbedded_2_2 => (1, 2),
69-
70-
TargetEnv::Vulkan_1_0 => (1, 0),
71-
TargetEnv::Vulkan_1_1 => (1, 3),
72-
TargetEnv::WebGPU_0 => (1, 3),
73-
TargetEnv::Vulkan_1_1_Spirv_1_4 => (1, 4),
74-
TargetEnv::Vulkan_1_2 => (1, 5),
75-
}
49+
self.env.spirv_version()
7650
}
7751

7852
fn init_target_opts(&self) -> TargetOptions {

crates/spirv-builder/src/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -782,9 +782,10 @@ fn invoke_rustc(builder: &SpirvBuilder) -> Result<PathBuf, SpirvBuilderError> {
782782
//
783783
// FIXME(eddyb) consider moving this list, or even `target-specs`,
784784
// into `rustc_codegen_spirv_types`'s code/source.
785-
"spv1.0" | "spv1.1" | "spv1.2" | "spv1.3" | "spv1.4" | "spv1.5" => {}
785+
"spv1.0" | "spv1.1" | "spv1.2" | "spv1.3" | "spv1.4" | "spv1.5" | "spv1.6" => {}
786786
"opengl4.0" | "opengl4.1" | "opengl4.2" | "opengl4.3" | "opengl4.5" => {}
787-
"vulkan1.0" | "vulkan1.1" | "vulkan1.1spv1.4" | "vulkan1.2" => {}
787+
"vulkan1.0" | "vulkan1.1" | "vulkan1.1spv1.4" | "vulkan1.2" | "vulkan1.3"
788+
| "vulkan1.4" => {}
788789

789790
_ => {
790791
return Err(SpirvBuilderError::UnsupportedSpirvTargetEnv {

docs/src/platform-support.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,16 @@ The `rust-gpu` project currently supports a limited number of platforms and grap
3333
- `spirv-unknown-spv1.3`
3434
- `spirv-unknown-spv1.4`
3535
- `spirv-unknown-spv1.5`
36+
- `spirv-unknown-spv1.6`
3637

3738
### Vulkan Targets
3839

3940
- `spirv-unknown-vulkan1.0`
4041
- `spirv-unknown-vulkan1.1`
4142
- `spirv-unknown-vulkan1.1spv1.4`
4243
- `spirv-unknown-vulkan1.2`
44+
- `spirv-unknown-vulkan1.3`
45+
- `spirv-unknown-vulkan1.4`
4346

4447
### WebGPU Targets
4548

0 commit comments

Comments
 (0)