From dcb61d3da545da96c8f6a03eaa4622426bbe27c6 Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Wed, 4 Sep 2024 15:59:45 +0200 Subject: [PATCH] etnaviv: validate number of VS outputs against GPU limit All user defined varyings, the position output and possibly the point size output need to fit into the GPU specific maximum number of VS outputs. Check this limitation. Signed-off-by: Lucas Stach Reviewed-by: Christian Gmeiner Part-of: --- src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c index 773fdf67651..b1e0af0cd16 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c +++ b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c @@ -1063,6 +1063,18 @@ etna_compile_check_limits(struct etna_shader_variant *v) return false; } + if (v->stage == MESA_SHADER_VERTEX) { + int num_outputs = v->vs_pointsize_out_reg >= 0 ? 2 : 1; + + num_outputs += v->outfile.num_reg; + + if (num_outputs > specs->max_vs_outputs) { + DBG("Number of VS outputs (%zu) exceeds maximum %d", + v->outfile.num_reg, specs->max_vs_outputs); + return false; + } + } + return true; }