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
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev