v3dv: Use vk_command_pool

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14917>
This commit is contained in:
Jason Ekstrand 2022-02-07 14:29:26 -06:00 committed by Marge Bot
parent 2746be68f1
commit 6fb9e4e7ff
2 changed files with 17 additions and 14 deletions

View file

@ -62,15 +62,17 @@ v3dv_CreateCommandPool(VkDevice _device,
/* We only support one queue */ /* We only support one queue */
assert(pCreateInfo->queueFamilyIndex == 0); assert(pCreateInfo->queueFamilyIndex == 0);
pool = vk_object_zalloc(&device->vk, pAllocator, sizeof(*pool), pool = vk_alloc2(&device->vk.alloc, pAllocator, sizeof(*pool), 8,
VK_OBJECT_TYPE_COMMAND_POOL); VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
if (pool == NULL) if (pool == NULL)
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
if (pAllocator) VkResult result = vk_command_pool_init(&pool->vk, &device->vk,
pool->alloc = *pAllocator; pCreateInfo, pAllocator);
else if (result != VK_SUCCESS) {
pool->alloc = device->vk.alloc; vk_free2(&device->vk.alloc, pAllocator, pool);
return result;
}
list_inithead(&pool->cmd_buffers); list_inithead(&pool->cmd_buffers);
@ -116,7 +118,7 @@ cmd_buffer_create(struct v3dv_device *device,
{ {
struct v3dv_cmd_buffer *cmd_buffer; struct v3dv_cmd_buffer *cmd_buffer;
cmd_buffer = vk_zalloc2(&device->vk.alloc, cmd_buffer = vk_zalloc2(&device->vk.alloc,
&pool->alloc, &pool->vk.alloc,
sizeof(*cmd_buffer), sizeof(*cmd_buffer),
8, 8,
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
@ -126,7 +128,7 @@ cmd_buffer_create(struct v3dv_device *device,
VkResult result; VkResult result;
result = vk_command_buffer_init(&cmd_buffer->vk, &device->vk, level); result = vk_command_buffer_init(&cmd_buffer->vk, &device->vk, level);
if (result != VK_SUCCESS) { 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; return result;
} }
@ -289,7 +291,7 @@ cmd_buffer_free_resources(struct v3dv_cmd_buffer *cmd_buffer)
v3dv_job_destroy(cmd_buffer->state.job); v3dv_job_destroy(cmd_buffer->state.job);
if (cmd_buffer->state.attachments) 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) if (cmd_buffer->state.query.end.alloc_count > 0)
vk_free(&cmd_buffer->device->vk.alloc, cmd_buffer->state.query.end.states); 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); list_del(&cmd_buffer->pool_link);
cmd_buffer_free_resources(cmd_buffer); cmd_buffer_free_resources(cmd_buffer);
vk_command_buffer_finish(&cmd_buffer->vk); 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); cmd_buffer);
} }
@ -916,7 +918,8 @@ v3dv_DestroyCommandPool(VkDevice _device,
cmd_buffer_destroy(cmd_buffer); 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 VKAPI_ATTR void VKAPI_CALL

View file

@ -46,6 +46,7 @@
#include "vk_util.h" #include "vk_util.h"
#include "vk_command_buffer.h" #include "vk_command_buffer.h"
#include "vk_command_pool.h"
#include "vk_queue.h" #include "vk_queue.h"
#include <xf86drm.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 v3dv_cmd_pool {
struct vk_object_base base; struct vk_command_pool vk;
VkAllocationCallbacks alloc;
struct list_head cmd_buffers; 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_OBJECT_TYPE_PHYSICAL_DEVICE)
VK_DEFINE_HANDLE_CASTS(v3dv_queue, vk.base, VkQueue, VK_OBJECT_TYPE_QUEUE) 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_OBJECT_TYPE_COMMAND_POOL)
VK_DEFINE_NONDISP_HANDLE_CASTS(v3dv_buffer, base, VkBuffer, VK_DEFINE_NONDISP_HANDLE_CASTS(v3dv_buffer, base, VkBuffer,
VK_OBJECT_TYPE_BUFFER) VK_OBJECT_TYPE_BUFFER)