From 496693d4664f78dda5d9d9d2e94f2cb6e690a81e Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Tue, 6 Dec 2016 02:45:52 -0800 Subject: [PATCH] i965: Make unify_interfaces not spread VARYING_BIT_TESS_LEVEL_*. This is harmless today because gl_TessLevelInner/Outer in the TES is currently treated as system values. However, when we move to treating them as inputs, this would cause a bug: with no TCS present, it would propagate TES reads of VARYING_SLOT_TESS_LEVEL into the VS output VUE map slots. This is totally bogus - those don't even exist in the VS. Signed-off-by: Kenneth Graunke Reviewed-by: Jason Ekstrand --- src/mesa/drivers/dri/i965/brw_link.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_link.cpp b/src/mesa/drivers/dri/i965/brw_link.cpp index d2f2dd6..4159756 100644 --- a/src/mesa/drivers/dri/i965/brw_link.cpp +++ b/src/mesa/drivers/dri/i965/brw_link.cpp @@ -184,9 +184,12 @@ unify_interfaces(struct shader_info **infos) continue; if (prev_info) { - prev_info->outputs_written |= infos[i]->inputs_read; + prev_info->outputs_written |= infos[i]->inputs_read & + ~(VARYING_BIT_TESS_LEVEL_INNER | VARYING_BIT_TESS_LEVEL_OUTER); + infos[i]->inputs_read |= prev_info->outputs_written & + ~(VARYING_BIT_TESS_LEVEL_INNER | VARYING_BIT_TESS_LEVEL_OUTER); + prev_info->patch_outputs_written |= infos[i]->patch_inputs_read; - infos[i]->inputs_read |= prev_info->outputs_written; infos[i]->patch_inputs_read |= prev_info->patch_outputs_written; } prev_info = infos[i]; -- 2.7.4