summaryrefslogtreecommitdiff
path: root/src/amd/compiler/aco_insert_exec_mask.cpp
diff options
context:
space:
mode:
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>2022-07-18 10:10:26 +0200
committerMarge Bot <emma+marge@anholt.net>2022-07-19 17:52:36 +0000
commite840ba9ed8bb797063a105e35a661926f2dacf12 (patch)
tree130de11861c4f956fa26f658c145ef13854c2012 /src/amd/compiler/aco_insert_exec_mask.cpp
parentf3579a62e9b268e57d6652f692a4e0adcec1e897 (diff)
downloadmesa-e840ba9ed8bb797063a105e35a661926f2dacf12.tar.gz
aco: requires Exact for p_jump_to_epilog
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 <samuel.pitoiset@gmail.com> Reviewed-by: Timur Kristóf <timur.kristof@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17617>
Diffstat (limited to 'src/amd/compiler/aco_insert_exec_mask.cpp')
-rw-r--r--src/amd/compiler/aco_insert_exec_mask.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/amd/compiler/aco_insert_exec_mask.cpp b/src/amd/compiler/aco_insert_exec_mask.cpp
index f6ac0c50e20..3486595dcbe 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<Instruction>& 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;
}
}