aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFrancisco Jerez <[email protected]>2019-12-30 16:34:22 -0800
committerFrancisco Jerez <[email protected]>2020-01-17 13:22:29 -0800
commit0db4455c1f2f3cff76f3c15081c020c0fb229a47 (patch)
tree3bbf540ab66300b6d8a4216fb8b662fbb5888002 /src
parent369aef851dda305ab8e769e3d9e18035a3c0d0df (diff)
intel/fs/gen6: Constrain barycentric source of LINTERP during bank conflict mitigation.
This avoids regressions on SNB due to the bank conflict mitigation pass moving a VGRF-allocated barycentric vector to a misaligned location, which would prevent the PLN instruction from being used. Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/intel/compiler/brw_fs_bank_conflicts.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/intel/compiler/brw_fs_bank_conflicts.cpp b/src/intel/compiler/brw_fs_bank_conflicts.cpp
index e908d0e38fc..f10caf249d0 100644
--- a/src/intel/compiler/brw_fs_bank_conflicts.cpp
+++ b/src/intel/compiler/brw_fs_bank_conflicts.cpp
@@ -567,6 +567,14 @@ namespace {
constrained[p.atom_of_reg(reg_of(inst->src[i]))] = true;
}
+ /* Preserve the original allocation of VGRFs used by the barycentric
+ * source of the LINTERP instruction on Gen6, since pair-aligned
+ * barycentrics allow the PLN instruction to be used.
+ */
+ if (v->devinfo->has_pln && v->devinfo->gen <= 6 &&
+ inst->opcode == FS_OPCODE_LINTERP)
+ constrained[p.atom_of_reg(reg_of(inst->src[0]))] = true;
+
/* The location of the Gen7 MRF hack registers is hard-coded in the
* rest of the compiler back-end. Don't attempt to move them around.
*/