diff --git a/src/imagination/vulkan/pvr_cmd_buffer.c b/src/imagination/vulkan/pvr_cmd_buffer.c index 36cffd0815a..a6edd6c76fc 100644 --- a/src/imagination/vulkan/pvr_cmd_buffer.c +++ b/src/imagination/vulkan/pvr_cmd_buffer.c @@ -2017,7 +2017,7 @@ void pvr_CmdBindIndexBuffer(VkCommandBuffer commandBuffer, PVR_FROM_HANDLE(pvr_buffer, index_buffer, buffer); struct pvr_cmd_buffer_state *const state = &cmd_buffer->state; - assert(offset < index_buffer->size); + assert(offset < index_buffer->vk.size); assert(indexType == VK_INDEX_TYPE_UINT32 || indexType == VK_INDEX_TYPE_UINT16); diff --git a/src/imagination/vulkan/pvr_descriptor_set.c b/src/imagination/vulkan/pvr_descriptor_set.c index 203c787e2af..764d05c4da5 100644 --- a/src/imagination/vulkan/pvr_descriptor_set.c +++ b/src/imagination/vulkan/pvr_descriptor_set.c @@ -1355,12 +1355,12 @@ pvr_descriptor_update_buffer_info(const struct pvr_device *device, const pvr_dev_addr_t addr = PVR_DEV_ADDR_OFFSET(buffer->dev_addr, buffer_info->offset); uint32_t range = (buffer_info->range == VK_WHOLE_SIZE) - ? (buffer->size - buffer_info->offset) + ? (buffer->vk.size - buffer_info->offset) : (buffer_info->range); set->descriptors[desc_idx].type = write_set->descriptorType; set->descriptors[desc_idx].buffer_dev_addr = addr; - set->descriptors[desc_idx].buffer_create_info_size = buffer->size; + set->descriptors[desc_idx].buffer_create_info_size = buffer->vk.size; set->descriptors[desc_idx].buffer_desc_range = range; if (is_dynamic) diff --git a/src/imagination/vulkan/pvr_device.c b/src/imagination/vulkan/pvr_device.c index f5145361c3c..d03373a40e9 100644 --- a/src/imagination/vulkan/pvr_device.c +++ b/src/imagination/vulkan/pvr_device.c @@ -1755,7 +1755,7 @@ VkResult pvr_BindBufferMemory2(VkDevice _device, VkResult result = pvr_bind_memory(device, mem, pBindInfos[i].memoryOffset, - buffer->size, + buffer->vk.size, buffer->alignment, &buffer->vma, &buffer->dev_addr); @@ -1834,14 +1834,11 @@ VkResult pvr_CreateBuffer(VkDevice _device, if (pCreateInfo->size >= ULONG_MAX - alignment) return VK_ERROR_OUT_OF_DEVICE_MEMORY; - buffer = vk_object_zalloc(&device->vk, - pAllocator, - sizeof(*buffer), - VK_OBJECT_TYPE_BUFFER); + buffer = + vk_buffer_create(&device->vk, pCreateInfo, pAllocator, sizeof(*buffer)); if (!buffer) return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); - buffer->size = pCreateInfo->size; buffer->alignment = alignment; *pBuffer = pvr_buffer_to_handle(buffer); @@ -1862,7 +1859,7 @@ void pvr_DestroyBuffer(VkDevice _device, if (buffer->vma) pvr_unbind_memory(device, buffer->vma); - vk_object_free(&device->vk, pAllocator, buffer); + vk_buffer_destroy(&device->vk, pAllocator, &buffer->vk); } VkResult pvr_gpu_upload(struct pvr_device *device, @@ -2434,7 +2431,7 @@ void pvr_GetBufferMemoryRequirements2( pMemoryRequirements->memoryRequirements.alignment = buffer->alignment; pMemoryRequirements->memoryRequirements.size = - ALIGN_POT(buffer->size, buffer->alignment); + ALIGN_POT(buffer->vk.size, buffer->alignment); } void pvr_GetImageMemoryRequirements2(VkDevice _device, diff --git a/src/imagination/vulkan/pvr_private.h b/src/imagination/vulkan/pvr_private.h index 1a1cecffb4b..67b57fdadd8 100644 --- a/src/imagination/vulkan/pvr_private.h +++ b/src/imagination/vulkan/pvr_private.h @@ -53,6 +53,7 @@ #include "util/log.h" #include "util/macros.h" #include "util/u_dynarray.h" +#include "vk_buffer.h" #include "vk_command_buffer.h" #include "vk_device.h" #include "vk_image.h" @@ -322,10 +323,7 @@ struct pvr_image { }; struct pvr_buffer { - struct vk_object_base base; - - /* Saved information from pCreateInfo */ - VkDeviceSize size; + struct vk_buffer vk; /* Derived and other state */ uint32_t alignment; @@ -1361,7 +1359,10 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(pvr_pipeline_cache, base, VkPipelineCache, VK_OBJECT_TYPE_PIPELINE_CACHE) -VK_DEFINE_NONDISP_HANDLE_CASTS(pvr_buffer, base, VkBuffer, VK_OBJECT_TYPE_BUFFER) +VK_DEFINE_NONDISP_HANDLE_CASTS(pvr_buffer, + vk.base, + VkBuffer, + VK_OBJECT_TYPE_BUFFER) VK_DEFINE_NONDISP_HANDLE_CASTS(pvr_image_view, vk.base, VkImageView,