aco: enable WQM if demote is used with maximal reconvergence

If otherwise no helper lanes are required by the shader, then demote
behaves like discard and immediately terminates the invocations.
With maximal reconvergence, however, we need to ensure that helper lanes
are not terminated unless the entire quad was demoted.
In order to fix this, generally enable helper lanes in this unlikely
corner case and avoid a major refactor.

Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27277>
This commit is contained in:
Daniel Schürmann
2024-02-06 22:05:56 +01:00
committed by Marge Bot
parent 6588f5a123
commit 2649717a36
@@ -8913,6 +8913,11 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr)
ctx->block->kind |= block_kind_uses_discard;
ctx->program->needs_exact = true;
/* Enable WQM in order to prevent helper lanes from getting terminated. */
if (ctx->shader->info.maximally_reconverges)
ctx->program->needs_wqm = true;
break;
}
case nir_intrinsic_terminate: