Browse Source

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@whitecape.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
tags/17.0-branchpoint
Kenneth Graunke 8 years ago
parent
commit
496693d466
1 changed files with 5 additions and 2 deletions
  1. 5
    2
      src/mesa/drivers/dri/i965/brw_link.cpp

+ 5
- 2
src/mesa/drivers/dri/i965/brw_link.cpp View File

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

Loading…
Cancel
Save