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;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.flags
is a bitmask of VkInstanceCreateFlagBits indicating the behavior of the instance.pApplicationInfo
isNULL
or a pointer to aVkApplicationInfo
structure. If notNULL
, this information helps implementations recognize behavior inherent to classes of applications. VkApplicationInfo is defined in detail below.enabledLayerCount
is the number of global layers to enable.ppEnabledLayerNames
is a pointer to an array ofenabledLayerCount
null-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.enabledExtensionCount
is the number of global extensions to enable.ppEnabledExtensionNames
is a pointer to an array ofenabledExtensionCount
null-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
element of the VkInstanceCreateInfo
structure given
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 struct to the pNext
element of
the VkInstanceCreateInfo
structure given 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
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 struct 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