diff options
author | Samuel Pitoiset <samuel.pitoiset@gmail.com> | 2022-07-18 10:10:26 +0200 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2022-07-19 17:52:36 +0000 |
commit | e840ba9ed8bb797063a105e35a661926f2dacf12 (patch) | |
tree | 130de11861c4f956fa26f658c145ef13854c2012 /src/amd/compiler/aco_insert_exec_mask.cpp | |
parent | f3579a62e9b268e57d6652f692a4e0adcec1e897 (diff) | |
download | mesa-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.cpp | 6 |
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; } } |