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:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user