Skip to content

Commit 9b3afbe

Browse files
committed
target enum: change SpirvBuilder.target from String to SpirvTargetEnv
1 parent a276ee9 commit 9b3afbe

File tree

8 files changed

+20
-20
lines changed

8 files changed

+20
-20
lines changed

crates/spirv-builder/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ clap = ["dep:clap"]
3838
[dependencies]
3939
rustc_codegen_spirv = { workspace = true, optional = true }
4040
rustc_codegen_spirv-types = { workspace = true }
41-
rustc_codegen_spirv-target-specs = { workspace = true }
41+
rustc_codegen_spirv-target-specs = { workspace = true, features = ["serde"] }
4242

4343
memchr = "2.4"
4444
raw-string = "0.3.5"

crates/spirv-builder/src/lib.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,6 @@ pub use rustc_codegen_spirv_target_specs::TARGET_SPEC_DIR_PATH;
9999
pub enum SpirvBuilderError {
100100
#[error("`target` must be set, for example `spirv-unknown-vulkan1.2`")]
101101
MissingTarget,
102-
#[error("Error parsing target: {0}")]
103-
SpirvTargetParseError(#[from] SpirvTargetParseError),
104102
#[error("`path_to_crate` must be set")]
105103
MissingCratePath,
106104
#[error("crate path '{0}' does not exist")]
@@ -378,9 +376,13 @@ pub struct SpirvBuilder {
378376
/// The target triple, eg. `spirv-unknown-vulkan1.2`
379377
#[cfg_attr(
380378
feature = "clap",
381-
clap(long, default_value = "spirv-unknown-vulkan1.2")
379+
clap(
380+
long,
381+
default_value = "spirv-unknown-vulkan1.2",
382+
value_parser = SpirvTargetEnv::parse_triple
383+
)
382384
)]
383-
pub target: Option<String>,
385+
pub target: Option<SpirvTargetEnv>,
384386
/// Cargo features specification for building the shader crate.
385387
#[cfg_attr(feature = "clap", clap(flatten))]
386388
#[serde(flatten)]
@@ -486,7 +488,7 @@ impl Default for SpirvBuilder {
486488
}
487489

488490
impl SpirvBuilder {
489-
pub fn new(path_to_crate: impl AsRef<Path>, target: impl Into<String>) -> Self {
491+
pub fn new(path_to_crate: impl AsRef<Path>, target: impl Into<SpirvTargetEnv>) -> Self {
490492
Self {
491493
path_to_crate: Some(path_to_crate.as_ref().to_owned()),
492494
target: Some(target.into()),
@@ -756,11 +758,7 @@ fn join_checking_for_separators(strings: Vec<impl Borrow<str>>, sep: &str) -> St
756758

757759
// Returns path to the metadata json.
758760
fn invoke_rustc(builder: &SpirvBuilder) -> Result<PathBuf, SpirvBuilderError> {
759-
let target = builder
760-
.target
761-
.as_ref()
762-
.ok_or(SpirvBuilderError::MissingTarget)?;
763-
let target = SpirvTargetEnv::parse_triple(target)?;
761+
let target = builder.target.ok_or(SpirvBuilderError::MissingTarget)?;
764762
let path_to_crate = builder
765763
.path_to_crate
766764
.as_ref()

examples/multibuilder/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
use spirv_builder::{MetadataPrintout, SpirvBuilder};
1+
use spirv_builder::{MetadataPrintout, SpirvBuilder, SpirvTargetEnv};
22

33
fn main() {
44
let result = SpirvBuilder::new(
55
concat!(env!("CARGO_MANIFEST_DIR"), "/../shaders/sky-shader"),
6-
"spirv-unknown-spv1.3",
6+
SpirvTargetEnv::Vulkan_1_3,
77
)
88
.print_metadata(MetadataPrintout::DependencyOnly)
99
.multimodule(true)

examples/runners/ash/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ use std::{
9191

9292
use clap::Parser;
9393

94-
use spirv_builder::{MetadataPrintout, SpirvBuilder};
94+
use spirv_builder::{MetadataPrintout, SpirvBuilder, SpirvTargetEnv};
9595

9696
use shared::ShaderConstants;
9797

@@ -247,7 +247,7 @@ pub fn compile_shaders() -> Vec<SpvFile> {
247247

248248
SpirvBuilder::new(
249249
concat!(env!("CARGO_MANIFEST_DIR"), "/../../shaders/sky-shader"),
250-
"spirv-unknown-vulkan1.1",
250+
SpirvTargetEnv::Vulkan_1_1,
251251
)
252252
.print_metadata(MetadataPrintout::None)
253253
.shader_panic_strategy(spirv_builder::ShaderPanicStrategy::DebugPrintfThenExit {

examples/runners/wgpu/builder/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use spirv_builder::{MetadataPrintout, SpirvBuilder};
1+
use spirv_builder::{MetadataPrintout, SpirvBuilder, SpirvTargetEnv};
22
use std::env;
33
use std::error::Error;
44
use std::fs;
@@ -7,7 +7,7 @@ use std::path::Path;
77
fn build_shader(path_to_crate: &str, codegen_names: bool) -> Result<(), Box<dyn Error>> {
88
let builder_dir = &Path::new(env!("CARGO_MANIFEST_DIR"));
99
let path_to_crate = builder_dir.join(path_to_crate);
10-
let result = SpirvBuilder::new(path_to_crate, "spirv-unknown-vulkan1.1")
10+
let result = SpirvBuilder::new(path_to_crate, SpirvTargetEnv::Vulkan_1_1)
1111
.print_metadata(MetadataPrintout::Full)
1212
.build()?;
1313
if codegen_names {

examples/runners/wgpu/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373

7474
use clap::Parser;
7575
use clap::ValueEnum;
76+
use spirv_builder::SpirvTargetEnv;
7677
use std::borrow::Cow;
7778
use strum::{Display, EnumString};
7879

@@ -152,7 +153,7 @@ fn maybe_watch(
152153

153154
let has_debug_printf = options.force_spirv_passthru;
154155

155-
let builder = SpirvBuilder::new(crate_path, "spirv-unknown-vulkan1.1")
156+
let builder = SpirvBuilder::new(crate_path, SpirvTargetEnv::Vulkan_1_1)
156157
.print_metadata(MetadataPrintout::None)
157158
.shader_panic_strategy(if has_debug_printf {
158159
spirv_builder::ShaderPanicStrategy::DebugPrintfThenExit {

tests/difftests/lib/src/scaffold/compute/wgpu.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::config::Config;
22
use anyhow::Context;
33
use bytemuck::Pod;
44
use futures::executor::block_on;
5-
use spirv_builder::{ModuleResult, SpirvBuilder};
5+
use spirv_builder::{ModuleResult, SpirvBuilder, SpirvTargetEnv};
66
use std::{
77
borrow::Cow,
88
env,
@@ -36,7 +36,7 @@ impl ComputeShader for RustComputeShader {
3636
&self,
3737
device: &wgpu::Device,
3838
) -> anyhow::Result<(wgpu::ShaderModule, Option<String>)> {
39-
let builder = SpirvBuilder::new(&self.path, "spirv-unknown-vulkan1.1")
39+
let builder = SpirvBuilder::new(&self.path, SpirvTargetEnv::Vulkan_1_2)
4040
.print_metadata(spirv_builder::MetadataPrintout::None)
4141
.release(true)
4242
.multimodule(false)

tests/difftests/tests/Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)