Mesa (master): i965: Make unify_interfaces not spread VARYING_BIT_TESS_LEVEL_*.

Kenneth Graunke kwg at kemper.freedesktop.org
Sat Jan 7 00:25:37 UTC 2017


Module: Mesa
Branch: master
Commit: 496693d4664f78dda5d9d9d2e94f2cb6e690a81e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=496693d4664f78dda5d9d9d2e94f2cb6e690a81e

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Tue Dec  6 02:45:52 2016 -0800

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 <kenneth at whitecape.org>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

---

 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];




More information about the mesa-commit mailing list