From 90a8b458acea4231a921962bee220ba76e6517a2 Mon Sep 17 00:00:00 2001 From: Mark Janes Date: Tue, 31 Mar 2020 16:40:57 -0700 Subject: [PATCH] nir: check shader type before writing to shaderinfo.tess union MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit If the shader is not a tesselation shader, then writing to the tess member of the shaderinfo union will overwrite other members and crash. Closes: #2722 Fixes: f1dd81ae104 ("nir: Collect if shader uses cross-invocation or indirect I/O.") Reviewed-by: Timur Kristóf Reviewed-by: Caio Marcelo de Oliveira Filho Reviewed-by: Jason Ekstrand Part-of: --- src/compiler/nir/nir_gather_info.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c index d902fb7b69e..ef5d053c266 100644 --- a/src/compiler/nir/nir_gather_info.c +++ b/src/compiler/nir/nir_gather_info.c @@ -106,7 +106,7 @@ set_io_mask(nir_shader *shader, nir_variable *var, int offset, int len, shader->info.inputs_read_indirectly |= bitfield; } - if (cross_invocation) + if (cross_invocation && shader->info.stage == MESA_SHADER_TESS_CTRL) shader->info.tess.tcs_cross_invocation_inputs_read |= bitfield; if (shader->info.stage == MESA_SHADER_FRAGMENT) { @@ -125,7 +125,7 @@ set_io_mask(nir_shader *shader, nir_variable *var, int offset, int len, shader->info.outputs_accessed_indirectly |= bitfield; } - if (cross_invocation) + if (cross_invocation && shader->info.stage == MESA_SHADER_TESS_CTRL) shader->info.tess.tcs_cross_invocation_outputs_read |= bitfield; } else { if (is_patch_generic) { -- 2.30.2