From 0a19ae1e98c2f842e5b9f01d13421cdfb6294b1c Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Tue, 24 May 2022 14:35:19 +1000 Subject: [PATCH] etnaviv: assert if etna_shader_io_file reg overrun This code depends on optimisations eliminating all but a single write to outputs. assert if we are about to overrun the array i.e an output was possibly written to twice. See: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6536 Reviewed-by: Christian Gmeiner Part-of: --- src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c index bd6ef14ba40..7f50fbeae4f 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c +++ b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c @@ -123,6 +123,7 @@ etna_emit_output(struct etna_compile *c, nir_variable *var, struct etna_inst_src c->variant->vs_pointsize_out_reg = src.reg; break; default: + assert(sf->num_reg < ETNA_NUM_INPUTS); sf->reg[sf->num_reg].reg = src.reg; sf->reg[sf->num_reg].slot = var->data.location; sf->reg[sf->num_reg].num_components = glsl_get_components(var->type);