Connection between application and Vulkan driver.
Technically optional but provides the driver with additional data about the application (e.g. for optimizations).
Extensions are needed for platform specific features (e.g. interacting with the windowing system). Useful extensions include:
-
VK_KHR_SURFACE_EXTENSION_NAME
(for KHR functionality i.e. swap chain format) -
"VK_KHR_xcb_surface"
(for Linux) -
VK_EXT_DEBUG_UTILS_EXTENSION_NAME
(for debugging i.e. debug messenger)
function vkEnumerateInstanceExtensionProperties
Validation layers can be added during development to catch mistakes or debug issues. However, they can be left out
in the release build for better performance. Common tasks of validation include call tracing, parameter validation,
tracking resources/leaks, thread safety etc. All of the common functionality is bundled into "VK_LAYER_KHRONOS_validation"
.
function vkEnumerateInstanceLayerProperties
Previously created application info and lists of required extensions and layers can then be used to create an instance.