Mesa (master): i965/fs: Don' t set dependency hints on instructions with spilled destinations

Jason Ekstrand jekstrand at kemper.freedesktop.org
Tue Oct 28 00:54:20 UTC 2014


Module: Mesa
Branch: master
Commit: 17d98ae25491d5781356da39658f926ed55f2eb5
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=17d98ae25491d5781356da39658f926ed55f2eb5

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Mon Oct 27 16:50:12 2014 -0700

i965/fs: Don't set dependency hints on instructions with spilled destinations

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp |    8 ++++++++
 1 file changed, 8 insertions(+)

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 2313af9..44c74a3 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().




More information about the mesa-commit mailing list