diff --git a/.pick_status.json b/.pick_status.json index 63f5ce3c9cb..b7f4b52f5f9 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -3044,7 +3044,7 @@ "description": "radv: fix GPU hangs with PS epilogs and secondaries properly", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "1a00587c44ecb97d9978cd6bed8e76e56c6697f5", "notes": null diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 579397b3c45..2c419282d96 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -9780,7 +9780,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) { @@ -9839,6 +9838,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