aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler
diff options
context:
space:
mode:
authorMark Janes <[email protected]>2020-03-31 16:40:57 -0700
committerMarge Bot <[email protected]>2020-04-01 20:25:55 +0000
commit90a8b458acea4231a921962bee220ba76e6517a2 (patch)
tree316c2a2baf1ed58b4e9200491382b1f5fd221a5d /src/compiler
parente47bf7dadff612694cf61eedbabc7b313766053f (diff)
nir: check shader type before writing to shaderinfo.tess union
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 <[email protected]> Reviewed-by: Caio Marcelo de Oliveira Filho <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4408>
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/nir/nir_gather_info.c4
1 files 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) {