From a3007ffa05cafa7caa15d4c58d101b5f552ca1d1 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 13 Jan 2021 10:42:46 +0000 Subject: [PATCH] Make sure BDA capture/replay bit is enabled --- .../driver/vulkan/wrappers/vk_device_funcs.cpp | 14 +++++++++++++- util/test/demos/vk/vk_khr_buffer_address.cpp | 3 +++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index aed855783..83a5ab618 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -2995,7 +2995,19 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi (VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *)FindNextStruct( &createInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT); - if(!existingKHR && !existingEXT) + if(existingKHR) + { + if(existingKHR->bufferDeviceAddress) + existingKHR->bufferDeviceAddressCaptureReplay = VK_TRUE; + existingKHR->bufferDeviceAddress = VK_TRUE; + } + else if(existingEXT) + { + if(existingEXT->bufferDeviceAddress) + existingEXT->bufferDeviceAddressCaptureReplay = VK_TRUE; + existingEXT->bufferDeviceAddress = VK_TRUE; + } + else { // don't add a new VkPhysicalDeviceVulkan12Features to the pNext chain because if we do // we have to remove any components etc. Instead just add the individual diff --git a/util/test/demos/vk/vk_khr_buffer_address.cpp b/util/test/demos/vk/vk_khr_buffer_address.cpp index 08ca7a3eb..459f225c0 100644 --- a/util/test/demos/vk/vk_khr_buffer_address.cpp +++ b/util/test/demos/vk/vk_khr_buffer_address.cpp @@ -135,6 +135,9 @@ void main() if(!bufaddrFeatures.bufferDeviceAddress) Avail = "Buffer device address feature 'bufferDeviceAddress' not available"; + bufaddrFeatures.bufferDeviceAddressCaptureReplay = 0; + bufaddrFeatures.bufferDeviceAddressMultiDevice = 0; + devInfoNext = &bufaddrFeatures; }