Mesa (main): panvk: Use vk_command_buffer

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Sep 28 21:32:54 UTC 2021


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

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Thu Sep 23 11:57:20 2021 -0500

panvk: Use vk_command_buffer

Reviewed-by: Boris Brezillon <boris.brezillon at collabora.com>
Tested-by: Boris Brezillon <boris.brezillon at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13003>

---

 src/panfrost/vulkan/panvk_private.h       |  5 +++--
 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);
       }



More information about the mesa-commit mailing list