Skip to content

Commit 4f53d15

Browse files
committed
Add VK_EXT_validation_features and move VK_EXT_layer_settings extensions to ShaderDebugPrintf::create_instance()
1 parent 0dc4963 commit 4f53d15

File tree

1 file changed

+19
-18
lines changed

1 file changed

+19
-18
lines changed

samples/extensions/shader_debugprintf/shader_debugprintf.cpp

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

6449
ShaderDebugPrintf::~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

Comments
 (0)