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