Skip to content

Commit 0652153

Browse files
authored
No longer require the workaround for the collatz example (#778)
* No longer require the workaround for the collatz example * and remove the `Int8` cap
1 parent d5d0c90 commit 0652153

File tree

3 files changed

+15
-39
lines changed

3 files changed

+15
-39
lines changed
Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,13 @@
1-
use spirv_builder::{Capability, SpirvBuilder};
1+
use spirv_builder::SpirvBuilder;
22
use std::env;
33
use std::error::Error;
44
use std::fs;
55
use std::path::Path;
66

7-
fn build_shader(
8-
path_to_crate: &str,
9-
codegen_names: bool,
10-
caps: &[Capability],
11-
) -> Result<(), Box<dyn Error>> {
7+
fn build_shader(path_to_crate: &str, codegen_names: bool) -> Result<(), Box<dyn Error>> {
128
let builder_dir = &Path::new(env!("CARGO_MANIFEST_DIR"));
139
let path_to_crate = builder_dir.join(path_to_crate);
14-
let mut builder = SpirvBuilder::new(path_to_crate, "spirv-unknown-vulkan1.1");
15-
for &cap in caps {
16-
builder = builder.capability(cap);
17-
}
18-
let result = builder.build()?;
10+
let result = SpirvBuilder::new(path_to_crate, "spirv-unknown-vulkan1.1").build()?;
1911
if codegen_names {
2012
let out_dir = env::var_os("OUT_DIR").unwrap();
2113
let dest_path = Path::new(&out_dir).join("entry_points.rs");
@@ -26,14 +18,9 @@ fn build_shader(
2618
}
2719

2820
fn main() -> Result<(), Box<dyn Error>> {
29-
build_shader("../../../shaders/sky-shader", true, &[])?;
30-
build_shader("../../../shaders/simplest-shader", false, &[])?;
31-
// We need the int8 capability for using `Option`
32-
build_shader(
33-
"../../../shaders/compute-shader",
34-
false,
35-
&[Capability::Int8],
36-
)?;
37-
build_shader("../../../shaders/mouse-shader", false, &[])?;
21+
build_shader("../../../shaders/sky-shader", true)?;
22+
build_shader("../../../shaders/simplest-shader", false)?;
23+
build_shader("../../../shaders/compute-shader", false)?;
24+
build_shader("../../../shaders/mouse-shader", false)?;
3825
Ok(())
3926
}

examples/runners/wgpu/src/lib.rs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ fn maybe_watch(
9090
) -> wgpu::ShaderModuleDescriptorSpirV<'static> {
9191
#[cfg(not(any(target_os = "android", target_arch = "wasm32")))]
9292
{
93-
use spirv_builder::{Capability, CompileResult, MetadataPrintout, SpirvBuilder};
93+
use spirv_builder::{CompileResult, MetadataPrintout, SpirvBuilder};
9494
use std::borrow::Cow;
9595
use std::path::PathBuf;
9696
// Hack: spirv_builder builds into a custom directory if running under cargo, to not
@@ -101,22 +101,19 @@ fn maybe_watch(
101101
// under cargo by setting these environment variables.
102102
std::env::set_var("OUT_DIR", env!("OUT_DIR"));
103103
std::env::set_var("PROFILE", env!("PROFILE"));
104-
let (crate_name, capabilities): (_, &[Capability]) = match shader {
105-
RustGPUShader::Simplest => ("simplest-shader", &[]),
106-
RustGPUShader::Sky => ("sky-shader", &[]),
107-
RustGPUShader::Compute => ("compute-shader", &[Capability::Int8]),
108-
RustGPUShader::Mouse => ("mouse-shader", &[]),
104+
let crate_name = match shader {
105+
RustGPUShader::Simplest => "simplest-shader",
106+
RustGPUShader::Sky => "sky-shader",
107+
RustGPUShader::Compute => "compute-shader",
108+
RustGPUShader::Mouse => "mouse-shader",
109109
};
110110
let manifest_dir = env!("CARGO_MANIFEST_DIR");
111111
let crate_path = [manifest_dir, "..", "..", "shaders", crate_name]
112112
.iter()
113113
.copied()
114114
.collect::<PathBuf>();
115-
let mut builder = SpirvBuilder::new(crate_path, "spirv-unknown-vulkan1.1")
115+
let builder = SpirvBuilder::new(crate_path, "spirv-unknown-vulkan1.1")
116116
.print_metadata(MetadataPrintout::None);
117-
for &cap in capabilities {
118-
builder = builder.capability(cap);
119-
}
120117
let initial_result = if let Some(mut f) = on_watch {
121118
builder
122119
.watch(move |compile_result| f(handle_compile_result(compile_result)))

examples/shaders/compute-shader/src/lib.rs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,5 @@ pub fn main_cs(
4444
#[spirv(storage_buffer, descriptor_set = 0, binding = 0)] prime_indices: &mut [u32],
4545
) {
4646
let index = id.x as usize;
47-
prime_indices[index] = unwrap_or_max(collatz(prime_indices[index]));
48-
}
49-
50-
// Work around https://github.com/EmbarkStudios/rust-gpu/issues/677
51-
fn unwrap_or_max(option: Option<u32>) -> u32 {
52-
match option {
53-
Some(inner) => inner,
54-
None => u32::MAX,
55-
}
47+
prime_indices[index] = collatz(prime_indices[index]).unwrap_or(u32::MAX);
5648
}

0 commit comments

Comments
 (0)