diff --git a/.pick_status.json b/.pick_status.json index 3bc18848a5a..af3522c7631 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1210,7 +1210,7 @@ "description": "radv: move queue object to a common base object", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "9b1138e3f0e960119a46dc08794132719c93173e" }, diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 7cd7cd8ca1c..d1f9c24968f 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -2414,24 +2414,28 @@ radv_queue_init(struct radv_device *device, struct radv_queue *queue, VkDeviceQueueCreateFlags flags, const VkDeviceQueueGlobalPriorityCreateInfoEXT *global_priority) { - queue->_loader_data.loaderMagic = ICD_LOADER_MAGIC; queue->device = device; queue->queue_family_index = queue_family_index; queue->queue_idx = idx; queue->priority = radv_get_queue_global_priority(global_priority); queue->flags = flags; + vk_object_base_init(&device->vk, &queue->base, VK_OBJECT_TYPE_QUEUE); + VkResult result = device->ws->ctx_create(device->ws, queue->priority, &queue->hw_ctx); - if (result != VK_SUCCESS) + if (result != VK_SUCCESS) { + vk_object_base_finish(&queue->base); return vk_error(device->instance, result); + } list_inithead(&queue->pending_submissions); mtx_init(&queue->pending_mutex, mtx_plain); mtx_init(&queue->thread_mutex, mtx_plain); if (u_cnd_monotonic_init(&queue->thread_cond)) { - result = VK_ERROR_INITIALIZATION_FAILED; - return vk_error(device->instance, result); + device->ws->ctx_destroy(queue->hw_ctx); + vk_object_base_finish(&queue->base); + return vk_error(device->instance, VK_ERROR_INITIALIZATION_FAILED); } queue->cond_created = true; @@ -2480,6 +2484,8 @@ radv_queue_finish(struct radv_queue *queue) queue->device->ws->buffer_destroy(queue->gds_oa_bo); if (queue->compute_scratch_bo) queue->device->ws->buffer_destroy(queue->compute_scratch_bo); + + vk_object_base_finish(&queue->base); } static void diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index e15d8708b6c..172bd0e6b76 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -699,7 +699,7 @@ struct radv_deferred_queue_submission; enum ring_type radv_queue_family_to_ring(int f); struct radv_queue { - VK_LOADER_DATA _loader_data; + struct vk_object_base base; struct radv_device * device; struct radeon_winsys_ctx *hw_ctx; enum radeon_ctx_priority priority;