I am trying to convert a project of mine from wgsl to rust-gpu. I got the basics done, but I have a shader I can't get to compile
This is the entry point
#[spirv(compute(threads(8,8,1)))]pubfn cs_main(#[spirv(global_invocation_id)]gid:UVec3,#[spirv(uniform, descriptor_set = 1, binding = 0)]globals:&SBGlobalData,#[spirv(uniform, descriptor_set = 2, binding = 0)]camera:&SBCameraData,#[spirv(storage_buffer, descriptor_set = 3, binding = 0)]tlas_nodes:&[BvhNode],#[spirv(storage_buffer, descriptor_set = 3, binding = 1)]tlas_instances:&[TlasInstance],#[spirv(storage_buffer, descriptor_set = 3, binding = 2)]blas_nodes:&[BvhNode],#[spirv(storage_buffer, descriptor_set = 3, binding = 3)]blas_tris:&[Triangle],#[spirv(descriptor_set = 3, binding = 4)]rt_out:&Image!(2D, format = rgba16f, sampled = false, arrayed = false, multisampled = false),#[spirv(uniform, descriptor_set = 3, binding = 5)]rt_consts:&RaytracerConsts,#[spirv(uniform, descriptor_set = 3, binding = 6)]mat_consts:&RtLightConsts,#[spirv(storage_buffer, descriptor_set = 3, binding = 7)]rt_materials:&[RtMaterialEntry],#[spirv(descriptor_set = 3, binding = 8)]albedo_sampler:&Sampler,#[spirv(descriptor_set = 4, binding = 0)]albedo_tex_table:&RuntimeArray<Image!(2D,type = f32, sampled = true, arrayed = false, multisampled = false)>,){Expected Behaviour
Shader compiles fine
Example & Steps To Reproduce
This is the errors I am getting
info: latest update on 2026-04-11 for version 1.96.0-nightly (02c7f9bec 2026-04-10)
info: component rust-src is up to date
warn: skipping unavailable component rust-std for target spirv-unknown-vulkan1.2
Compiling shader-bench-rsgpu-user v0.1.0 (F:\rust\ideas\shader-bench\projects\raytracer-rs\.shader-bench\shader-cache\rust-gpu-build\ce910f26f4188d71)
warning: an unknown error occurred
|
= note: spirv-opt failed, leaving as unoptimized
error: [VUID-StandaloneSpirv-OpTypeRuntimeArray-04680] OpVariable, <id> '14[%albedo_tex_table]', is attempting to create memory for an illegal type, OpTypeRuntimeArray.
For Vulkan OpTypeRuntimeArray can only appear as the final member of an OpTypeStruct, thus cannot be instantiated via OpVariable
%albedo_tex_table = OpVariable %_ptr_UniformConstant__runtimearr_94 UniformConstant
Bonus: u32.saturated_sub is not implemented btw
System Info
Windows + custom compiler wrap to compile rust-gpu shader at runtime without having my whole workspace on the specific nightly toolchain
I am trying to convert a project of mine from wgsl to rust-gpu. I got the basics done, but I have a shader I can't get to compile
This is the entry point
Expected Behaviour
Shader compiles fine
Example & Steps To Reproduce
This is the errors I am getting
Bonus:
u32.saturated_subis not implemented btwSystem Info
Windows + custom compiler wrap to compile rust-gpu shader at runtime without having my whole workspace on the specific nightly toolchain