From 0910de41ade778b57494af155efa038682164e04 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 20 Nov 2018 16:48:59 +0000 Subject: [PATCH] Use VkPhysicalDeviceFeatures2 on replay for patching enabled features --- .../driver/vulkan/wrappers/vk_device_funcs.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index f905aa239..747cb314a 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -1450,7 +1450,15 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi VkPhysicalDeviceFeatures enabledFeatures = {0}; if(createInfo.pEnabledFeatures != NULL) enabledFeatures = *createInfo.pEnabledFeatures; - createInfo.pEnabledFeatures = &enabledFeatures; + + VkPhysicalDeviceFeatures2 *enabledFeatures2 = (VkPhysicalDeviceFeatures2 *)FindNextStruct( + &createInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2); + + // VkPhysicalDeviceFeatures2 takes priority + if(enabledFeatures2) + enabledFeatures = enabledFeatures2->features; + else if(createInfo.pEnabledFeatures) + enabledFeatures = *createInfo.pEnabledFeatures; VkPhysicalDeviceFeatures availFeatures = {0}; ObjDisp(physicalDevice)->GetPhysicalDeviceFeatures(Unwrap(physicalDevice), &availFeatures); @@ -1570,6 +1578,12 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi "sampleRateShading = false, save/load from depth 2DMS textures will not be " "possible"); + // patch the enabled features + if(enabledFeatures2) + enabledFeatures2->features = enabledFeatures; + else if(createInfo.pEnabledFeatures) + createInfo.pEnabledFeatures = &enabledFeatures; + uint32_t numExts = 0; VkResult vkr =