entry point fn with too many params fails
Nessuno ha ancora preso questa issue.
- Lingua principale
- Rust
- Stelle
- 3.4k
- Fork
- 125
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
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)))]
pub fn 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
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo la build rust-gpu segnalata con l’entry point cs_main fornito e il relativo parametro RuntimeArray. Ispeziona lo SPIR-V generato intorno a albedo_tex_table e l’errore Vulkan OpTypeRuntimeArray; il lavoro è completato quando lo shader viene compilato senza creare una OpVariable illegale per l’array runtime.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- rust
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100