Use VkPhysicalDeviceFeatures2 on replay for patching enabled features

This commit is contained in:
baldurk
2018-11-20 16:48:59 +00:00
parent 648eeaa42e
commit 0910de41ad
@@ -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 =