From ce52e7b1efe7c5331ff35c83a17ee4bcd64c1244 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: (cherry picked from commit c8c354d9c3a2e79230723f1c8b0571b20d034fee) --- .pick_status.json | 2 +- src/amd/vulkan/radv_physical_device.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index f5c765151cc..2efcf9d69b3 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4,7 +4,7 @@ "description": "radv: Disable EXT BDA capture and replay.", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/radv_physical_device.c b/src/amd/vulkan/radv_physical_device.c index 699d8af5ad8..ae77285a19c 100644 --- a/src/amd/vulkan/radv_physical_device.c +++ b/src/amd/vulkan/radv_physical_device.c @@ -983,7 +983,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,