diff options
author | Jason Ekstrand <jason@jlekstrand.net> | 2021-09-23 11:57:20 -0500 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2021-09-28 21:08:25 +0000 |
commit | 1815271f0a85c79c1c67533a103bd9273f3e9da1 (patch) | |
tree | 56c5c20b0f9db0352c5be3e39395552cd3d122f2 | |
parent | 984678300116a6b9d4c9f5a1f764ee1ecc8ef27a (diff) |
panvk: Use vk_command_buffer
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Tested-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13003>
-rw-r--r-- | src/panfrost/vulkan/panvk_private.h | 5 | ||||
-rw-r--r-- | src/panfrost/vulkan/panvk_vX_cmd_buffer.c | 18 |
2 files changed, 17 insertions, 6 deletions
diff --git a/src/panfrost/vulkan/panvk_private.h b/src/panfrost/vulkan/panvk_private.h index 9c4802396cb..3d91b2eb9b7 100644 --- a/src/panfrost/vulkan/panvk_private.h +++ b/src/panfrost/vulkan/panvk_private.h @@ -49,6 +49,7 @@ #include "util/list.h" #include "util/macros.h" #include "vk_alloc.h" +#include "vk_command_buffer.h" #include "vk_device.h" #include "vk_instance.h" #include "vk_object.h" @@ -660,7 +661,7 @@ struct panvk_cmd_bind_point_state { }; struct panvk_cmd_buffer { - struct vk_object_base base; + struct vk_command_buffer vk; struct panvk_device *device; @@ -1018,7 +1019,7 @@ struct panvk_render_pass { struct panvk_subpass subpasses[0]; }; -VK_DEFINE_HANDLE_CASTS(panvk_cmd_buffer, base, VkCommandBuffer, VK_OBJECT_TYPE_COMMAND_BUFFER) +VK_DEFINE_HANDLE_CASTS(panvk_cmd_buffer, vk.base, VkCommandBuffer, VK_OBJECT_TYPE_COMMAND_BUFFER) VK_DEFINE_HANDLE_CASTS(panvk_device, vk.base, VkDevice, VK_OBJECT_TYPE_DEVICE) VK_DEFINE_HANDLE_CASTS(panvk_instance, vk.base, VkInstance, VK_OBJECT_TYPE_INSTANCE) VK_DEFINE_HANDLE_CASTS(panvk_physical_device, vk.base, VkPhysicalDevice, VK_OBJECT_TYPE_PHYSICAL_DEVICE) diff --git a/src/panfrost/vulkan/panvk_vX_cmd_buffer.c b/src/panfrost/vulkan/panvk_vX_cmd_buffer.c index 65aee5b81ff..e46a002d338 100644 --- a/src/panfrost/vulkan/panvk_vX_cmd_buffer.c +++ b/src/panfrost/vulkan/panvk_vX_cmd_buffer.c @@ -943,6 +943,8 @@ panvk_per_arch(CmdWaitEvents)(VkCommandBuffer commandBuffer, static VkResult panvk_reset_cmdbuf(struct panvk_cmd_buffer *cmdbuf) { + vk_command_buffer_reset(&cmdbuf->vk); + cmdbuf->record_result = VK_SUCCESS; list_for_each_entry_safe(struct panvk_batch, batch, &cmdbuf->batches, node) { @@ -990,7 +992,8 @@ panvk_destroy_cmdbuf(struct panvk_cmd_buffer *cmdbuf) panvk_pool_cleanup(&cmdbuf->desc_pool); panvk_pool_cleanup(&cmdbuf->tls_pool); panvk_pool_cleanup(&cmdbuf->varying_pool); - vk_object_free(&device->vk, NULL, cmdbuf); + vk_command_buffer_finish(&cmdbuf->vk); + vk_free(&device->vk.alloc, cmdbuf); } static VkResult @@ -1001,11 +1004,17 @@ panvk_create_cmdbuf(struct panvk_device *device, { struct panvk_cmd_buffer *cmdbuf; - cmdbuf = vk_object_zalloc(&device->vk, NULL, sizeof(*cmdbuf), - VK_OBJECT_TYPE_COMMAND_BUFFER); + cmdbuf = vk_zalloc(&device->vk.alloc, sizeof(*cmdbuf), + 8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); if (!cmdbuf) return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY); + VkResult result = vk_command_buffer_init(&cmdbuf->vk, &device->vk); + if (result != VK_SUCCESS) { + vk_free(&device->vk.alloc, cmdbuf); + return result; + } + cmdbuf->device = device; cmdbuf->level = level; cmdbuf->pool = pool; @@ -1058,7 +1067,8 @@ panvk_per_arch(AllocateCommandBuffers)(VkDevice _device, list_addtail(&cmdbuf->pool_link, &pool->active_cmd_buffers); cmdbuf->level = pAllocateInfo->level; - vk_object_base_reset(&cmdbuf->base); + vk_command_buffer_finish(&cmdbuf->vk); + result = vk_command_buffer_init(&cmdbuf->vk, &device->vk); } else { result = panvk_create_cmdbuf(device, pool, pAllocateInfo->level, &cmdbuf); } |