[Mesa-dev] [PATCH 17/24] i965/fs: Fix multiple ACP interference during copy propagation.
Francisco Jerez
currojerez at riseup.net
Fri May 27 03:46:22 UTC 2016
This is more fallout from cf375a3333e54a01462f192202d609436e5fbec8.
It's possible for multiple ACP entries to interfere with a given VGRF
write, so we need to continue iterating even if an overlapping entry
has already been found.
Cc: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
---
src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
index dbd2a58..682c690 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
@@ -758,10 +758,8 @@ fs_visitor::opt_copy_propagate_local(void *copy_prop_ctx, bblock_t *block,
if (inst->dst.file == VGRF) {
foreach_in_list_safe(acp_entry, entry, &acp[inst->dst.nr % ACP_HASH_SIZE]) {
if (regions_overlap(entry->dst, entry->regs_written,
- inst->dst, inst->regs_written)) {
+ inst->dst, inst->regs_written))
entry->remove();
- break;
- }
}
/* Oops, we only have the chaining hash based on the destination, not
@@ -773,10 +771,8 @@ fs_visitor::opt_copy_propagate_local(void *copy_prop_ctx, bblock_t *block,
* _any_ of the registers that it reads
*/
if (regions_overlap(entry->src, entry->regs_read,
- inst->dst, inst->regs_written)) {
+ inst->dst, inst->regs_written))
entry->remove();
- continue;
- }
}
}
}
--
2.7.3
More information about the mesa-dev
mailing list