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: 059391b631 ("radv: use 32bit va range for sparse descriptor buffers")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31054>
This commit is contained in:
Samuel Pitoiset
2024-09-06 09:21:30 +02:00
committed by Marge Bot
parent a089d8e89b
commit eab5b453cd

View File

@@ -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;