summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2015-09-09 20:23:04 -0700
committerKenneth Graunke <[email protected]>2015-09-26 11:59:56 -0700
commit39d4b553a87228fd93bfdd7100d0687e55aec4b7 (patch)
treea98d13e59649b18b5fc46fed07dcda1f66e6db06 /src
parent511a86383b9d6490788a15cca2df791c6d63bfd7 (diff)
i965: Fix BRW_VARYING_SLOT_PAD handling in the scalar VS backend.
We can't just break for padding slots. Instead, treat them like unwritten output variables, so we handle flushing and incrementing urb_offset correctly. Paul introduced the concept of padding slots back in 2011, but we've never actually used them for anything. So it's unsurprising that the scalar VS backend didn't handle them quite right. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Chris Forbes <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_visitor.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
index 5bf6449fa13..47d7ae4f57c 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
@@ -939,9 +939,6 @@ fs_visitor::emit_urb_writes()
unreachable("unexpected scalar vs output");
break;
- case BRW_VARYING_SLOT_PAD:
- break;
-
default:
/* gl_Position is always in the vue map, but isn't always written by
* the shader. Other varyings (clip distances) get added to the vue
@@ -951,7 +948,8 @@ fs_visitor::emit_urb_writes()
* slot for writing we flush a mlen 5 urb write, otherwise we just
* advance the urb_offset.
*/
- if (this->outputs[varying].file == BAD_FILE) {
+ if (varying == BRW_VARYING_SLOT_PAD ||
+ this->outputs[varying].file == BAD_FILE) {
if (length > 0)
flush = true;
else