This repository was archived by the owner on Oct 31, 2025. It is now read-only.
Description Opaque types are partially inferred as Input instead of UniformConstants when passing by value resulting in an internal ICE (see Case 2).
Case 1: passing by value w/o inference
#[ spirv( uniform_constant, descriptor_set = 0 , binding = 1 ) ] u_diffuse_map: Cubemap ,
Result: nice!
error: invalid entry param type `spirv_std::Cubemap` for storage class `UniformConstant` (expected `&T`)
--> glace-vk\shader\src\lib.rs:68:80
|
68 | #[spirv(uniform_constant, descriptor_set = 0, binding = 1)] u_diffuse_map: Cubemap,
|
Case 2: passing by value w/ inference
#[ spirv( descriptor_set = 0 , binding = 1 ) ] u_diffuse_map: Cubemap ,
Result: ICE
thread 'rustc' panicked at 'assertion failed: `(left == right)`
left: `UniformConstant`,
right: `Input`', E:\Rust\git\checkouts\rust-gpu-e0a37a82a46176e6\8c89b49\crates\rustc_codegen_spirv\src\codegen_cx\entry.rs:342:13
Case 3: passing by ref w/ inference
#[ spirv( descriptor_set = 0 , binding = 1 ) ] u_diffuse_map: & Cubemap ,
Result: works fine
Reactions are currently unavailable
Opaque types are partially inferred as
Inputinstead ofUniformConstantswhen passing by value resulting in an internal ICE (see Case 2).Case 1: passing by value w/o inference
Result: nice!
Case 2: passing by value w/ inference
Result: ICE
Case 3: passing by ref w/ inference
Result: works fine