diff --git a/.pick_status.json b/.pick_status.json index 02c734d41c1..2f37b9d08d5 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -229,7 +229,7 @@ "description": "radv: make sure CP DMA is idle before executing secondary command buffers", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "e8707961134daa9b91599840ad5698366a6229b7" }, diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index e6ca179b7ab..be06350f049 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -4743,6 +4743,9 @@ radv_CmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBufferCou /* Emit pending flushes on primary prior to executing secondary */ si_emit_cache_flush(primary); + /* Make sure CP DMA is idle on primary prior to executing secondary. */ + si_cp_dma_wait_for_idle(primary); + for (uint32_t i = 0; i < commandBufferCount; i++) { RADV_FROM_HANDLE(radv_cmd_buffer, secondary, pCmdBuffers[i]);