diff options
author | Francisco Jerez <[email protected]> | 2016-09-01 22:02:00 -0700 |
---|---|---|
committer | Francisco Jerez <[email protected]> | 2016-09-14 14:50:58 -0700 |
commit | 3be0d6d040753c62b25077fb6b85ad1f0808b258 (patch) | |
tree | 5fe65a40aae419eea34d29ab69bec487cd330a31 | |
parent | b52fefc4d55a4627bf0d59c78ac531603fa08fda (diff) |
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 <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vec4.cpp | 2 |
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 dc484ba7cdf..f97de185985 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; |