diff options
author | Kenneth Graunke <[email protected]> | 2016-12-06 02:45:52 -0800 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2017-01-06 15:55:42 -0800 |
commit | 496693d4664f78dda5d9d9d2e94f2cb6e690a81e (patch) | |
tree | 0fdf3734f1b1d973bea6326c57222ec2597c075c /src/mesa | |
parent | a46bd79ee195d699b020a8dde3fda6eab4ece0d4 (diff) |
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 <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_link.cpp | 7 |
1 files 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 d2f2dd6f870..4159756fc5d 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]; |