turnip: use vk_buffer

Mainly for vk_buffer_range.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18588>
This commit is contained in:
Chia-I Wu
2022-08-19 13:28:23 -07:00
committed by Marge Bot
parent 2664d59aee
commit 43430fe240
6 changed files with 16 additions and 40 deletions
+1 -2
View File
@@ -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;
+3 -3
View File
@@ -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;
}
+2 -12
View File
@@ -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;
+4 -10
View File
@@ -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
+4 -7
View File
@@ -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
+2 -6
View File
@@ -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 };