// Copyright 2020-2024 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

[open,refpage='VkLayerSettingsCreateInfoEXT',desc='Specify layer capabilities for a Vulkan instance',type='structs']
--
To create a Vulkan instance with a specific configuration of layer settings,
add slink:VkLayerSettingsCreateInfoEXT structures to the pname:pNext chain
of the slink:VkInstanceCreateInfo structure, specifying the settings to be
configured.

include::{generated}/api/structs/VkLayerSettingsCreateInfoEXT.adoc[]

  * pname:sType is a elink:VkStructureType value identifying this structure.
  * pname:pNext is `NULL` or a pointer to a structure extending this
    structure.
  * pname:settingCount is the number of settings to configure.
  * pname:pSettings is a pointer to an array of pname:settingCount
    slink:VkLayerSettingEXT values specifying the setting to be configured.

include::{generated}/validity/structs/VkLayerSettingsCreateInfoEXT.adoc[]
--

[open,refpage='VkLayerSettingEXT',desc='Specify a layer capability to configure',type='structs']
--
The values of elements of the
slink:VkLayerSettingsCreateInfoEXT::pname:pSettings array, specifying layer
settings to be configured, are:

include::{generated}/api/structs/VkLayerSettingEXT.adoc[]

  * pname:pLayerName is a pointer to a null-terminated UTF-8 string naming
    the layer to configure the setting from.
  * pname:pSettingName is a pointer to a null-terminated UTF-8 string naming
    the setting to configure.
    Unknown pname:pSettingName by the layer are ignored.
  * pname:type is a elink:VkLayerSettingTypeEXT value specifying the type of
    the pname:pValues values.
  * pname:count is the number of values used to configure the layer setting.
  * pname:pValues is a pointer to an array of pname:count values of the type
    indicated by pname:type to configure the layer setting.

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

include::{generated}/validity/structs/VkLayerSettingEXT.adoc[]
--

[open,refpage='VkLayerSettingTypeEXT',desc='Type of the values that can be passed to a layer',type='enums']
--
Possible values of slink:VkLayerSettingEXT::pname:type, specifying the type
of the data returned in slink:VkLayerSettingEXT::pname:pValues, are:

include::{generated}/api/enums/VkLayerSettingTypeEXT.adoc[]

  * ename:VK_LAYER_SETTING_TYPE_BOOL32_EXT specifies that the layer
    setting's type is basetype:VkBool32.
  * ename:VK_LAYER_SETTING_TYPE_INT32_EXT specifies that the layer setting's
    type is signed 32-bit integer.
  * ename:VK_LAYER_SETTING_TYPE_INT64_EXT specifies that the layer setting's
    type is signed 64-bit integer.
  * ename:VK_LAYER_SETTING_TYPE_UINT32_EXT specifies that the layer
    setting's type is unsigned 32-bit integer.
  * ename:VK_LAYER_SETTING_TYPE_UINT64_EXT specifies that the layer
    setting's type is unsigned 64-bit integer.
  * ename:VK_LAYER_SETTING_TYPE_FLOAT32_EXT specifies that the layer
    setting's type is 32-bit floating-point.
  * ename:VK_LAYER_SETTING_TYPE_FLOAT64_EXT specifies that the layer
    setting's type is 64-bit floating-point.
  * ename:VK_LAYER_SETTING_TYPE_STRING_EXT specifies that the layer
    setting's type is a pointer to a null-terminated UTF-8 string.
--
