From e840ba9ed8bb797063a105e35a661926f2dacf12 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 18 Jul 2022 10:10:26 +0200 Subject: [PATCH] aco: requires Exact for p_jump_to_epilog MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Otherwise, in presence of p_exit_early_if the main FS will always jump to the PS epilog regardless the exact mask. This fixes dEQP-VK.draw.renderpass.shader_invocation.helper_invocation and few vkd3d-proton regressions when PS epilogs are forced. Signed-off-by: Samuel Pitoiset Reviewed-by: Timur Kristóf Part-of: --- src/amd/compiler/aco_insert_exec_mask.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/amd/compiler/aco_insert_exec_mask.cpp b/src/amd/compiler/aco_insert_exec_mask.cpp index f6ac0c5..3486595 100644 --- a/src/amd/compiler/aco_insert_exec_mask.cpp +++ b/src/amd/compiler/aco_insert_exec_mask.cpp @@ -99,7 +99,11 @@ needs_exact(aco_ptr& instr) } else if (instr->isFlatLike()) { return instr->flatlike().disable_wqm; } else { - return instr->isEXP(); + /* Require Exact for p_jump_to_epilog because if p_exit_early_if is + * emitted inside the same block, the main FS will always jump to the PS + * epilog without considering the exec mask. + */ + return instr->isEXP() || instr->opcode == aco_opcode::p_jump_to_epilog; } } -- 2.7.4