From eab5b453cd4ff5ff1f5d056f7a1fdb0cd7a6543e Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 6 Sep 2024 09:21:30 +0200 Subject: [PATCH] radv: fix allocating sparse descriptor buffers in the 32-bit addr space There are two bugs: - VK_KHR_maintenance5 added VkBufferUsageFlags2CreateInfoKHR, so checking for pCreateInfo->usage is incomplete - this was also missing the usage flag for descriptor buffer with samplers This fixes recent VKCTS coverage in dEQP-VK.binding_model.descriptor_buffer.*. Fixes: 059391b6311 ("radv: use 32bit va range for sparse descriptor buffers") Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_buffer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/amd/vulkan/radv_buffer.c b/src/amd/vulkan/radv_buffer.c index b68d9cba230..4e1031937b4 100644 --- a/src/amd/vulkan/radv_buffer.c +++ b/src/amd/vulkan/radv_buffer.c @@ -89,7 +89,8 @@ radv_create_buffer(struct radv_device *device, const VkBufferCreateInfo *pCreate enum radeon_bo_flag flags = RADEON_FLAG_VIRTUAL; if (pCreateInfo->flags & VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT) flags |= RADEON_FLAG_REPLAYABLE; - if (pCreateInfo->usage & VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT) + if (buffer->vk.usage & + (VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT | VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT)) flags |= RADEON_FLAG_32BIT; uint64_t replay_address = 0;