summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDanylo Piliaiev <[email protected]>2019-01-02 15:55:08 +0200
committerTimothy Arceri <[email protected]>2019-01-09 10:31:13 +1100
commit9f29d90327e343f5717a98ceb6df2cdbab5d0e0b (patch)
tree097197379abc265982caa3dd9da675ab4919f5b9 /src
parentdb3b6b6bca4fcf35f184473c517a3db11303d1e7 (diff)
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 <[email protected]> Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Timothy Arceri <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104297
Diffstat (limited to 'src')
-rw-r--r--src/compiler/glsl/linker.cpp6
1 files changed, 6 insertions, 0 deletions
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;
}
}