From 3b10547e67d572a39db44e2b860b93eec6819292 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Thu, 2 Nov 2023 16:45:29 +0100 Subject: [PATCH] aco: enable helper lanes if shader->info.fs.require_full_quads This enables helper invocations also for lowered quad group operations. Reviewed-by: Georg Lehmann Part-of: --- src/amd/compiler/aco_instruction_selection.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 684b65b7f40..670ada11ae4 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -174,6 +174,7 @@ set_wqm(isel_context* ctx, bool enable_helpers = false) if (ctx->program->stage == fragment_fs) { ctx->wqm_block_idx = ctx->block->index; ctx->wqm_instruction_idx = ctx->block->instructions.size(); + enable_helpers |= ctx->shader->info.fs.require_full_quads; ctx->program->needs_wqm |= enable_helpers; } } @@ -8447,7 +8448,7 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr) Temp src = get_ssa_temp(ctx, instr->src[0].ssa); src = bld.sop2(Builder::s_and, bld.def(bld.lm), bld.def(s1, scc), src, Operand(exec, bld.lm)); bld.sop1(Builder::s_wqm, Definition(get_ssa_temp(ctx, &instr->def)), bld.def(s1, scc), src); - set_wqm(ctx, true); + set_wqm(ctx); break; } case nir_intrinsic_quad_vote_all: { @@ -8456,7 +8457,7 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr) src = bld.sop2(Builder::s_and, bld.def(bld.lm), bld.def(s1, scc), src, Operand(exec, bld.lm)); src = bld.sop1(Builder::s_wqm, bld.def(bld.lm), bld.def(s1, scc), src); bld.sop1(Builder::s_not, Definition(get_ssa_temp(ctx, &instr->def)), bld.def(s1, scc), src); - set_wqm(ctx, true); + set_wqm(ctx); break; } case nir_intrinsic_reduce: @@ -8604,8 +8605,7 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr) isel_err(&instr->instr, "Unimplemented NIR quad group instruction bit size."); } - /* Vulkan spec 9.25: Helper invocations must be active for quad group instructions. */ - set_wqm(ctx, true); + set_wqm(ctx); break; } case nir_intrinsic_masked_swizzle_amd: {