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