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 };
