Mesa (master): i965/fs: Fix lower_load_payload() to take into account non-zero reg_offset.

Francisco Jerez currojerez at kemper.freedesktop.org
Mon Feb 23 18:55:50 UTC 2015


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

Author: Francisco Jerez <currojerez at riseup.net>
Date:   Fri Feb  6 15:06:05 2015 +0200

i965/fs: Fix lower_load_payload() to take into account non-zero reg_offset.

Fixes metadata guess when instructions in the program specify a
destination register with non-zero reg_offset and when the payload of
a LOAD_PAYLOAD spans several registers.

Reviewed-by: Jason Ekstrand <jason.ekstrand at intel.com>

---

 src/mesa/drivers/dri/i965/brw_fs.cpp |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index e396fbc..4fa6790 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -3127,7 +3127,7 @@ fs_visitor::lower_load_payload()
 
    foreach_block_and_inst_safe (block, fs_inst, inst, cfg) {
       if (inst->dst.file == GRF) {
-         const int dst_reg = vgrf_to_reg[inst->dst.reg];
+         const int dst_reg = vgrf_to_reg[inst->dst.reg] + inst->dst.reg_offset;
          bool force_sechalf = inst->force_sechalf &&
                               !inst->force_writemask_all;
          bool toggle_sechalf = inst->dst.width == 16 &&
@@ -3176,7 +3176,7 @@ fs_visitor::lower_load_payload()
                }
 
                if (dst.file == GRF) {
-                  const int dst_reg = vgrf_to_reg[dst.reg];
+                  const int dst_reg = vgrf_to_reg[dst.reg] + dst.reg_offset;
                   const bool force_writemask = mov->force_writemask_all;
                   metadata[dst_reg].force_writemask_all = force_writemask;
                   metadata[dst_reg].force_sechalf = mov->force_sechalf;




More information about the mesa-commit mailing list