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

Author: Samuel Pitoiset <[email protected]>
Date:   Tue Aug  1 08:33:18 2023 +0200

vulkan: add init/finish helpers for vk_buffer_view

Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Faith Ekstrand <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24416>

---

 src/vulkan/runtime/vk_buffer_view.c | 39 +++++++++++++++++++++++++++----------
 src/vulkan/runtime/vk_buffer_view.h |  4 ++++
 2 files changed, 33 insertions(+), 10 deletions(-)

diff --git a/src/vulkan/runtime/vk_buffer_view.c 
b/src/vulkan/runtime/vk_buffer_view.c
index 65d7611801a..cea62d7de90 100644
--- a/src/vulkan/runtime/vk_buffer_view.c
+++ b/src/vulkan/runtime/vk_buffer_view.c
@@ -23,22 +23,19 @@
 
 #include "vk_buffer_view.h"
 
+#include "vk_alloc.h"
 #include "vk_buffer.h"
+#include "vk_device.h"
 #include "vk_format.h"
 
-void *
-vk_buffer_view_create(struct vk_device *device,
-                      const VkBufferViewCreateInfo *pCreateInfo,
-                      const VkAllocationCallbacks *alloc,
-                      size_t size)
+void
+vk_buffer_view_init(struct vk_device *device,
+                    struct vk_buffer_view *buffer_view,
+                    const VkBufferViewCreateInfo *pCreateInfo)
 {
    VK_FROM_HANDLE(vk_buffer, buffer, pCreateInfo->buffer);
-   struct vk_buffer_view *buffer_view;
 
-   buffer_view = vk_object_zalloc(device, alloc, size,
-                                  VK_OBJECT_TYPE_BUFFER_VIEW);
-   if (!buffer_view)
-      return NULL;
+   vk_object_base_init(device, &buffer_view->base, VK_OBJECT_TYPE_BUFFER_VIEW);
 
    assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO);
    assert(pCreateInfo->flags == 0);
@@ -51,10 +48,32 @@ vk_buffer_view_create(struct vk_device *device,
                                         pCreateInfo->range);
    buffer_view->elements = buffer_view->range /
                            vk_format_get_blocksize(buffer_view->format);
+}
+
+void *
+vk_buffer_view_create(struct vk_device *device,
+                      const VkBufferViewCreateInfo *pCreateInfo,
+                      const VkAllocationCallbacks *alloc,
+                      size_t size)
+{
+   struct vk_buffer_view *buffer_view;
+
+   buffer_view = vk_zalloc2(&device->alloc, alloc, size, 8,
+                            VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
+   if (!buffer_view)
+      return NULL;
+
+   vk_buffer_view_init(device, buffer_view, pCreateInfo);
 
    return buffer_view;
 }
 
+void
+vk_buffer_view_finish(struct vk_buffer_view *buffer_view)
+{
+   vk_object_base_finish(&buffer_view->base);
+}
+
 void
 vk_buffer_view_destroy(struct vk_device *device,
                        const VkAllocationCallbacks *alloc,
diff --git a/src/vulkan/runtime/vk_buffer_view.h 
b/src/vulkan/runtime/vk_buffer_view.h
index d676f46edc6..aa9f4270175 100644
--- a/src/vulkan/runtime/vk_buffer_view.h
+++ b/src/vulkan/runtime/vk_buffer_view.h
@@ -56,6 +56,10 @@ struct vk_buffer_view {
 VK_DEFINE_NONDISP_HANDLE_CASTS(vk_buffer_view, base, VkBufferView,
                                VK_OBJECT_TYPE_BUFFER_VIEW);
 
+void vk_buffer_view_init(struct vk_device *device,
+                         struct vk_buffer_view *buffer_view,
+                         const VkBufferViewCreateInfo *pCreateInfo);
+void vk_buffer_view_finish(struct vk_buffer_view *buffer_view);
 void *vk_buffer_view_create(struct vk_device *device,
                             const VkBufferViewCreateInfo *pCreateInfo,
                             const VkAllocationCallbacks *alloc,

Reply via email to