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,