diff options
author | Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com> | 2019-11-08 15:58:15 -0800 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2019-11-11 11:44:26 -0800 |
commit | 8608c460d1715f062cb13eb5a8ca06bd430602bb (patch) | |
tree | aada3e242d660a4f438c7ad827ac838dddea554d /src/compiler/spirv | |
parent | 2f66f619c8e7c0cd2c6fa06321c53636a515f130 (diff) | |
download | mesa-8608c460d1715f062cb13eb5a8ca06bd430602bb.tar.gz |
spirv: Don't leak GS initialization to other stages
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 <jason@jlekstrand.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
(cherry picked from commit 087ecd9ca58a84cf85e66323b44140e7304d5f93)
Diffstat (limited to 'src/compiler/spirv')
-rw-r--r-- | src/compiler/spirv/spirv_to_nir.c | 3 |
1 files changed, 2 insertions, 1 deletions
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, |