Mesa (main): v3dv: Use vk_command_pool

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Feb 11 08:46:48 UTC 2022


Module: Mesa
Branch: main
Commit: 6fb9e4e7ff2d7b8a3ecf35a86f6550843e72e9d9
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6fb9e4e7ff2d7b8a3ecf35a86f6550843e72e9d9

Author: Jason Ekstrand <jason.ekstrand at collabora.com>
Date:   Mon Feb  7 14:29:26 2022 -0600

v3dv: Use vk_command_pool

Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14917>

---

 src/broadcom/vulkan/v3dv_cmd_buffer.c | 25 ++++++++++++++-----------
 src/broadcom/vulkan/v3dv_private.h    |  6 +++---
 2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/src/broadcom/vulkan/v3dv_cmd_buffer.c b/src/broadcom/vulkan/v3dv_cmd_buffer.c
index 2cbe2b3cbd9..4e561da8399 100644
--- a/src/broadcom/vulkan/v3dv_cmd_buffer.c
+++ b/src/broadcom/vulkan/v3dv_cmd_buffer.c
@@ -62,15 +62,17 @@ v3dv_CreateCommandPool(VkDevice _device,
    /* We only support one queue */
    assert(pCreateInfo->queueFamilyIndex == 0);
 
-   pool = vk_object_zalloc(&device->vk, pAllocator, sizeof(*pool),
-                           VK_OBJECT_TYPE_COMMAND_POOL);
+   pool = vk_alloc2(&device->vk.alloc, pAllocator, sizeof(*pool), 8,
+                    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
    if (pool == NULL)
       return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
 
-   if (pAllocator)
-      pool->alloc = *pAllocator;
-   else
-      pool->alloc = device->vk.alloc;
+   VkResult result = vk_command_pool_init(&pool->vk, &device->vk,
+                                          pCreateInfo, pAllocator);
+   if (result != VK_SUCCESS) {
+      vk_free2(&device->vk.alloc, pAllocator, pool);
+      return result;
+   }
 
    list_inithead(&pool->cmd_buffers);
 
@@ -116,7 +118,7 @@ cmd_buffer_create(struct v3dv_device *device,
 {
    struct v3dv_cmd_buffer *cmd_buffer;
    cmd_buffer = vk_zalloc2(&device->vk.alloc,
-                           &pool->alloc,
+                           &pool->vk.alloc,
                            sizeof(*cmd_buffer),
                            8,
                            VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
@@ -126,7 +128,7 @@ cmd_buffer_create(struct v3dv_device *device,
    VkResult result;
    result = vk_command_buffer_init(&cmd_buffer->vk, &device->vk, level);
    if (result != VK_SUCCESS) {
-      vk_free2(&device->vk.alloc, &pool->alloc, cmd_buffer);
+      vk_free2(&device->vk.alloc, &pool->vk.alloc, cmd_buffer);
       return result;
    }
 
@@ -289,7 +291,7 @@ cmd_buffer_free_resources(struct v3dv_cmd_buffer *cmd_buffer)
       v3dv_job_destroy(cmd_buffer->state.job);
 
    if (cmd_buffer->state.attachments)
-      vk_free(&cmd_buffer->pool->alloc, cmd_buffer->state.attachments);
+      vk_free(&cmd_buffer->pool->vk.alloc, cmd_buffer->state.attachments);
 
    if (cmd_buffer->state.query.end.alloc_count > 0)
       vk_free(&cmd_buffer->device->vk.alloc, cmd_buffer->state.query.end.states);
@@ -314,7 +316,7 @@ cmd_buffer_destroy(struct v3dv_cmd_buffer *cmd_buffer)
    list_del(&cmd_buffer->pool_link);
    cmd_buffer_free_resources(cmd_buffer);
    vk_command_buffer_finish(&cmd_buffer->vk);
-   vk_free2(&cmd_buffer->device->vk.alloc, &cmd_buffer->pool->alloc,
+   vk_free2(&cmd_buffer->device->vk.alloc, &cmd_buffer->pool->vk.alloc,
             cmd_buffer);
 }
 
@@ -916,7 +918,8 @@ v3dv_DestroyCommandPool(VkDevice _device,
       cmd_buffer_destroy(cmd_buffer);
    }
 
-   vk_object_free(&device->vk, pAllocator, pool);
+   vk_command_pool_finish(&pool->vk);
+   vk_free2(&device->vk.alloc, pAllocator, pool);
 }
 
 VKAPI_ATTR void VKAPI_CALL
diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h
index f9f985f7896..c102ff1ed83 100644
--- a/src/broadcom/vulkan/v3dv_private.h
+++ b/src/broadcom/vulkan/v3dv_private.h
@@ -46,6 +46,7 @@
 #include "vk_util.h"
 
 #include "vk_command_buffer.h"
+#include "vk_command_pool.h"
 #include "vk_queue.h"
 
 #include <xf86drm.h>
@@ -816,9 +817,8 @@ v3dv_do_double_initial_tile_clear(const struct v3dv_frame_tiling *tiling)
 }
 
 struct v3dv_cmd_pool {
-   struct vk_object_base base;
+   struct vk_command_pool vk;
 
-   VkAllocationCallbacks alloc;
    struct list_head cmd_buffers;
 };
 
@@ -2157,7 +2157,7 @@ VK_DEFINE_HANDLE_CASTS(v3dv_physical_device, vk.base, VkPhysicalDevice,
                        VK_OBJECT_TYPE_PHYSICAL_DEVICE)
 VK_DEFINE_HANDLE_CASTS(v3dv_queue, vk.base, VkQueue, VK_OBJECT_TYPE_QUEUE)
 
-VK_DEFINE_NONDISP_HANDLE_CASTS(v3dv_cmd_pool, base, VkCommandPool,
+VK_DEFINE_NONDISP_HANDLE_CASTS(v3dv_cmd_pool, vk.base, VkCommandPool,
                                VK_OBJECT_TYPE_COMMAND_POOL)
 VK_DEFINE_NONDISP_HANDLE_CASTS(v3dv_buffer, base, VkBuffer,
                                VK_OBJECT_TYPE_BUFFER)



More information about the mesa-commit mailing list