vulkan
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_EXT_layer_settings

Description

Name

VK_EXT_layer_settings - instance extension

VK_EXT_layer_settings

Name String
VK_EXT_layer_settings
Extension Type
Instance extension
Registered Extension Number
497
Revision
2
Ratification Status
Ratified
Extension and Version Dependencies
None
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

Description

This extension provides a mechanism for configuring programmatically through the Vulkan API the behavior of layers.

This extension provides the LayerSettingsCreateInfoEXT struct that can be included in the pNext chain of the InstanceCreateInfo structure passed as the pCreateInfo parameter of createInstance.

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

Example

VK_EXT_layer_settings is 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);

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.

New Structures

New Enums

New Enum Constants

Issues

  • How should application developers figure out the list of available settings?

This extension does not provide a reflection API for layer settings. Layer settings are described in each layer JSON manifest and the documentation of each layer which implements this extension.

Version History

  • Revision 1, 2020-06-17 (Mark Lobodzinski)

    • Initial revision for Validation layer internal usages
  • Revision 2, 2023-09-26 (Christophe Riccio)

    • Refactor APIs for any layer usages and public release

See Also

LayerSettingEXT, LayerSettingTypeEXT, LayerSettingsCreateInfoEXT

Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

Synopsis

Documentation

data LayerSettingsCreateInfoEXT Source #

VkLayerSettingsCreateInfoEXT - Specify layer capabilities for a Vulkan instance

Valid Usage (Implicit)

  • If settingCount is not 0, pSettings must be a valid pointer to an array of settingCount valid LayerSettingEXT structures

See Also

VK_EXT_layer_settings, LayerSettingEXT, StructureType

Constructors

LayerSettingsCreateInfoEXT 

Fields

data LayerSettingEXT Source #

VkLayerSettingEXT - Specify a layer capability to configure

Description

When multiple LayerSettingsCreateInfoEXT structures are chained and the same pSettingName is referenced for the same pLayerName, the value of the first reference of the layer setting is used.

Valid Usage (Implicit)

  • pLayerName must be a null-terminated UTF-8 string
  • pSettingName must be a null-terminated UTF-8 string
  • type must be a valid LayerSettingTypeEXT value
  • If valueCount is not 0, pValues must be a valid pointer to an array of valueCount bytes

See Also

VK_EXT_layer_settings, LayerSettingTypeEXT, LayerSettingsCreateInfoEXT

Constructors

LayerSettingEXT 

Fields

  • layerName :: ByteString

    pLayerName is a pointer to a null-terminated UTF-8 string naming the layer to configure the setting from.

  • settingName :: ByteString

    pSettingName is a pointer to a null-terminated UTF-8 string naming the setting to configure. Unknown pSettingName by the layer are ignored.

  • type' :: LayerSettingTypeEXT

    type is a LayerSettingTypeEXT value specifying the type of the pValues values.

  • valueCount :: Word32
     
  • values :: Ptr ()

    pValues is a pointer to an array of count values of the type indicated by type to configure the layer setting.

newtype LayerSettingTypeEXT Source #

VkLayerSettingTypeEXT - Type of the values that can be passed to a layer

See Also

VK_EXT_layer_settings, LayerSettingEXT

Bundled Patterns

pattern LAYER_SETTING_TYPE_BOOL32_EXT :: LayerSettingTypeEXT

LAYER_SETTING_TYPE_BOOL32_EXT specifies that the layer setting’s type is Bool32.

pattern LAYER_SETTING_TYPE_INT32_EXT :: LayerSettingTypeEXT

LAYER_SETTING_TYPE_INT32_EXT specifies that the layer setting’s type is signed 32-bit integer.

pattern LAYER_SETTING_TYPE_INT64_EXT :: LayerSettingTypeEXT

LAYER_SETTING_TYPE_INT64_EXT specifies that the layer setting’s type is signed 64-bit integer.

pattern LAYER_SETTING_TYPE_UINT32_EXT :: LayerSettingTypeEXT

LAYER_SETTING_TYPE_UINT32_EXT specifies that the layer setting’s type is unsigned 32-bit integer.

pattern LAYER_SETTING_TYPE_UINT64_EXT :: LayerSettingTypeEXT

LAYER_SETTING_TYPE_UINT64_EXT specifies that the layer setting’s type is unsigned 64-bit integer.

pattern LAYER_SETTING_TYPE_FLOAT32_EXT :: LayerSettingTypeEXT

LAYER_SETTING_TYPE_FLOAT32_EXT specifies that the layer setting’s type is 32-bit floating-point.

pattern LAYER_SETTING_TYPE_FLOAT64_EXT :: LayerSettingTypeEXT

LAYER_SETTING_TYPE_FLOAT64_EXT specifies that the layer setting’s type is 64-bit floating-point.

pattern LAYER_SETTING_TYPE_STRING_EXT :: LayerSettingTypeEXT

LAYER_SETTING_TYPE_STRING_EXT specifies that the layer setting’s type is a pointer to a null-terminated UTF-8 string.

Instances

Instances details
Storable LayerSettingTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_layer_settings

Read LayerSettingTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_layer_settings

Show LayerSettingTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_layer_settings

Eq LayerSettingTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_layer_settings

Ord LayerSettingTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_layer_settings

Zero LayerSettingTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_layer_settings

pattern EXT_LAYER_SETTINGS_SPEC_VERSION :: forall a. Integral a => a Source #

type EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings" Source #

pattern EXT_LAYER_SETTINGS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #