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:
Mary Guillemard 2024-08-21 10:20:21 +02:00 committed by Marge Bot
parent 322227ba17
commit a6496e3a16

View file

@ -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 */