Mesa (master): i965/fs: Mark last used ip for all regs read in the payload

Connor Abbott cwabbott0 at kemper.freedesktop.org
Fri Jul 17 18:16:20 UTC 2015


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

Author: Jordan Justen <jordan.l.justen at intel.com>
Date:   Mon Feb  2 14:23:35 2015 -0800

i965/fs: Mark last used ip for all regs read in the payload

If a source register in the push constant registers uses more than one
register, then we wouldn't update payload_last_use_ip for subsequent
registers.

Unlike most uniform data pushed into registers, the CS gl_LocalInvocationID
data varies per execution channel. Therefore for SIMD16 mode, we have vec16
data in the payload. In this case we then need to mark 2 registers in
payload_last_use_ip as last used by the instruction. There's a similar
situation for the z and w coordinates of gl_FragCoord for fragment shaders,
where it had only happened to work before because of some bogus interferences
which the next commit removes.

(Connor: added bit about gl_FragCoord to commit message)

Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
Reviewed-by: Connor Abbott <connor.w.abbott at intel.com>

---

 src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

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 8e5621d..620fc23 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
@@ -380,7 +380,10 @@ fs_visitor::setup_payload_interference(struct ra_graph *g,
             if (node_nr >= payload_node_count)
                continue;
 
-            payload_last_use_ip[node_nr] = use_ip;
+            for (int j = 0; j < inst->regs_read(i); j++) {
+               payload_last_use_ip[node_nr + j] = use_ip;
+               assert(node_nr + j < payload_node_count);
+            }
          }
       }
 




More information about the mesa-commit mailing list