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,