[Mesa-dev] [PATCH 11/32] i965/fs: Fix lower_load_payload() to take into account non-zero reg_offset.

Francisco Jerez currojerez at riseup.net
Fri Feb 6 06:42:51 PST 2015


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.
---
 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 eccae06..163aa41 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -3070,7 +3070,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 &&
@@ -3119,7 +3119,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;
-- 
2.1.3



More information about the mesa-dev mailing list