From c8c354d9c3a2e79230723f1c8b0571b20d034fee Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Thu, 12 Sep 2024 10:34:09 +0200 Subject: [PATCH] radv: Disable EXT BDA capture and replay. Spec allows calling VkBufferGetDeviceAddressInfo without binding to memory: VUID-VkBufferDeviceAddressInfo-buffer-02600 If buffer is non-sparse and was not created with the VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT flag, then it must be bound completely and contiguously to a single VkDeviceMemory object Which we can only do by making it sparse unconditionally, which feels very wrong to me for a capture & replay extension as that significantly impacts execution. Current theory is that this was only intended for the EXT and not the core functionality. As such, let's disable capture using the EXT. Cc: mesa-stable Part-of: --- src/amd/vulkan/radv_physical_device.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/amd/vulkan/radv_physical_device.c b/src/amd/vulkan/radv_physical_device.c index 1a1a3eaeeee..d1135cb1828 100644 --- a/src/amd/vulkan/radv_physical_device.c +++ b/src/amd/vulkan/radv_physical_device.c @@ -1024,7 +1024,7 @@ radv_physical_device_get_features(const struct radv_physical_device *pdev, struc .descriptorBindingAccelerationStructureUpdateAfterBind = true, /* VK_EXT_buffer_device_address */ - .bufferDeviceAddressCaptureReplayEXT = true, + .bufferDeviceAddressCaptureReplayEXT = false, /* VK_KHR_shader_subgroup_uniform_control_flow */ .shaderSubgroupUniformControlFlow = true,