v3dv: handle VkBufferUsageFlags2CreateInfoKHR

This is added with VK_KHR_maintenance5 to allow 64-bit
for buffer usage flags.

The flags are backwards compatible so we don't need to
change the flag enum values by the new ones.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29449>
This commit is contained in:
Iago Toral Quiroga
2024-05-28 10:46:32 +02:00
committed by Marge Bot
parent b31919f36e
commit 5ff01962fc
3 changed files with 23 additions and 4 deletions

View File

@@ -2497,8 +2497,17 @@ v3dv_buffer_init(struct v3dv_device *device,
struct v3dv_buffer *buffer,
uint32_t alignment)
{
const VkBufferUsageFlags2CreateInfoKHR *flags2 =
vk_find_struct_const(pCreateInfo->pNext,
BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR);
VkBufferUsageFlags2KHR usage;
if (flags2)
usage = flags2->usage;
else
usage = pCreateInfo->usage;
buffer->size = pCreateInfo->size;
buffer->usage = pCreateInfo->usage;
buffer->usage = usage;
buffer->alignment = alignment;
}

View File

@@ -893,8 +893,18 @@ v3dv_CreateBufferView(VkDevice _device,
v3dv_X(device, get_internal_type_bpp_for_output_format)
(view->format->planes[0].rt_type, &view->internal_type, &view->internal_bpp);
if (buffer->usage & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT ||
buffer->usage & VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT)
const VkBufferUsageFlags2CreateInfoKHR *flags2 =
vk_find_struct_const(pCreateInfo->pNext,
BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR);
VkBufferUsageFlags2KHR usage;
if (flags2)
usage = flags2->usage;
else
usage = buffer->usage;
if (usage & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT ||
usage & VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT)
v3dv_X(device, pack_texture_shader_state_from_buffer_view)(device, view);
*pView = v3dv_buffer_view_to_handle(view);

View File

@@ -820,7 +820,7 @@ struct v3dv_buffer {
struct vk_object_base base;
VkDeviceSize size;
VkBufferUsageFlags usage;
VkBufferUsageFlagBits2KHR usage;
uint32_t alignment;
struct v3dv_device_memory *mem;