mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 20:18:12 +02:00
radv: fix GPU hangs with PS epilogs and secondaries properly
The previous fix was incomplete because if the same graphics pipeline
and the same PS epilog are rebind after vkCmdExecuteCommands(), the PS
epilog state wouldn't be re-emitted, and it will use a wrong VA (in case
both fragment shader user SGPRs aren't similar either).
Resetting the PS epilog to NULL in the primary should prevent any
issues, but this tracking still need to be improved because it caused
two issues recently.
Fixes: 1a00587c44 ("radv: fix a GPU hang with PS epilogs and secondary command buffers")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/work_items/15176
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41056>
This commit is contained in:
parent
9d17a7bdb4
commit
a73fc90bcd
1 changed files with 3 additions and 1 deletions
|
|
@ -10020,7 +10020,6 @@ radv_CmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBufferCou
|
|||
primary->state.emitted_compute_pipeline = secondary->state.emitted_compute_pipeline;
|
||||
primary->state.emitted_rt_pipeline = secondary->state.emitted_rt_pipeline;
|
||||
|
||||
primary->state.ps_epilog = secondary->state.ps_epilog;
|
||||
primary->state.emitted_vs_prolog = secondary->state.emitted_vs_prolog;
|
||||
|
||||
if (secondary->state.last_ia_multi_vgt_param) {
|
||||
|
|
@ -10083,6 +10082,9 @@ radv_CmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBufferCou
|
|||
primary->state.last_first_instance = -1;
|
||||
primary->state.last_drawid = -1;
|
||||
primary->state.last_vertex_offset_valid = false;
|
||||
|
||||
/* Make sure to re-emit the PS epilog if the same graphics pipeline is bind again. */
|
||||
primary->state.ps_epilog = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue