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)

Reply via email to