aco: do not flag all blocks WQM to ensure we enter all nested loops in WQM
This should no longer be necessary since the mark_block_wqm() we use to
flag break conditions as WQM now adds block to the worklist. With them
added to the worklist, get_block_needs() will add WQM to block_needs.
Adding WQM to block_needs here without adding the block to the worklist
(like we do here) can cause issues because it does not ensure that the
predecessors' branches are in WQM (needed for it to be possible to
transition to WQM in the block). This happened in an Overwatch shader.
No fossil-db changes.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Fixes: 661922f6ac
("aco: add block to worklist in mark_block_wqm()")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4066
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8446>
This commit is contained in:
parent
9f9441c231
commit
f0074a6f05
|
@ -152,8 +152,6 @@ void get_block_needs(wqm_ctx &ctx, exec_ctx &exec_ctx, Block* block)
|
|||
* the conditions might be computed outside the nested CF */
|
||||
if (ctx.program->blocks[block_idx].kind & block_kind_break)
|
||||
mark_block_wqm(ctx, block_idx);
|
||||
/* flag all blocks as WQM to ensure we enter all (nested) loops in WQM */
|
||||
exec_ctx.info[block_idx].block_needs |= WQM;
|
||||
block_idx++;
|
||||
}
|
||||
} else if (ctx.loop && !ctx.wqm) {
|
||||
|
|
Loading…
Reference in New Issue