mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-18 06:10:36 +01:00
radv: Implement sparse buffer creation.
Signed-off-by: Bas Nieuwenhuizen <basni@google.com> Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
715df30a4e
commit
ef0e505d02
2 changed files with 21 additions and 2 deletions
|
|
@ -1881,8 +1881,12 @@ void radv_GetBufferMemoryRequirements(
|
|||
|
||||
pMemoryRequirements->memoryTypeBits = (1u << RADV_MEM_TYPE_COUNT) - 1;
|
||||
|
||||
pMemoryRequirements->size = buffer->size;
|
||||
pMemoryRequirements->alignment = 16;
|
||||
if (buffer->flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT)
|
||||
pMemoryRequirements->alignment = 4096;
|
||||
else
|
||||
pMemoryRequirements->alignment = 16;
|
||||
|
||||
pMemoryRequirements->size = align64(buffer->size, pMemoryRequirements->alignment);
|
||||
}
|
||||
|
||||
void radv_GetImageMemoryRequirements(
|
||||
|
|
@ -2208,6 +2212,17 @@ VkResult radv_CreateBuffer(
|
|||
buffer->usage = pCreateInfo->usage;
|
||||
buffer->bo = NULL;
|
||||
buffer->offset = 0;
|
||||
buffer->flags = pCreateInfo->flags;
|
||||
|
||||
if (pCreateInfo->flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) {
|
||||
buffer->bo = device->ws->buffer_create(device->ws,
|
||||
align64(buffer->size, 4096),
|
||||
4096, 0, RADEON_FLAG_VIRTUAL);
|
||||
if (!buffer->bo) {
|
||||
vk_free2(&device->alloc, pAllocator, buffer);
|
||||
return vk_error(VK_ERROR_OUT_OF_DEVICE_MEMORY);
|
||||
}
|
||||
}
|
||||
|
||||
*pBuffer = radv_buffer_to_handle(buffer);
|
||||
|
||||
|
|
@ -2225,6 +2240,9 @@ void radv_DestroyBuffer(
|
|||
if (!buffer)
|
||||
return;
|
||||
|
||||
if (buffer->flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT)
|
||||
device->ws->buffer_destroy(buffer->bo);
|
||||
|
||||
vk_free2(&device->alloc, pAllocator, buffer);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -557,6 +557,7 @@ struct radv_buffer {
|
|||
VkDeviceSize size;
|
||||
|
||||
VkBufferUsageFlags usage;
|
||||
VkBufferCreateFlags flags;
|
||||
|
||||
/* Set when bound */
|
||||
struct radeon_winsys_bo * bo;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue