Jump to content

Vulkan

From VR & AR Wiki
Vulkan
Information
Type 3D graphics and compute API
Industry Computer graphics
Developer Khronos Group
Written In C
Operating System Windows, Linux, Android, Nintendo Switch, others (macOS and iOS via MoltenVK)
License Apache License 2.0, MIT License, Creative Commons Attribution 4.0
Release Date February 16, 2016
Website https://www.vulkan.org/


Vulkan is a low-overhead, cross-platform 3D graphics and compute application programming interface (API) created and maintained by the Khronos Group, the same industry consortium responsible for OpenGL and OpenXR.[1] First released on February 16, 2016, Vulkan is designed to give software more direct, explicit control over modern graphics processing units (GPUs) while reducing the driver and CPU overhead associated with older APIs such as OpenGL.[2][3] It is derived from AMD's Mantle API, which AMD contributed to Khronos as a foundation for a standardized low-level interface.[3][4]

Because it lets applications manage GPU work explicitly across multiple CPU threads, Vulkan is widely used in virtual reality and augmented reality software, where consistent frame timing and low latency are critical. It is a supported rendering backend for game engines such as Unity and Unreal Engine, for Valve's SteamVR runtime, and for Meta Quest development, and it can be paired with the cross-platform OpenXR standard. Vulkan is one of several graphics APIs available for VR rather than a requirement; platforms also support OpenGL ES, Direct3D, and Apple's Metal.[5][6]

History

The Khronos Group began work on a next-generation graphics API in July 2014, holding a kickoff meeting at Valve Corporation, and publicly announced the project at SIGGRAPH 2014 with a call for participants.[3] Before it received an official name, the effort was widely referred to in the press by the placeholder "glNext."[3][4] Khronos filed the "Vulkan" trademark with the United States Patent and Trademark Office on February 19, 2015, and formally unveiled the name at the Game Developers Conference in March 2015.[3]

The API's lineage traces to Mantle, a low-level graphics API that AMD had developed with input from the game studio DICE. AMD contributed Mantle components to Khronos to serve as a starting point for an open, vendor-neutral standard, and subsequently wound down its own Mantle program.[3][7] The Khronos Group announced the immediate availability of the royalty-free Vulkan 1.0 specification, along with an open-source software development kit and conformance tests, on February 16, 2016.[2][3]

Version history

Vulkan has received several major specification updates that fold widely used extensions into the core standard:

Version Release date Notable additions
1.0 February 16, 2016 Initial release of the specification and SDK[2]
1.1 March 7, 2018 Subgroup operations, multi-GPU support, and other extensions promoted to core[3]
1.2 January 15, 2020 Integration of 23 extensions, including timeline semaphores and descriptor indexing[3]
1.3 January 25, 2022 Integration of 23 extensions, including dynamic rendering[3]
1.4 December 3, 2024 Further consolidation of established functionality into the core[3]

Design and goals

Vulkan was created to address limitations of OpenGL and to expose a programming model that more closely matches how modern GPUs operate.[3] Its principal design goals include:

  • Lower CPU and driver overhead. Vulkan reduces the work the CPU and graphics driver must do per draw call, using techniques such as command batching and pre-validated state objects.[3]
  • Explicit, low-level control. Applications are given fine-grained control over scheduling, synchronization, and memory allocation, rather than relying on the driver to manage that state implicitly.[3]
  • Multi-threading. Vulkan was designed to distribute rendering work across multiple CPU cores, allowing command buffers to be recorded in parallel. OpenGL, by contrast, originated before multi-core processors were common and is harder to parallelize.[3][8]
  • Cross-platform consistency. A single API targets desktop, mobile, and console hardware, reducing platform fragmentation.[1]

Vulkan is written in C and provides a C-style interface, with C++ bindings and other language wrappers available.[3] Rather than compiling shader source at runtime, Vulkan consumes shaders in SPIR-V (Standard Portable Intermediate Representation), a binary intermediate format that allows shaders to be pre-compiled. This can improve application startup time compared with OpenGL's runtime shader compilation.[3] The specification is published under permissive terms, with code released under the Apache License 2.0 and MIT License and documentation under Creative Commons Attribution 4.0.[3] Vulkan is not backward compatible with OpenGL.[3]

Platforms

Vulkan is supported natively on a broad range of operating systems, including Windows, Linux and other Unix-like systems, Android (version 7.0 "Nougat" and later), and the Nintendo Switch.[3] Apple's operating systems do not provide native Vulkan drivers; instead, Vulkan applications run on macOS and iOS through MoltenVK, a translation layer that maps a subset of Vulkan onto Apple's Metal graphics framework.[9] MoltenVK was the first component released under the Khronos Vulkan Portability Initiative and was open-sourced under the Apache License on February 26, 2018; at the same time Valve announced that the game Dota 2 would run on macOS using Vulkan via MoltenVK.[9]

