[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