mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 04:30:10 +01:00
panvk: Properly propagate helper invocations requirement
Previous changes of the helper invocation pass fixed missing conditional
control flow tracking but this is not enough.
Propagation of the dependency chain also need to handle value outside of
direct predecessors.
This fix "dEQP-VK.graphicsfuzz.cov-nested-loops-sample-opposite-corners"
for real this time.
Fixes: 33fef27356 ("bi: Do not mark tex ops as skip when dest is used by control flow")
Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30754>
This commit is contained in:
parent
322227ba17
commit
a6496e3a16
1 changed files with 6 additions and 17 deletions
|
|
@ -269,23 +269,12 @@ bi_analyze_helper_requirements(bi_context *ctx)
|
|||
}
|
||||
|
||||
/* Propagate that up */
|
||||
u_worklist worklist;
|
||||
bi_worklist_init(ctx, &worklist);
|
||||
|
||||
bi_foreach_block(ctx, block) {
|
||||
bi_worklist_push_tail(&worklist, block);
|
||||
}
|
||||
|
||||
while (!u_worklist_is_empty(&worklist)) {
|
||||
bi_block *blk = bi_worklist_pop_tail(&worklist);
|
||||
|
||||
if (bi_helper_block_update(deps, blk)) {
|
||||
bi_foreach_predecessor(blk, pred)
|
||||
bi_worklist_push_head(&worklist, *pred);
|
||||
}
|
||||
}
|
||||
|
||||
u_worklist_fini(&worklist);
|
||||
bool progress;
|
||||
do {
|
||||
progress = false;
|
||||
bi_foreach_block_rev(ctx, block)
|
||||
progress |= bi_helper_block_update(deps, block);
|
||||
} while (progress);
|
||||
|
||||
/* Set the execute bits */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue