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

Author: Chia-I Wu <[email protected]>
Date:   Fri Aug 19 13:28:23 2022 -0700

turnip: use vk_buffer

Mainly for vk_buffer_range.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18588>

---

 src/freedreno/vulkan/tu_clear_blit.c     |  3 +--
 src/freedreno/vulkan/tu_cmd_buffer.c     |  6 +++---
 src/freedreno/vulkan/tu_descriptor_set.c | 14 ++------------
 src/freedreno/vulkan/tu_device.c         | 14 ++++----------
 src/freedreno/vulkan/tu_device.h         | 11 ++++-------
 src/freedreno/vulkan/tu_image.c          |  8 ++------
 6 files changed, 16 insertions(+), 40 deletions(-)

diff --git a/src/freedreno/vulkan/tu_clear_blit.c 
b/src/freedreno/vulkan/tu_clear_blit.c
index 79e359b1902..3b0c4136c10 100644
--- a/src/freedreno/vulkan/tu_clear_blit.c
+++ b/src/freedreno/vulkan/tu_clear_blit.c
@@ -2176,8 +2176,7 @@ tu_CmdFillBuffer(VkCommandBuffer commandBuffer,
    const struct blit_ops *ops = &r2d_ops;
    struct tu_cs *cs = &cmd->cs;
 
-   if (fillSize == VK_WHOLE_SIZE)
-      fillSize = buffer->size - dstOffset;
+   fillSize = vk_buffer_range(&buffer->vk, dstOffset, fillSize);
 
    uint64_t dst_va = buffer->iova + dstOffset;
    uint32_t blocks = fillSize / 4;
diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c 
b/src/freedreno/vulkan/tu_cmd_buffer.c
index 365146cf6a1..52d33592d03 100644
--- a/src/freedreno/vulkan/tu_cmd_buffer.c
+++ b/src/freedreno/vulkan/tu_cmd_buffer.c
@@ -1944,7 +1944,7 @@ tu_CmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer,
       } else {
          struct tu_buffer *buf = tu_buffer_from_handle(pBuffers[i]);
          cmd->state.vb[firstBinding + i].base = buf->iova + pOffsets[i];
-         cmd->state.vb[firstBinding + i].size = pSizes ? pSizes[i] : 
(buf->size - pOffsets[i]);
+         cmd->state.vb[firstBinding + i].size = pSizes ? pSizes[i] : 
(buf->vk.size - pOffsets[i]);
       }
 
       if (pStrides)
@@ -2000,10 +2000,10 @@ tu_CmdBindIndexBuffer(VkCommandBuffer commandBuffer,
    if (cmd->state.index_size != index_size)
       tu_cs_emit_regs(&cmd->draw_cs, A6XX_PC_RESTART_INDEX(restart_index));
 
-   assert(buf->size >= offset);
+   assert(buf->vk.size >= offset);
 
    cmd->state.index_va = buf->iova + offset;
-   cmd->state.max_index_count = (buf->size - offset) >> index_shift;
+   cmd->state.max_index_count = (buf->vk.size - offset) >> index_shift;
    cmd->state.index_size = index_size;
 }
 
diff --git a/src/freedreno/vulkan/tu_descriptor_set.c 
b/src/freedreno/vulkan/tu_descriptor_set.c
index 8751e1aa0c7..5b119061d85 100644
--- a/src/freedreno/vulkan/tu_descriptor_set.c
+++ b/src/freedreno/vulkan/tu_descriptor_set.c
@@ -937,16 +937,6 @@ write_texel_buffer_descriptor(uint32_t *dst, const 
VkBufferView buffer_view)
    }
 }
 
