summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2012-08-12 23:30:18 -0700
committerEric Anholt <eric@anholt.net>2012-08-26 09:58:40 -0700
commit6754ec831e5aaec516db929c8db6e7478a2f5540 (patch)
tree000bf6498431de617bee793b5ec916161d67ae67 /src
parent33ee019422558d50033e02754d0a2a19ed9bf737 (diff)
downloadexternal_mesa3d-6754ec831e5aaec516db929c8db6e7478a2f5540.zip
external_mesa3d-6754ec831e5aaec516db929c8db6e7478a2f5540.tar.gz
external_mesa3d-6754ec831e5aaec516db929c8db6e7478a2f5540.tar.bz2
i965: Fix accumulator_contains() test to also reject swizzles of the dst.
When faced with this sequence: MOV R1, c[1]; MAD R0, R2, R1.x, R1.y; we were concluding that the MOV of R1 set up our accumulator and so we could just use the previous result. Only, it's got R1.xyzw in it instead of the r1.y we're looking for. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=46784 NOTE: This is a candidate for the 8.0 branch.
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs_emit.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c
index 6169f73..177b2b3 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c
@@ -1743,7 +1743,7 @@ accumulator_contains(struct brw_vs_compile *c, struct brw_reg val)
if (val.address_mode != BRW_ADDRESS_DIRECT)
return false;
- if (val.negate || val.abs)
+ if (val.negate || val.abs || val.dw1.bits.swizzle != BRW_SWIZZLE_XYZW)
return false;
switch (prev_insn->header.opcode) {