summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2014-10-27 16:50:12 -0700
committerJason Ekstrand <[email protected]>2014-10-27 17:54:10 -0700
commit17d98ae25491d5781356da39658f926ed55f2eb5 (patch)
tree4ceb0843638f59ed2308503a0446a77286d9a960
parent547a7fb4581a86c9ab4062e63ee16a3c818abeb5 (diff)
i965/fs: Don't set dependency hints on instructions with spilled destinations
Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
index 2313af90387..44c74a3d5eb 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
@@ -881,6 +881,14 @@ fs_visitor::spill_reg(int spill_reg)
inst->dst.reg = spill_src.reg;
inst->dst.reg_offset = 0;
+ /* If we're immediately spilling the register, we should not use
+ * destination dependency hints. Doing so will cause the GPU do
+ * try to read and write the register at the same time and may
+ * hang the GPU.
+ */
+ inst->no_dd_clear = false;
+ inst->no_dd_check = false;
+
/* If our write is going to affect just part of the
* inst->regs_written(), then we need to unspill the destination
* since we write back out all of the regs_written().