diff --git a/.pick_status.json b/.pick_status.json index 694a0209311..724cc9bc71d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -715,7 +715,7 @@ "description": "radv: fix RADV_DEBUG=hang with multiple cmdbuffer per submission", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "76deaa1b1a92ea6997d298e9b6ac1ed6433ba369" }, diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 065aa9f3edc..5fc46479423 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -5819,6 +5819,7 @@ radv_queue_submit_normal(struct radv_queue *queue, struct vk_queue_submit *submi const bool last_submit = j + advance == cmd_buffer_count; bool submit_ace = false; unsigned num_submitted_cs = 0; + unsigned cs_idx = 0; if (queue->device->trace_bo) *queue->device->trace_id_ptr = 0; @@ -5841,6 +5842,7 @@ radv_queue_submit_normal(struct radv_queue *queue, struct vk_queue_submit *submi can_patch &= !(cmd_buffer->usage_flags & VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT); cs_array[num_submitted_cs++] = cmd_buffer->cs; + cs_idx = num_submitted_cs - 1; } /* Add gang wait postambles to make sure the gang leader waits for the whole gang. */ @@ -5864,7 +5866,7 @@ radv_queue_submit_normal(struct radv_queue *queue, struct vk_queue_submit *submi goto fail; if (queue->device->trace_bo) { - radv_check_gpu_hangs(queue, cs_array[j]); + radv_check_gpu_hangs(queue, cs_array[cs_idx]); } if (queue->device->tma_bo) {