From 0eee071038966a94c15249af9b64bc135debf43e Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Thu, 19 May 2022 09:20:33 -0500 Subject: [PATCH] panvk: Use the vk_buffer base struct Reviewed-by: Alyssa Rosenzweig Part-of: --- src/panfrost/vulkan/panvk_device.c | 12 ++++-------- src/panfrost/vulkan/panvk_private.h | 18 ++++-------------- src/panfrost/vulkan/panvk_vX_image.c | 4 ++-- 3 files changed, 10 insertions(+), 24 deletions(-) diff --git a/src/panfrost/vulkan/panvk_device.c b/src/panfrost/vulkan/panvk_device.c index adc04cad869..1617b3a411c 100644 --- a/src/panfrost/vulkan/panvk_device.c +++ b/src/panfrost/vulkan/panvk_device.c @@ -1304,7 +1304,7 @@ panvk_GetBufferMemoryRequirements2(VkDevice device, VK_FROM_HANDLE(panvk_buffer, buffer, pInfo->buffer); const uint64_t align = 64; - const uint64_t size = align64(buffer->size, align); + const uint64_t size = align64(buffer->vk.size, align); pMemoryRequirements->memoryRequirements.memoryTypeBits = 1; pMemoryRequirements->memoryRequirements.alignment = align; @@ -1524,15 +1524,11 @@ panvk_CreateBuffer(VkDevice _device, assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO); - buffer = vk_object_alloc(&device->vk, pAllocator, sizeof(*buffer), - VK_OBJECT_TYPE_BUFFER); + buffer = vk_buffer_create(&device->vk, pCreateInfo, + pAllocator, sizeof(*buffer)); if (buffer == NULL) return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); - buffer->size = pCreateInfo->size; - buffer->usage = pCreateInfo->usage; - buffer->flags = pCreateInfo->flags; - *pBuffer = panvk_buffer_to_handle(buffer); return VK_SUCCESS; @@ -1549,7 +1545,7 @@ panvk_DestroyBuffer(VkDevice _device, if (!buffer) return; - vk_object_free(&device->vk, pAllocator, buffer); + vk_buffer_destroy(&device->vk, pAllocator, &buffer->vk); } VkResult diff --git a/src/panfrost/vulkan/panvk_private.h b/src/panfrost/vulkan/panvk_private.h index b2b99dfc222..7466b78b201 100644 --- a/src/panfrost/vulkan/panvk_private.h +++ b/src/panfrost/vulkan/panvk_private.h @@ -49,6 +49,7 @@ #include "util/list.h" #include "util/macros.h" #include "vk_alloc.h" +#include "vk_buffer.h" #include "vk_command_buffer.h" #include "vk_command_pool.h" #include "vk_device.h" @@ -525,11 +526,7 @@ struct panvk_descriptor_pool { }; struct panvk_buffer { - struct vk_object_base base; - VkDeviceSize size; - - VkBufferUsageFlags usage; - VkBufferCreateFlags flags; + struct vk_buffer vk; struct panfrost_bo *bo; VkDeviceSize bo_offset; @@ -551,14 +548,7 @@ panvk_buffer_range(const struct panvk_buffer *buffer, if (buffer->bo == NULL) return 0; - assert(offset <= buffer->size); - if (range == VK_WHOLE_SIZE) { - return buffer->size - offset; - } else { - assert(range + offset >= range); - assert(range + offset <= buffer->size); - return range; - } + return vk_buffer_range(&buffer->vk, offset, range); } enum panvk_dynamic_state_bits { @@ -1110,7 +1100,7 @@ VK_DEFINE_HANDLE_CASTS(panvk_physical_device, vk.base, VkPhysicalDevice, VK_OBJE VK_DEFINE_HANDLE_CASTS(panvk_queue, vk.base, VkQueue, VK_OBJECT_TYPE_QUEUE) VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_cmd_pool, vk.base, VkCommandPool, VK_OBJECT_TYPE_COMMAND_POOL) -VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_buffer, base, VkBuffer, VK_OBJECT_TYPE_BUFFER) +VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_buffer, vk.base, VkBuffer, VK_OBJECT_TYPE_BUFFER) VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_buffer_view, base, VkBufferView, VK_OBJECT_TYPE_BUFFER_VIEW) VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_descriptor_pool, base, VkDescriptorPool, VK_OBJECT_TYPE_DESCRIPTOR_POOL) VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_descriptor_set, base, VkDescriptorSet, VK_OBJECT_TYPE_DESCRIPTOR_SET) diff --git a/src/panfrost/vulkan/panvk_vX_image.c b/src/panfrost/vulkan/panvk_vX_image.c index 67c087d18a0..a6457e48460 100644 --- a/src/panfrost/vulkan/panvk_vX_image.c +++ b/src/panfrost/vulkan/panvk_vX_image.c @@ -205,7 +205,7 @@ panvk_per_arch(CreateBufferView)(VkDevice _device, assert(!(address & 63)); - if (buffer->usage & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT) { + if (buffer->vk.usage & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT) { unsigned bo_size = PAN_ARCH <= 5 ? (pan_size(SURFACE) + pan_size(TEXTURE)) : pan_size(SURFACE_WITH_STRIDE); @@ -240,7 +240,7 @@ panvk_per_arch(CreateBufferView)(VkDevice _device, } } - if (buffer->usage & VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT) { + if (buffer->vk.usage & VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT) { uint8_t *attrib_buf = (uint8_t *)view->descs.img_attrib_buf; pan_pack(attrib_buf, ATTRIBUTE_BUFFER, cfg) {