From 087ecd9ca58a84cf85e66323b44140e7304d5f93 Mon Sep 17 00:00:00 2001 From: Caio Marcelo de Oliveira Filho Date: Fri, 8 Nov 2019 15:58:15 -0800 Subject: [PATCH 1/1] spirv: Don't leak GS initialization to other stages MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The stage specific fields of shader_info are in an union. We've likely been lucky that this value was either overwritten or ignored by other stages. The recent change in shader_info layout in commit 84a1a2578da ("compiler: pack shader_info from 160 bytes to 96 bytes") made this issue visible. Fixes: cf2257069cb ("nir/spirv: Set a default number of invocations for geometry shaders") Reviewed-by: Jason Ekstrand Reviewed-by: Marek Olšák --- src/compiler/spirv/spirv_to_nir.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index 4c1da666261..eeca640ba49 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -5152,7 +5152,8 @@ spirv_to_nir(const uint32_t *words, size_t word_count, } /* Set shader info defaults */ - b->shader->info.gs.invocations = 1; + if (stage == MESA_SHADER_GEOMETRY) + b->shader->info.gs.invocations = 1; /* Parse rounding mode execution modes. This has to happen earlier than * other changes in the execution modes since they can affect, for example, -- 2.30.2