VulkanRenderer: Enable synchronization validation in debug

This commit is contained in:
Jérôme Leclercq 2021-05-05 12:06:30 +02:00
parent 961c3bf1df
commit ee690072f8
1 changed files with 30 additions and 9 deletions

View File

@ -202,17 +202,38 @@ namespace Nz
} }
} }
VkInstanceCreateInfo instanceInfo = { VkInstanceCreateInfo instanceInfo = { VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO };
VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
nullptr, #ifdef NAZARA_DEBUG
createFlags, VkValidationFeaturesEXT features = {};
&appInfo,
UInt32(enabledLayers.size()), std::vector<VkValidationFeatureEnableEXT> enabledFeatures = {
enabledLayers.data(), //VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT,
UInt32(enabledExtensions.size()), //VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT,
enabledExtensions.data() VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT
}; };
if (availableLayers.count("VK_LAYER_KHRONOS_validation"))
{
enabledExtensions.push_back(VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME);
features.sType = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT;
features.enabledValidationFeatureCount = UInt32(enabledFeatures.size());
features.pEnabledValidationFeatures = enabledFeatures.data();
instanceInfo.pNext = &features;
}
#endif
instanceInfo.flags = createFlags;
instanceInfo.pApplicationInfo = &appInfo;
instanceInfo.enabledExtensionCount = UInt32(enabledExtensions.size());
instanceInfo.ppEnabledExtensionNames = enabledExtensions.data();
instanceInfo.enabledLayerCount = UInt32(enabledLayers.size());
instanceInfo.ppEnabledLayerNames = enabledLayers.data();
if (!s_instance.Create(instanceInfo)) if (!s_instance.Create(instanceInfo))
{ {
NazaraError("Failed to create instance: " + TranslateVulkanError(s_instance.GetLastErrorCode())); NazaraError("Failed to create instance: " + TranslateVulkanError(s_instance.GetLastErrorCode()));