summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_vec4.cpp
diff options
context:
space:
mode:
authorFrancisco Jerez <currojerez@riseup.net>2016-09-01 22:02:00 -0700
committerFrancisco Jerez <currojerez@riseup.net>2016-09-14 14:50:58 -0700
commit3be0d6d040753c62b25077fb6b85ad1f0808b258 (patch)
tree5fe65a40aae419eea34d29ab69bec487cd330a31 /src/mesa/drivers/dri/i965/brw_vec4.cpp
parentb52fefc4d55a4627bf0d59c78ac531603fa08fda (diff)
downloadexternal_mesa3d-3be0d6d040753c62b25077fb6b85ad1f0808b258.zip
external_mesa3d-3be0d6d040753c62b25077fb6b85ad1f0808b258.tar.gz
external_mesa3d-3be0d6d040753c62b25077fb6b85ad1f0808b258.tar.bz2
i965/vec4: Check that the write offsets match when setting dependency controls.
For simplicity just assume that two writes to the same GRF with different sub-GRF offsets will potentially interfere and break the dependency control chain. This is in preparation for adding sub-GRF offset support to the VEC4 IR. Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_vec4.cpp')
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp
index dc484ba..f97de18 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp
@@ -980,6 +980,7 @@ vec4_visitor::opt_set_dependency_control()
int reg = inst->dst.nr + inst->dst.offset / REG_SIZE;
if (inst->dst.file == VGRF || inst->dst.file == FIXED_GRF) {
if (last_grf_write[reg] &&
+ last_grf_write[reg]->dst.offset == inst->dst.offset &&
!(inst->dst.writemask & grf_channels_written[reg])) {
last_grf_write[reg]->no_dd_clear = true;
inst->no_dd_check = true;
@@ -991,6 +992,7 @@ vec4_visitor::opt_set_dependency_control()
grf_channels_written[reg] |= inst->dst.writemask;
} else if (inst->dst.file == MRF) {
if (last_mrf_write[reg] &&
+ last_mrf_write[reg]->dst.offset == inst->dst.offset &&
!(inst->dst.writemask & mrf_channels_written[reg])) {
last_mrf_write[reg]->no_dd_clear = true;
inst->no_dd_check = true;