VkInstanceCreateInfo
The VkInstanceCreateInfo structure is defined as:
typedef struct VkInstanceCreateInfo {
VkStructureType sType;
const void* pNext;
VkInstanceCreateFlags flags;
const VkApplicationInfo* pApplicationInfo;
uint32_t enabledLayerCount;
const char* const* ppEnabledLayerNames;
uint32_t enabledExtensionCount;
const char* const* ppEnabledExtensionNames;
} VkInstanceCreateInfo;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.flagsis a bitmask of VkInstanceCreateFlagBits indicating the behavior of the instance.pApplicationInfoisNULLor a pointer to aVkApplicationInfostructure. If notNULL, this information helps implementations recognize behavior inherent to classes of applications. VkApplicationInfo is defined in detail below.enabledLayerCountis the number of global layers to enable.ppEnabledLayerNamesis a pointer to an array ofenabledLayerCountnull-terminated UTF-8 strings containing the names of layers to enable for the created instance. The layers are loaded in the order they are listed in this array, with the first array element being the closest to the application, and the last array element being the closest to the driver. See the Layers section for further details.enabledExtensionCountis the number of global extensions to enable.ppEnabledExtensionNamesis a pointer to an array ofenabledExtensionCountnull-terminated UTF-8 strings containing the names of extensions to enable.
To capture events that occur while creating or destroying an instance, an
application can link a
VkDebugReportCallbackCreateInfoEXT structure
or a
VkDebugUtilsMessengerCreateInfoEXT structure
to the pNext chain of the VkInstanceCreateInfo structure passed
to vkCreateInstance.
This callback is only valid for the duration of the vkCreateInstance
and the vkDestroyInstance call.
Use
vkCreateDebugReportCallbackEXT
or
vkCreateDebugUtilsMessengerEXT
to create persistent callback objects.
An application can add additional drivers by including the
VkDirectDriverLoadingListLUNARG structure in the pNext chain of
the VkInstanceCreateInfo structure passed to vkCreateInstance.
VkDirectDriverLoadingListLUNARG allows applications to ship drivers with themselves. Only drivers that are designed to work with it should be used, such as drivers that implement Vulkan in software or that implement Vulkan by translating it to a different API. Any driver that requires installation should not be used, such as hardware drivers.
Valid Usage
VUID-VkInstanceCreateInfo-pNext-04925
If the pNext chain of VkInstanceCreateInfo includes a
VkDebugReportCallbackCreateInfoEXT structure, the list of enabled
extensions in ppEnabledExtensionNames must contain
VK_EXT_debug_report
VUID-VkInstanceCreateInfo-pNext-04926
If the pNext chain of VkInstanceCreateInfo includes a
VkDebugUtilsMessengerCreateInfoEXT structure, the list of enabled
extensions in ppEnabledExtensionNames must contain
VK_EXT_debug_utils
VUID-VkInstanceCreateInfo-pNext-06779
If the pNext chain includes a
VkExportMetalObjectCreateInfoEXT structure, its
exportObjectType member must be either
VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT or
VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT
VUID-VkInstanceCreateInfo-flags-06559
If flags has the
VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR bit set, the list
of enabled extensions in ppEnabledExtensionNames must contain
VK_KHR_portability_enumeration
VUID-VkInstanceCreateInfo-pNext-09400
If the pNext chain of VkInstanceCreateInfo includes a
VkDirectDriverLoadingListLUNARG structure, the list of enabled
extensions in ppEnabledExtensionNames must contain
VK_LUNARG_direct_driver_loading
VUID-VkInstanceCreateInfo-pNext-10242
If the pNext chain of VkInstanceCreateInfo includes a
VkLayerSettingsCreateInfoEXT structure, the list of enabled
extensions in ppEnabledExtensionNames must contain
VK_EXT_layer_settings
VUID-VkInstanceCreateInfo-pNext-10243
If the pNext chain of VkInstanceCreateInfo includes a
VkValidationFeaturesEXT structure, the list of enabled extensions
in ppEnabledExtensionNames must contain
VK_EXT_validation_features
VUID-VkInstanceCreateInfo-pNext-10244
If the pNext chain of VkInstanceCreateInfo includes a
VkValidationFlagsEXT structure, the list of enabled extensions in
ppEnabledExtensionNames must contain
VK_EXT_validation_flags
Valid Usage (Implicit)
VUID-VkInstanceCreateInfo-sType-sType
sType must be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
VUID-VkInstanceCreateInfo-pNext-pNext
Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkDebugReportCallbackCreateInfoEXT, VkDebugUtilsMessengerCreateInfoEXT, VkDirectDriverLoadingListLUNARG, VkExportMetalObjectCreateInfoEXT, VkLayerSettingsCreateInfoEXT, VkValidationFeaturesEXT, or VkValidationFlagsEXT
VUID-VkInstanceCreateInfo-sType-unique
The sType value of each structure in the pNext chain must be unique, with the exception of structures of type VkDebugUtilsMessengerCreateInfoEXT, VkExportMetalObjectCreateInfoEXT, or VkLayerSettingsCreateInfoEXT
VUID-VkInstanceCreateInfo-flags-parameter
flags must be a valid combination of VkInstanceCreateFlagBits values
VUID-VkInstanceCreateInfo-pApplicationInfo-parameter
If pApplicationInfo is not NULL, pApplicationInfo must be a valid pointer to a valid VkApplicationInfo structure
VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter
If enabledLayerCount is not 0, ppEnabledLayerNames must be a valid pointer to an array of enabledLayerCount null-terminated UTF-8 strings
VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter
If enabledExtensionCount is not 0, ppEnabledExtensionNames must be a valid pointer to an array of enabledExtensionCount null-terminated UTF-8 strings