From 9eff285a46fd7b7cfc39a8c818e0a5edd1159816 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Sat, 6 Jul 2024 15:48:30 +0300 Subject: [PATCH] anv: fix extended buffer flags usages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Lionel Landwerlin Fixes: bcc0ec8e6c ("anv: enable KHR_maintenance5") Reviewed-by: Tapani Pälli Part-of: --- src/intel/vulkan/anv_buffer.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/intel/vulkan/anv_buffer.c b/src/intel/vulkan/anv_buffer.c index f5d663d7aef..c2707faf8f2 100644 --- a/src/intel/vulkan/anv_buffer.c +++ b/src/intel/vulkan/anv_buffer.c @@ -53,7 +53,7 @@ static void anv_get_buffer_memory_requirements(struct anv_device *device, VkBufferCreateFlags flags, VkDeviceSize size, - VkBufferUsageFlags usage, + VkBufferUsageFlags2KHR usage, bool is_sparse, VkMemoryRequirements2* pMemoryRequirements) { @@ -69,8 +69,8 @@ anv_get_buffer_memory_requirements(struct anv_device *device, uint32_t memory_types; if (flags & VK_BUFFER_CREATE_PROTECTED_BIT) memory_types = device->physical->memory.protected_mem_types; - else if (usage & (VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT | - VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT)) + else if (usage & (VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT | + VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT)) memory_types = device->physical->memory.dynamic_visible_mem_types; else memory_types = device->physical->memory.default_buffer_mem_types; @@ -124,6 +124,15 @@ anv_get_buffer_memory_requirements(struct anv_device *device, } } +static VkBufferUsageFlags2KHR +get_buffer_usages(const VkBufferCreateInfo *create_info) +{ + const VkBufferUsageFlags2CreateInfoKHR *usage2_info = + vk_find_struct_const(create_info->pNext, + BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR); + return usage2_info != NULL ? usage2_info->usage : create_info->usage; +} + void anv_GetDeviceBufferMemoryRequirements( VkDevice _device, const VkDeviceBufferMemoryRequirements* pInfo, @@ -132,6 +141,7 @@ void anv_GetDeviceBufferMemoryRequirements( ANV_FROM_HANDLE(anv_device, device, _device); const bool is_sparse = pInfo->pCreateInfo->flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT; + VkBufferUsageFlags2KHR usages = get_buffer_usages(pInfo->pCreateInfo); if ((device->physical->sparse_type == ANV_SPARSE_TYPE_NOT_SUPPORTED) && INTEL_DEBUG(DEBUG_SPARSE) && @@ -144,7 +154,7 @@ void anv_GetDeviceBufferMemoryRequirements( anv_get_buffer_memory_requirements(device, pInfo->pCreateInfo->flags, pInfo->pCreateInfo->size, - pInfo->pCreateInfo->usage, + usages, is_sparse, pMemoryRequirements); }