diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index d76e0a373..f4cbcd8d6 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -314,9 +314,9 @@ RDResult WrappedVulkan::Initialise(VkInitParams ¶ms, uint64_t sectionVersion AddRequiredExtensions(true, params.Extensions, supportedExtensions); - // after 1.0, VK_KHR_get_physical_device_properties2 is promoted to core, but enable it if it's + // after 1.1, VK_KHR_get_physical_device_properties2 is promoted to core, but enable it if it's // reported as available, just in case. - if(params.APIVersion >= VK_API_VERSION_1_0) + if(params.APIVersion >= VK_API_VERSION_1_1) { if(supportedExtensions.find(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME) != supportedExtensions.end()) @@ -340,6 +340,17 @@ RDResult WrappedVulkan::Initialise(VkInitParams ¶ms, uint64_t sectionVersion } } + // enable device group extension if on 1.0, so we can use BDA. Shuts the validation layers up + if(params.APIVersion <= VK_API_VERSION_1_0) + { + if(supportedExtensions.find(VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME) != + supportedExtensions.end()) + { + if(!params.Extensions.contains(VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME)) + params.Extensions.push_back(VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME); + } + } + // verify that extensions are supported for(size_t i = 0; i < params.Extensions.size(); i++) { @@ -1916,6 +1927,9 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi Extensions.push_back(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME); RDCLOG("Enabling VK_KHR_buffer_device_address"); + if(!Extensions.contains(VK_KHR_DEVICE_GROUP_EXTENSION_NAME)) + Extensions.push_back(VK_KHR_DEVICE_GROUP_EXTENSION_NAME); + KHRbuffer = true; } else if(supportedExtensions.find(VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME) !=