From 9f29d90327e343f5717a98ceb6df2cdbab5d0e0b Mon Sep 17 00:00:00 2001 From: Danylo Piliaiev Date: Wed, 2 Jan 2019 15:55:08 +0200 Subject: [PATCH] glsl/linker: Fix unmatched TCS outputs being reduced to local variable Always match TCS outputs since they are shared by all invocations within the patch and should not be converted to local variables. This is one of the issues found in Downward. Signed-off-by: Danylo Piliaiev Reviewed-by: Ian Romanick Reviewed-by: Timothy Arceri Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104297 --- src/compiler/glsl/linker.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index 08e9fb721f8..d9b9f60067f 100644 --- a/src/compiler/glsl/linker.cpp +++ b/src/compiler/glsl/linker.cpp @@ -3185,6 +3185,12 @@ match_explicit_outputs_to_inputs(gl_linked_shader *producer, const unsigned idx = var->data.location - VARYING_SLOT_VAR0; if (explicit_locations[idx][var->data.location_frac] == NULL) explicit_locations[idx][var->data.location_frac] = var; + + /* Always match TCS outputs. They are shared by all invocations + * within a patch and can be used as shared memory. + */ + if (producer->Stage == MESA_SHADER_TESS_CTRL) + var->data.is_unmatched_generic_inout = 0; } } -- 2.30.2