-static uint32_t get_range(struct tu_buffer *buf, VkDeviceSize offset,
-                          VkDeviceSize range)
-{
-   if (range == VK_WHOLE_SIZE) {
-      return buf->size - offset;
-   } else {
-      return range;
-   }
-}
-
 static void
 write_buffer_descriptor(const struct tu_device *device,
                         uint32_t *dst,
@@ -967,7 +957,7 @@ write_buffer_descriptor(const struct tu_device *device,
 
    assert((buffer_info->offset & 63) == 0); /* minStorageBufferOffsetAlignment 
*/
    uint64_t va = buffer->iova + buffer_info->offset;
-   uint32_t range = get_range(buffer, buffer_info->offset, buffer_info->range);
+   uint32_t range = vk_buffer_range(&buffer->vk, buffer_info->offset, 
buffer_info->range);
 
    for (unsigned i = 0; i < descriptors; i++) {
       if (storage_16bit && i == 0) {
@@ -998,7 +988,7 @@ write_ubo_descriptor(uint32_t *dst, const 
VkDescriptorBufferInfo *buffer_info)
 
    TU_FROM_HANDLE(tu_buffer, buffer, buffer_info->buffer);
 
-   uint32_t range = get_range(buffer, buffer_info->offset, buffer_info->range);
+   uint32_t range = vk_buffer_range(&buffer->vk, buffer_info->offset, 
buffer_info->range);
    /* The HW range is in vec4 units */
    range = ALIGN_POT(range, 16) / 16;
    uint64_t va = buffer->iova + buffer_info->offset;
diff --git a/src/freedreno/vulkan/tu_device.c b/src/freedreno/vulkan/tu_device.c
index 0f97ad13f65..50163a94894 100644
--- a/src/freedreno/vulkan/tu_device.c
+++ b/src/freedreno/vulkan/tu_device.c
@@ -2570,7 +2570,7 @@ tu_GetBufferMemoryRequirements2(
 {
    TU_FROM_HANDLE(tu_buffer, buffer, pInfo->buffer);
 
-   tu_get_buffer_memory_requirements(buffer->size, pMemoryRequirements);
+   tu_get_buffer_memory_requirements(buffer->vk.size, pMemoryRequirements);
 }
 
 VKAPI_ATTR void VKAPI_CALL
@@ -2725,17 +2725,11 @@ tu_CreateBuffer(VkDevice _device,
    TU_FROM_HANDLE(tu_device, device, _device);
    struct tu_buffer *buffer;
 
-   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 = tu_buffer_to_handle(buffer);
 
    return VK_SUCCESS;
@@ -2752,7 +2746,7 @@ tu_DestroyBuffer(VkDevice _device,
    if (!buffer)
       return;
 
-   vk_object_free(&device->vk, pAllocator, buffer);
+   vk_buffer_destroy(&device->vk, pAllocator, &buffer->vk);
 }
 
 VKAPI_ATTR VkResult VKAPI_CALL
diff --git a/src/freedreno/vulkan/tu_device.h b/src/freedreno/vulkan/tu_device.h
index 018c1e2e4d8..eade2c6288e 100644
--- a/src/freedreno/vulkan/tu_device.h
+++ b/src/freedreno/vulkan/tu_device.h
@@ -12,6 +12,8 @@
 
 #include "tu_common.h"
 
+#include "vk_buffer.h"
+
 #include "tu_autotune.h"
 #include "tu_pass.h"
 #include "tu_perfetto.h"
@@ -350,17 +352,12 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(tu_device_memory, base, 
VkDeviceMemory,
 
 struct tu_buffer
 {
-   struct vk_object_base base;
-
-   VkDeviceSize size;
-
-   VkBufferUsageFlags usage;
-   VkBufferCreateFlags flags;
+   struct vk_buffer vk;
 
    struct tu_bo *bo;
    uint64_t iova;
 };
-VK_DEFINE_NONDISP_HANDLE_CASTS(tu_buffer, base, VkBuffer,
+VK_DEFINE_NONDISP_HANDLE_CASTS(tu_buffer, vk.base, VkBuffer,
                                VK_OBJECT_TYPE_BUFFER)
 
 struct tu_attachment_info
diff --git a/src/freedreno/vulkan/tu_image.c b/src/freedreno/vulkan/tu_image.c
index cda92864fb9..54211acca8d 100644
--- a/src/freedreno/vulkan/tu_image.c
+++ b/src/freedreno/vulkan/tu_image.c
@@ -835,12 +835,8 @@ tu_buffer_view_init(struct tu_buffer_view *view,
 
    view->buffer = buffer;
 
-   uint32_t range;
-   if (pCreateInfo->range == VK_WHOLE_SIZE)
-      range = buffer->size - pCreateInfo->offset;
-   else
-      range = pCreateInfo->range;
-
+   uint32_t range = vk_buffer_range(&buffer->vk, pCreateInfo->offset,
+         pCreateInfo->range);
    uint8_t swiz[4] = { PIPE_SWIZZLE_X, PIPE_SWIZZLE_Y, PIPE_SWIZZLE_Z,
                        PIPE_SWIZZLE_W };
 

Reply via email to