Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

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

Aberta
#375 3 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
30/100
Tipo de issue
Bug
Clareza
Precisa de esclarecimento
Status de atividade
Estagnada
Stack de tecnologia
rust

Direção de pesquisa

Comece pela função evaluate_function_vector e pela declaração do array basis_eval mostradas no relatório. Reproduza o shader no Vulkan com valores progressivamente maiores de MAXIMUM_ARRAY_SIZE_NO_STD, comparando a saída renderizada e o comportamento do shader gerado. O trabalho estará concluído quando a causa da imagem preta e dos artefatos for identificada e o issue tiver uma correção verificada ou uma limitação documentada.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

bug

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.

Linguagem predominante
Rust
Estrelas
3.4k
Forks
132
Merge médio
1d 58min
PRs com merge (30d)
12

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de Rust-GPU/rust-gpu

Todas as issues de Rust-GPU/rust-gpu

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.