VkApplicationInfo
The VkApplicationInfo structure is defined as:
typedef struct VkApplicationInfo {
VkStructureType sType;
const void* pNext;
const char* pApplicationName;
uint32_t applicationVersion;
const char* pEngineName;
uint32_t engineVersion;
uint32_t apiVersion;
} VkApplicationInfo;
pub struct ApplicationInfo {
s_type: vk::StructureType,
p_next: *const c_void,
p_application_name: *const c_char,
application_version: u32,
p_engine_name: *const c_char,
engine_version: u32,
api_version: u32,
}
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.pApplicationNameisNULLor is a pointer to a null-terminated UTF-8 string containing the name of the application.applicationVersionis an unsigned integer variable containing the developer-supplied version number of the application.pEngineNameisNULLor is a pointer to a null-terminated UTF-8 string containing the name of the engine (if any) used to create the application.engineVersionis an unsigned integer variable containing the developer-supplied version number of the engine used to create the application.apiVersionmust be the highest version of Vulkan that the application is designed to use, encoded as described in Version Numbers. The patch version number specified inapiVersionis ignored when creating an instance object. The variant version of the instance must match that requested inapiVersion.
Vulkan 1.0 implementations were required to return
VK_ERROR_INCOMPATIBLE_DRIVER if apiVersion was larger than 1.0.
Implementations that support Vulkan 1.1 or later must not return
VK_ERROR_INCOMPATIBLE_DRIVER for any value of apiVersion
.
VK_ERROR_INCOMPATIBLE_DRIVER, applications should determine the
version of Vulkan available before calling vkCreateInstance.
If the vkGetInstanceProcAddr returns NULL for
vkEnumerateInstanceVersion, it is a Vulkan 1.0 implementation.
Otherwise, the application can call vkEnumerateInstanceVersion to
determine the version of Vulkan.As long as the instance supports at least Vulkan 1.1, an application can use different versions of Vulkan with an instance than it does with a device or physical device.
apiVersion as the highest API
version the application targets, and will validate API usage against the
minimum of that version and the implementation version (instance or device,
depending on context).
If an application tries to use functionality from a greater version than
this, a validation error will be triggered.For example, if the instance supports Vulkan 1.1 and three physical devices
support Vulkan 1.0, Vulkan 1.1, and Vulkan 1.2, respectively, and if the
application sets apiVersion to 1.2, the application can use the
following versions of Vulkan:- Vulkan 1.0 can be used with the instance and with all physical devices.
- Vulkan 1.1 can be used with the instance and with the physical devices that support Vulkan 1.1 and Vulkan 1.2.
- Vulkan 1.2 can be used with the physical device that supports Vulkan 1.2.
apiVersion
to 1.1, then the application must not use Vulkan 1.2 functionality on the
physical device that supports Vulkan 1.2.NULLVkInstanceCreateInfo::pApplicationInfo or
providing an apiVersion of 0 is equivalent to providing an
apiVersion of
VK_MAKE_API_VERSION(0,1,0,0).Valid Usage
VUID-VkApplicationInfo-apiVersion-04010
If apiVersion is not 0, then it must be greater than or equal
to VK_API_VERSION_1_0
Valid Usage (Implicit)
VUID-VkApplicationInfo-sType-sType
sType must be VK_STRUCTURE_TYPE_APPLICATION_INFO
VUID-VkApplicationInfo-pNext-pNext
pNext must be NULL
VUID-VkApplicationInfo-pApplicationName-parameter
If pApplicationName is not NULL, pApplicationName must be a null-terminated UTF-8 string
VUID-VkApplicationInfo-pEngineName-parameter
If pEngineName is not NULL, pEngineName must be a null-terminated UTF-8 string