@@ -44,21 +44,6 @@ ShaderDebugPrintf::ShaderDebugPrintf()
4444 title = " Shader debugprintf" ;
4545
4646 add_device_extension (VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME);
47-
48- // If layer settings available, use it to configure validation layer for debugPrintfEXT
49- add_instance_extension (VK_EXT_LAYER_SETTINGS_EXTENSION_NAME, /* optional*/ true );
50-
51- VkLayerSettingEXT layerSetting;
52- layerSetting.pLayerName = " VK_LAYER_KHRONOS_validation" ;
53- layerSetting.pSettingName = " enables" ;
54- layerSetting.type = VK_LAYER_SETTING_TYPE_STRING_EXT;
55- layerSetting.valueCount = 1 ;
56-
57- // Make this static so layer setting reference remains valid after leaving constructor scope
58- static const char *layerEnables = " VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT" ;
59- layerSetting.pValues = &layerEnables;
60-
61- add_layer_setting (layerSetting);
6247}
6348
6449ShaderDebugPrintf::~ShaderDebugPrintf ()
@@ -465,14 +450,27 @@ std::unique_ptr<vkb::Instance> ShaderDebugPrintf::create_instance(bool headless)
465450 {
466451 set_api_version (debugprintf_api_version);
467452
468- // Run standard create_instance() from framework (with set_api_version and layer settings support) and return
453+ // Since layer settings extension is available, use it to configure validation layer for debugPrintfEXT
454+ add_instance_extension (VK_EXT_LAYER_SETTINGS_EXTENSION_NAME, /* optional*/ false );
455+
456+ VkLayerSettingEXT layerSetting;
457+ layerSetting.pLayerName = " VK_LAYER_KHRONOS_validation" ;
458+ layerSetting.pSettingName = " enables" ;
459+ layerSetting.type = VK_LAYER_SETTING_TYPE_STRING_EXT;
460+ layerSetting.valueCount = 1 ;
461+
462+ // Make this static so layer setting reference remains valid after leaving constructor scope
463+ static const char *layerEnables = " VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT" ;
464+ layerSetting.pValues = &layerEnables;
465+
466+ add_layer_setting (layerSetting);
467+
468+ // Run standard create_instance() from framework with set_api_version(), add_instance_extension(), and add_layer_setting() support
469469 return VulkanSample::create_instance (headless);
470470 }
471471
472472 // Run remainder of this custom create_instance() (without layer settings support) and return
473473 std::vector<const char *> enabled_extensions;
474- enabled_extensions.push_back (VK_KHR_SURFACE_EXTENSION_NAME);
475-
476474 for (const char *extension_name : window->get_required_surface_extensions ())
477475 {
478476 enabled_extensions.push_back (extension_name);
@@ -496,6 +494,9 @@ std::unique_ptr<vkb::Instance> ShaderDebugPrintf::create_instance(bool headless)
496494 app_info.pEngineName = " Vulkan Samples" ;
497495 app_info.apiVersion = debugprintf_api_version;
498496
497+ // Legacy extension for configuring validation layer features using VkValidationFeaturesEXT
498+ enabled_extensions.push_back (VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME);
499+
499500 // Shader printf is a feature of the validation layers that needs to be enabled
500501 std::vector<VkValidationFeatureEnableEXT> validation_feature_enables = {VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT};
501502
0 commit comments