Rust-GPU / Rust-GPU/rust-gpu

Screen goes black (with artifacts) upon declaration of large array.

Abierto
#375 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 have a fairly complex shader that's doing a lot of numerical analysis on the GPU. One function does this:

pub fn evaluate_function_vector(
        &mut self,
        x: [S; 3],
        degree: usize,
        #[cfg(not(feature = "std"))] coefficients: &[S; MAXIMUM_ARRAY_SIZE_NO_STD],
        #[cfg(feature = "std")] coefficients: &[S],
    ) -> S
    {
        #[cfg(feature = "std")]
        let basis_eval = self.eval(x, degree);

        #[cfg(not(feature = "std"))]
        let basis_eval = {
            let mut basis_eval = [S::default(); MAXIMUM_ARRAY_SIZE_NO_STD]; // THIS LINE!!!!!!!!!!!!
            self.eval(x, degree, &mut basis_eval);

            basis_eval
        };

        let mut res = S::default();
        for i in 0..basis_eval.len()
        {
            let v = basis_eval[i];
            let coeff = coefficients[i];
            res += v.clone() * coeff.clone();
        }

        res
    }

I noticed that different sizes of let mut basis_eval = [S::default(); MAXIMUM_ARRAY_SIZE_NO_STD]; // THIS LINE!!!!!!!!!!!! Caused different behaviours. Small sizes would produce the expected image, sizes of about larger than 50 would create a black image with colour noise sprinkled in, as if rendering a corrupted buffer or uninitialized memory.

I am using the latest cargo gpu to compile my shaders afaik.

I am on Garuda Linux, Vulkan version 1.4.321.

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 con la función evaluate_function_vector y la declaración del array basis_eval mostradas en el informe. Reproduce el shader en Vulkan con valores progresivamente mayores de MAXIMUM_ARRAY_SIZE_NO_STD, comparando la salida renderizada y el comportamiento del shader generado. Se considera terminado cuando se haya identificado la causa de la imagen negra y los artefactos, y el issue tenga una corrección verificada o una limitación documentada.

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

Evaluación

Stack tecnológico
rust
Área
computer-graphics
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
30/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.