Class EXTLayerSettings

java.lang.Object
org.lwjgl.vulkan.EXTLayerSettings

public final class EXTLayerSettings extends Object
This extension provides a mechanism for configuring programmatically through the Vulkan API the behavior of layers.

This extension provides the VkLayerSettingsCreateInfoEXT struct that can be included in the pNext chain of the VkInstanceCreateInfo structure passed as the pCreateInfo parameter of CreateInstance.

The structure contains an array of VkLayerSettingEXT structure values that configure specific features of layers.

Note

The VK_EXT_layer_settings extension subsumes all the functionality provided in the VK_EXT_validation_flags extension and the VK_EXT_validation_features extension.

Example

One example usage of VK_EXT_layer_settings is as implemented by the Vulkan Profiles layer.

It allows the profiles layer tests used by the profiles layer C.I. to programmatically configure the layer for each test without affecting the C.I. environment, allowing to run multiple tests concurrently.


 const char* profile_file_data = JSON_TEST_FILES_PATH "VP_KHR_roadmap_2022.json";
 const char* profile_name_data = "VP_KHR_roadmap_2022";
 VkBool32 emulate_portability_data = VK_TRUE;
 const char* simulate_capabilities[] = {
     "SIMULATE_API_VERSION_BIT",
     "SIMULATE_FEATURES_BIT",
     "SIMULATE_PROPERTIES_BIT",
     "SIMULATE_EXTENSIONS_BIT",
     "SIMULATE_FORMATS_BIT",
     "SIMULATE_QUEUE_FAMILY_PROPERTIES_BIT"
 };
 const char* debug_reports[] = {
     "DEBUG_REPORT_ERROR_BIT",
     "DEBUG_REPORT_WARNING_BIT",
     "DEBUG_REPORT_NOTIFICATION_BIT",
     "DEBUG_REPORT_DEBUG_BIT"
 };
 
 const VkLayerSettingEXT settings[] = {
      {kLayerName, kLayerSettingsProfileFile, VK_LAYER_SETTING_TYPE_STRING_EXT, 1, &profile_file_data},
      {kLayerName, kLayerSettingsProfileName, VK_LAYER_SETTING_TYPE_STRING_EXT, 1, &profile_name_data},
      {kLayerName, kLayerSettingsEmulatePortability, VK_LAYER_SETTING_TYPE_BOOL32_EXT, 1, &emulate_portability_data},
      {kLayerName, kLayerSettingsSimulateCapabilities, VK_LAYER_SETTING_TYPE_STRING_EXT,
         static_cast<uint32_t>(std::size(simulate_capabilities)), simulate_capabilities},
      {kLayerName, kLayerSettingsDebugReports, VK_LAYER_SETTING_TYPE_STRING_EXT,
         static_cast<uint32_t>(std::size(debug_reports)), debug_reports}
 };
 
 const VkLayerSettingsCreateInfoEXT layer_settings_create_info{
     VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT, nullptr,
     static_cast<uint32_t>(std::size(settings)), settings};
 
 VkInstanceCreateInfo inst_create_info = {};
 ...
 inst_create_info.pNext = &layer_settings_create_info;
 vkCreateInstance(&inst_create_info, nullptr, &_instances);
Name String
VK_EXT_layer_settings
Extension Type
Instance extension
Registered Extension Number
497
Revision
2
Contact
Extension Proposal
VK_EXT_layer_settings
Other Extension Metadata
Last Modified Date
2023-09-23
IP Status
No known IP claims.
Contributors
  • Christophe Riccio, LunarG
  • Mark Lobodzinski, LunarG
  • Charles Giessen, LunarG
  • Spencer Fricke, LunarG
  • Juan Ramos, LunarG
  • Daniel Rakos, RasterGrid
  • Shahbaz Youssefi, Google
  • Lina Versace, Google
  • Bill Hollings, The Brenwill Workshop
  • Jon Leech, Khronos
  • Tom Olson, Arm