Module: Mesa
Branch: master
Commit: 22478bb0e48c64d1f43bf481daed17d6ddc5943f
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=22478bb0e48c64d1f43bf481daed17d6ddc5943f

Author: Jason Ekstrand <ja...@jlekstrand.net>
Date:   Thu Apr  8 16:46:04 2021 -0500

vulkan: Add a vk_object_multialloc helper

Reviewed-by: Lionel Landwerlin <lionel.g.landwer...@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10123>

---

 src/vulkan/util/vk_object.c | 33 +++++++++++++++++++++++++++++++++
 src/vulkan/util/vk_object.h | 14 ++++++++++++++
 2 files changed, 47 insertions(+)

diff --git a/src/vulkan/util/vk_object.c b/src/vulkan/util/vk_object.c
index 4d2ab2c12f7..af2c72ba95d 100644
--- a/src/vulkan/util/vk_object.c
+++ b/src/vulkan/util/vk_object.c
@@ -91,6 +91,39 @@ vk_object_zalloc(struct vk_device *device,
    return ptr;
 }
 
+void *
+vk_object_multialloc(struct vk_device *device,
+                     struct vk_multialloc *ma,
+                     const VkAllocationCallbacks *alloc,
+                     VkObjectType obj_type)
+{
+   void *ptr = vk_multialloc_alloc2(ma, &device->alloc, alloc,
+                                    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
+   if (ptr == NULL)
+      return NULL;
+
+   vk_object_base_init(device, (struct vk_object_base *)ptr, obj_type);
+
+   return ptr;
+}
+
+void *
+vk_object_multizalloc(struct vk_device *device,
+                      struct vk_multialloc *ma,
+                      const VkAllocationCallbacks *alloc,
+                      VkObjectType obj_type)
+{
+   void *ptr = vk_multialloc_alloc2(ma, &device->alloc, alloc,
+                                    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
+   if (ptr == NULL)
+      return NULL;
+
+   memset(ptr, 0, ma->size);
+   vk_object_base_init(device, (struct vk_object_base *)ptr, obj_type);
+
+   return ptr;
+}
+
 void
 vk_object_free(struct vk_device *device,
                const VkAllocationCallbacks *alloc,
diff --git a/src/vulkan/util/vk_object.h b/src/vulkan/util/vk_object.h
index 750c0409d34..c9c751ae261 100644
--- a/src/vulkan/util/vk_object.h
+++ b/src/vulkan/util/vk_object.h
@@ -120,6 +120,20 @@ vk_object_zalloc(struct vk_device *device,
                 size_t size,
                 VkObjectType vk_obj_type);
 
+struct vk_multialloc;
+
+void *
+vk_object_multialloc(struct vk_device *device,
+                     struct vk_multialloc *ma,
+                     const VkAllocationCallbacks *alloc,
+                     VkObjectType vk_obj_type);
+
+void *
+vk_object_multizalloc(struct vk_device *device,
+                      struct vk_multialloc *ma,
+                      const VkAllocationCallbacks *alloc,
+                      VkObjectType vk_obj_type);
+
 void
 vk_object_free(struct vk_device *device,
                const VkAllocationCallbacks *alloc,

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to