diff --git a/util/test/demos/vk/vk_test.cpp b/util/test/demos/vk/vk_test.cpp index 2ce63e6b8..22c482c1e 100644 --- a/util/test/demos/vk/vk_test.cpp +++ b/util/test/demos/vk/vk_test.cpp @@ -188,6 +188,9 @@ void VulkanGraphicsTest::Prepare(int argc, char **argv) // enable debug utils when possible optInstExts.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); + // ditto validation features + optInstExts.push_back(VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME); + CHECK_VKR(vkh::enumerateInstanceLayerProperties(availInstLayers)); if(debugDevice) @@ -288,6 +291,30 @@ void VulkanGraphicsTest::Prepare(int argc, char **argv) enabledInstExts.push_back(search); } + VkValidationFeaturesEXT featuresEXT = {VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT}; + VkValidationFeatureEnableEXT enableFeatures[] = { + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT, + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT, + }; + featuresEXT.enabledValidationFeatureCount = ARRAY_COUNT(enableFeatures); + featuresEXT.pEnabledValidationFeatures = enableFeatures; + + // allow command line override + for(int i = 0; i < argc; i++) + { + if(!strcmp(argv[i], "--gpuva")) + { + for(const char *a : enabledInstExts) + { + if(std::string(a) == VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME) + { + featuresEXT.pNext = instInfoNext; + instInfoNext = &featuresEXT; + } + } + } + } + vulkanVersion = volkGetInstanceVersion(); vkh::ApplicationInfo app("RenderDoc autotesting", VK_MAKE_VERSION(1, 0, 0),