From 989cfb60359968677991abb0c7317b58a5e70dc7 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Tue, 7 May 2024 10:11:46 +0200 Subject: [PATCH] v3d: fix array_len when precompiling outputs for shader-db MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since 68c54c994a17a glsl_get_length returns the number of vector elements for vectors, which is not what we want here. This was causing us to blow up the number of output variables during shader-db runs, causing all kinds of problems. Reviewed-by: Alejandro PiƱeiro Part-of: --- src/gallium/drivers/v3d/v3d_program.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/v3d/v3d_program.c b/src/gallium/drivers/v3d/v3d_program.c index 396b512af5d..45cc1c5bb6c 100644 --- a/src/gallium/drivers/v3d/v3d_program.c +++ b/src/gallium/drivers/v3d/v3d_program.c @@ -196,7 +196,8 @@ precompile_all_outputs(nir_shader *s, uint8_t *num_outputs) { nir_foreach_shader_out_variable(var, s) { - const int array_len = MAX2(glsl_get_length(var->type), 1); + const int array_len = glsl_type_is_vector_or_scalar(var->type) ? + 1 : MAX2(glsl_get_length(var->type), 1); for (int j = 0; j < array_len; j++) { const int slot = var->data.location + j; const int num_components =