Relevance to VR and AR

Virtual and augmented reality applications are particularly sensitive to CPU overhead and frame timing, because dropped or late frames can cause visible judder and contribute to discomfort. Vulkan's explicit control and multi-threading make it attractive for this workload, and it has become a primary rendering API across several major VR platforms.

Meta Quest

For Meta's standalone headsets, Meta states that "Vulkan is the recommended API for both mobile VR and PC VR applications on Meta headsets" and describes OpenGL ES as a legacy graphics API.[5] Several Meta Quest rendering features are only available when an application uses Vulkan, including App SpaceWarp, Mobile Multi-View, Late Latching, and hardware-accelerated foveated rendering via the Fragment Density Map. Meta also notes that new features for the Meta Quest line are being implemented only in Vulkan.[5]

Game engines

Unity added Vulkan support for the Oculus Quest, announced on January 28, 2020; the move was described as enabling lower driver overhead for draw calls and better use of the headset's multiple CPU cores compared with OpenGL ES.[8] Unreal Engine supports mobile Vulkan rendering for Quest development, typically alongside the OpenXR API.[5]

SteamVR and OpenXR

Valve's SteamVR runtime, through its OpenVR API, supports submission of rendered eye buffers that originate from Vulkan. Applications submit Vulkan images using the TextureType_Vulkan texture type, and the runtime uses the application's Vulkan graphics queue to transmit those textures to the SteamVR compositor.[6] The cross-platform OpenXR standard, also developed by the Khronos Group, defines bindings that let XR applications use Vulkan (among other graphics APIs) to render frames for a wide range of AR and VR devices.[10][11]

It is worth noting that VR and AR rendering does not require Vulkan; it is one supported option. Engines and runtimes typically also support APIs such as OpenGL ES, Direct3D, and, on Apple hardware, Metal.[5][6]

Reception

Vulkan's 1.0 release was widely covered as the conclusion of the Mantle initiative, with commentators noting that AMD's donated technology had become the basis of a vendor-neutral open standard backed by the major GPU vendors.[7][4] In the VR space, the addition of Vulkan support to engines and headsets was reported as a meaningful performance opportunity: when adding Vulkan for Android games, Unity had previously cited frame-time improvements, and reporting on the Quest rollout framed Vulkan as a way to reduce CPU bottlenecks, though not as a universal fix for performance problems.[8]

See also

References

  1. 1.0 1.1 "Vulkan - Cross platform 3D Graphics". Khronos Group. https://www.vulkan.org/. Retrieved June 28, 2026.
  2. 2.0 2.1 2.2 "Khronos Releases Vulkan 1.0 Specification". Khronos Group. February 16, 2016. https://www.khronos.org/news/press/khronos-releases-vulkan-1-0-specification. Retrieved June 28, 2026.
  3. 3.00 3.01 3.02 3.03 3.04 3.05 3.06 3.07 3.08 3.09 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 "Vulkan". Wikipedia. https://en.wikipedia.org/wiki/Vulkan. Retrieved June 28, 2026.
  4. 4.0 4.1 4.2 "GDC 15: Khronos Acknowledges Mantle's Start of Vulkan". PC Perspective. March 3, 2015. https://pcper.com/news/General-Tech/GDC-15-Khronos-Acknowledges-Mantles-Start-Vulkan. Retrieved June 28, 2026.
  5. 5.0 5.1 5.2 5.3 5.4 "OpenGL ES and Vulkan". Meta. https://developers.meta.com/horizon/documentation/unreal/os-vulkan-opengl/. Retrieved June 28, 2026.
  6. 6.0 6.1 6.2 "Vulkan support in SteamVR - openvr Wiki". Valve. https://github.com/ValveSoftware/openvr/wiki/Vulkan. Retrieved June 28, 2026.
  7. 7.0 7.1 "Khronos Reveals New Vulkan API for GPUs, AMD Kills Mantle". CdrInfo. March 3, 2015. https://www.cdrinfo.com/d7/content/khronos-reveals-new-vulkan-api-gpus-amd-kills-mantle. Retrieved June 28, 2026.
  8. 8.0 8.1 8.2 "Unity Now Supports Vulkan On Oculus Quest". UploadVR. January 28, 2020. https://www.uploadvr.com/unity-oculus-quest-vulkan/. Retrieved June 28, 2026.
  9. 9.0 9.1 "MoltenVK". Wikipedia. https://en.wikipedia.org/wiki/MoltenVK. Retrieved June 28, 2026.
  10. "OpenXR - High-performance access to AR and VR platforms and devices". Khronos Group. https://www.khronos.org/openxr/. Retrieved June 28, 2026.
  11. "XR_KHR_vulkan_enable2". Khronos Group. https://registry.khronos.org/OpenXR/specs/1.0/man/html/XR_KHR_vulkan_enable2.html. Retrieved June 28, 2026.