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
84a1a2578d ("compiler: pack shader_info from 160 bytes to 96 bytes")
made this issue visible.

Fixes: cf2257069c ("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 087ecd9ca5)
This commit is contained in:
Caio Marcelo de Oliveira Filho 2019-11-08 15:58:15 -08:00 committed by Dylan Baker
parent 2b89e68a2e
commit 6e98a923cb

View file

@ -4647,7 +4647,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;
b->specializations = spec;
b->num_specializations = num_spec;