Rust-GPU / Rust-GPU/rust-gpu

entry point fn with too many params fails

Abierto
#608 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug
Lenguaje dominante
Rust
Estrellas
3.4k
Forks
126
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza reproduciendo la compilación reportada de rust-gpu con el punto de entrada cs_main proporcionado y su parámetro RuntimeArray. Inspecciona el SPIR-V generado alrededor de albedo_tex_table y el error de Vulkan OpTypeRuntimeArray; se considera completado cuando el shader compila sin crear una OpVariable ilegal para el array de tiempo de ejecución.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
rust
Área
compilers
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.