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>
This commit is contained in:
Samuel Pitoiset
2022-07-18 10:10:26 +02:00
committed by Marge Bot
parent f3579a62e9
commit e840ba9ed8

View File

@@ -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;
}
}