Mesa (main): panvk: Use the vk_buffer base struct

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat May 28 00:06:24 UTC 2022


Module: Mesa
Branch: main
Commit: 0eee071038966a94c15249af9b64bc135debf43e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0eee071038966a94c15249af9b64bc135debf43e

Author: Jason Ekstrand <jason.ekstrand at collabora.com>
Date:   Thu May 19 09:20:33 2022 -0500

panvk: Use the vk_buffer base struct

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16607>

---

 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) {



More information about the mesa-commit mailing list