Module: Mesa Branch: main Commit: 8bf94337eba6d0af7d300af0786c6cd84ac07d54 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8bf94337eba6d0af7d300af0786c6cd84ac07d54
Author: Yevhenii Kolesnikov <[email protected]> Date: Tue Apr 6 15:19:12 2021 +0300 lavapipe: Use a common vk_command_buffer structure Switch to using common structure. Signed-off-by: Yevhenii Kolesnikov <[email protected]> Reviewed-By: Mike Blumenkrantz <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13000> --- src/gallium/frontends/lavapipe/lvp_cmd_buffer.c | 18 ++++++++++++++---- src/gallium/frontends/lavapipe/lvp_private.h | 5 +++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/gallium/frontends/lavapipe/lvp_cmd_buffer.c b/src/gallium/frontends/lavapipe/lvp_cmd_buffer.c index 7edf78e73f6..717c4967c14 100644 --- a/src/gallium/frontends/lavapipe/lvp_cmd_buffer.c +++ b/src/gallium/frontends/lavapipe/lvp_cmd_buffer.c @@ -38,8 +38,12 @@ static VkResult lvp_create_cmd_buffer( if (cmd_buffer == NULL) return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY); - vk_object_base_init(&device->vk, &cmd_buffer->base, - VK_OBJECT_TYPE_COMMAND_BUFFER); + VkResult result = vk_command_buffer_init(&cmd_buffer->vk, &device->vk); + if (result != VK_SUCCESS) { + vk_free(&pool->alloc, cmd_buffer); + return result; + } + cmd_buffer->device = device; cmd_buffer->pool = pool; @@ -62,6 +66,8 @@ static VkResult lvp_create_cmd_buffer( static VkResult lvp_reset_cmd_buffer(struct lvp_cmd_buffer *cmd_buffer) { + vk_command_buffer_reset(&cmd_buffer->vk); + vk_free_queue(&cmd_buffer->queue); list_inithead(&cmd_buffer->queue.cmds); cmd_buffer->status = LVP_CMD_BUFFER_STATUS_INITIAL; @@ -89,7 +95,11 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_AllocateCommandBuffers( result = lvp_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] = lvp_cmd_buffer_to_handle(cmd_buffer); } else { @@ -115,7 +125,7 @@ lvp_cmd_buffer_destroy(struct lvp_cmd_buffer *cmd_buffer) { vk_free_queue(&cmd_buffer->queue); list_del(&cmd_buffer->pool_link); - vk_object_base_finish(&cmd_buffer->base); + vk_command_buffer_finish(&cmd_buffer->vk); vk_free(&cmd_buffer->pool->alloc, cmd_buffer); } diff --git a/src/gallium/frontends/lavapipe/lvp_private.h b/src/gallium/frontends/lavapipe/lvp_private.h index f19e1daa668..9d9f9ab52fb 100644 --- a/src/gallium/frontends/lavapipe/lvp_private.h +++ b/src/gallium/frontends/lavapipe/lvp_private.h @@ -60,6 +60,7 @@ typedef uint32_t xcb_window_t; #include "vk_util.h" #include "vk_format.h" #include "vk_cmd_queue.h" +#include "vk_command_buffer.h" #include "wsi_common.h" @@ -589,7 +590,7 @@ enum lvp_cmd_buffer_status { }; struct lvp_cmd_buffer { - struct vk_object_base base; + struct vk_command_buffer vk; struct lvp_device * device; @@ -607,7 +608,7 @@ struct lvp_cmd_buffer { #define LVP_FROM_HANDLE(__lvp_type, __name, __handle) \ struct __lvp_type *__name = __lvp_type ## _from_handle(__handle) -VK_DEFINE_HANDLE_CASTS(lvp_cmd_buffer, base, VkCommandBuffer, +VK_DEFINE_HANDLE_CASTS(lvp_cmd_buffer, vk.base, VkCommandBuffer, VK_OBJECT_TYPE_COMMAND_BUFFER) VK_DEFINE_HANDLE_CASTS(lvp_device, vk.base, VkDevice, VK_OBJECT_TYPE_DEVICE) VK_DEFINE_HANDLE_CASTS(lvp_instance, vk.base, VkInstance, VK_OBJECT_TYPE_INSTANCE)
