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:

committed by
Marge Bot

parent
b31919f36e
commit
5ff01962fc
@@ -2497,8 +2497,17 @@ v3dv_buffer_init(struct v3dv_device *device,
|
|||||||
struct v3dv_buffer *buffer,
|
struct v3dv_buffer *buffer,
|
||||||
uint32_t alignment)
|
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->size = pCreateInfo->size;
|
||||||
buffer->usage = pCreateInfo->usage;
|
buffer->usage = usage;
|
||||||
buffer->alignment = alignment;
|
buffer->alignment = alignment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -893,8 +893,18 @@ v3dv_CreateBufferView(VkDevice _device,
|
|||||||
v3dv_X(device, get_internal_type_bpp_for_output_format)
|
v3dv_X(device, get_internal_type_bpp_for_output_format)
|
||||||
(view->format->planes[0].rt_type, &view->internal_type, &view->internal_bpp);
|
(view->format->planes[0].rt_type, &view->internal_type, &view->internal_bpp);
|
||||||
|
|
||||||
if (buffer->usage & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT ||
|
const VkBufferUsageFlags2CreateInfoKHR *flags2 =
|
||||||
buffer->usage & VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT)
|
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);
|
v3dv_X(device, pack_texture_shader_state_from_buffer_view)(device, view);
|
||||||
|
|
||||||
*pView = v3dv_buffer_view_to_handle(view);
|
*pView = v3dv_buffer_view_to_handle(view);
|
||||||
|
@@ -820,7 +820,7 @@ struct v3dv_buffer {
|
|||||||
struct vk_object_base base;
|
struct vk_object_base base;
|
||||||
|
|
||||||
VkDeviceSize size;
|
VkDeviceSize size;
|
||||||
VkBufferUsageFlags usage;
|
VkBufferUsageFlagBits2KHR usage;
|
||||||
uint32_t alignment;
|
uint32_t alignment;
|
||||||
|
|
||||||
struct v3dv_device_memory *mem;
|
struct v3dv_device_memory *mem;
|
||||||
|
Reference in New Issue
Block a user