intel/fs/vec4: add missing dependency in write-on-write fixed GRFs
If we load constant data using pull constant SENDS, and we later load that register with some other data, we can end up in a situation where we don't track the initial fixed register write and therefore end up using uninitialized registers. This tracks write-on-write of fixed GRFs like we do for normal virtual GRFs. v2: Fix post_alloc_reg case (Jason) Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Cc: <mesa-stable@lists.freedesktop.org> Reviewed-by: Francisco Jerez <currojerez@riseup.net> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9667>
This commit is contained in:

committed by
Marge Bot

parent
3c72c86742
commit
8b6d22109f
@@ -1198,9 +1198,12 @@ fs_instruction_scheduler::calculate_deps()
|
||||
}
|
||||
} else if (inst->dst.file == FIXED_GRF) {
|
||||
if (post_reg_alloc) {
|
||||
for (unsigned r = 0; r < regs_written(inst); r++)
|
||||
for (unsigned r = 0; r < regs_written(inst); r++) {
|
||||
add_dep(last_grf_write[inst->dst.nr + r], n);
|
||||
last_grf_write[inst->dst.nr + r] = n;
|
||||
}
|
||||
} else {
|
||||
add_dep(last_fixed_grf_write, n);
|
||||
last_fixed_grf_write = n;
|
||||
}
|
||||
} else if (inst->dst.is_accumulator()) {
|
||||
@@ -1428,6 +1431,7 @@ vec4_instruction_scheduler::calculate_deps()
|
||||
add_dep(last_mrf_write[inst->dst.nr], n);
|
||||
last_mrf_write[inst->dst.nr] = n;
|
||||
} else if (inst->dst.file == FIXED_GRF) {
|
||||
add_dep(last_fixed_grf_write, n);
|
||||
last_fixed_grf_write = n;
|
||||
} else if (inst->dst.is_accumulator()) {
|
||||
add_dep(last_accumulator_write, n);
|
||||
|
Reference in New Issue
Block a user