Module: Mesa Branch: main Commit: 1d2a4abf0102408323d0759c9650b1ea2f2597d2 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1d2a4abf0102408323d0759c9650b1ea2f2597d2
Author: Yevhenii Kolesnikov <[email protected]> Date: Tue Apr 6 15:09:20 2021 +0300 turnip: Use a common vk_command_buffer structure Switch to using common structure. Signed-off-by: Yevhenii Kolesnikov <[email protected]> Reviewed-by: Danylo Piliaiev <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13000> --- src/freedreno/vulkan/tu_cmd_buffer.c | 23 +++++++++++++++++++---- src/freedreno/vulkan/tu_private.h | 5 +++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c index a605420c95b..f2bb632bc5a 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.c +++ b/src/freedreno/vulkan/tu_cmd_buffer.c @@ -1394,11 +1394,18 @@ tu_create_cmd_buffer(struct tu_device *device, { struct tu_cmd_buffer *cmd_buffer; - cmd_buffer = vk_object_zalloc(&device->vk, NULL, sizeof(*cmd_buffer), - VK_OBJECT_TYPE_COMMAND_BUFFER); + cmd_buffer = vk_zalloc2(&device->vk.alloc, NULL, sizeof(*cmd_buffer), 8, + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); + if (cmd_buffer == NULL) return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY); + VkResult result = vk_command_buffer_init(&cmd_buffer->vk, &device->vk); + if (result != VK_SUCCESS) { + vk_free2(&device->vk.alloc, NULL, cmd_buffer); + return result; + } + cmd_buffer->device = device; cmd_buffer->pool = pool; cmd_buffer->level = level; @@ -1441,12 +1448,16 @@ tu_cmd_buffer_destroy(struct tu_cmd_buffer *cmd_buffer) u_trace_fini(&cmd_buffer->trace); - vk_object_free(&cmd_buffer->device->vk, &cmd_buffer->pool->alloc, cmd_buffer); + vk_command_buffer_finish(&cmd_buffer->vk); + vk_free2(&cmd_buffer->device->vk.alloc, &cmd_buffer->pool->alloc, + cmd_buffer); } static VkResult tu_reset_cmd_buffer(struct tu_cmd_buffer *cmd_buffer) { + vk_command_buffer_reset(&cmd_buffer->vk); + cmd_buffer->record_result = VK_SUCCESS; tu_cs_reset(&cmd_buffer->cs); @@ -1491,7 +1502,11 @@ tu_AllocateCommandBuffers(VkDevice _device, result = tu_reset_cmd_buffer(cmd_buffer); cmd_buffer->level = pAllocateInfo->level; - vk_object_base_reset(&cmd_buffer->base); + vk_command_buffer_finish(&cmd_buffer->vk); + VkResult init_result = + vk_command_buffer_init(&cmd_buffer->vk, &device->vk); + if (init_result != VK_SUCCESS) + result = init_result; pCommandBuffers[i] = tu_cmd_buffer_to_handle(cmd_buffer); } else { diff --git a/src/freedreno/vulkan/tu_private.h b/src/freedreno/vulkan/tu_private.h index 2a6719f4ce9..ceea037ed24 100644 --- a/src/freedreno/vulkan/tu_private.h +++ b/src/freedreno/vulkan/tu_private.h @@ -92,6 +92,7 @@ typedef uint32_t xcb_window_t; #include "tu_entrypoints.h" #include "vk_format.h" +#include "vk_command_buffer.h" #define MAX_VBS 32 #define MAX_VERTEX_ATTRIBS 32 @@ -1052,7 +1053,7 @@ enum tu_cmd_buffer_status struct tu_cmd_buffer { - struct vk_object_base base; + struct vk_command_buffer vk; struct tu_device *device; @@ -1764,7 +1765,7 @@ struct tu_u_trace_flush_data #define TU_FROM_HANDLE(__tu_type, __name, __handle) \ VK_FROM_HANDLE(__tu_type, __name, __handle) -VK_DEFINE_HANDLE_CASTS(tu_cmd_buffer, base, VkCommandBuffer, +VK_DEFINE_HANDLE_CASTS(tu_cmd_buffer, vk.base, VkCommandBuffer, VK_OBJECT_TYPE_COMMAND_BUFFER) VK_DEFINE_HANDLE_CASTS(tu_device, vk.base, VkDevice, VK_OBJECT_TYPE_DEVICE) VK_DEFINE_HANDLE_CASTS(tu_instance, vk.base, VkInstance,
