|Initial release||February 16, 2016|
|Stable release||1.2.158 (October 19, 2020)|
|Operating system||Android, Linux, Windows, Nintendo Switch,Stadia, Tizen,macOS|
|Type||3D graphics and compute API|
|License||Apache License 2.0|
Vulkan is a low-overhead, cross-platform 3D graphics and computing API. Vulkan targets high-performance realtime 3D graphics applications such as video games and interactive media across all platforms. Compared to OpenGL, Direct3D and Metal, Vulkan is intended to offer higher performance and more balanced CPU/GPU usage. Other major differences from Direct3D 11 and OpenGL are Vulkan being a considerably lower-level API and offering parallel tasking. In addition to its lower CPU usage, Vulkan is designed to allow developers to better distribute work among multiple CPU cores.
Vulkan was first announced by the non-profit Khronos Group at GDC 2015. The Vulkan API was initially referred to as the "next generation OpenGL initiative", or "OpenGL next" by Khronos, but use of those names was discontinued when Vulkan was announced. Vulkan is derived from and built upon components of AMD's Mantle API, which was donated by AMD to Khronos with the intent of giving Khronos a foundation on which to begin developing a low-level API that they could standardize across the industry.
Vulkan is intended to provide a variety of advantages over other APIs as well as its predecessor, OpenGL. Vulkan offers lower overhead, more direct control over the GPU, and lower CPU usage. The overall concept and feature set of Vulkan is similar to Mantle later adopted by Microsoft with Direct3D 12 and Apple with Metal.
Intended advantages of Vulkan over previous-generation APIs include:
|One single global state machine||Object-based with no global state|
|State is tied to a single context||All state concepts are localized to a command buffer|
|Operations can only be executed sequentially||Multi-threaded programming is possible|
|GPU memory and synchronization are usually hidden||Explicit control over memory management and synchronization|
|Extensive error checking||Vulkan drivers do no error checking at runtime;|
there is a validation layer for developers
NVIDIA notes that OpenGL is still a great option for a lot of use cases, as it comes at a much lower complexity and maintenance burden than Vulkan, while in many cases still providing great overall performance.
AMD says that Vulkan supports close-to-metal control, enabling faster performance and better image quality across Windows 7, Windows 8.1, Windows 10, and Linux. No other graphics API offers the same powerful combination of OS compatibility, rendering features, and hardware efficiency.
At SIGGRAPH 2016, Khronos announced that Vulkan would be getting support for automatic multi-GPU features, similar to what is offered by Direct3D 12. Multi-GPU support included in-API removes the need for SLI or Crossfire which requires graphics cards to be of the same model. API multi-GPU instead allows the API to intelligently split the workload among two or more completely different GPUs. For example, integrated GPUs included on the CPU can be used in conjunction with a high-end dedicated GPU for a slight performance boost.
On March 7, 2018, Vulkan 1.1 was released by the Khronos Group. This first major update to the API standardized several extensions, such as multi-view, device groups, cross-process and cross-API sharing, advanced compute functionality, HLSL support, and YCbCr support. At the same time, it also brought better compatibility with DirectX 12, explicit multi-GPU support, ray tracing support, and laid the groundwork for the next generation of GPUs. Alongside Vulkan 1.1, SPIR-V was updated to version 1.3.
On January 15, 2020, Vulkan 1.2 was released by the Khronos Group. This second major update to the API integrates 23 additional commonly-used proven Vulkan extensions into the base Vulkan standard. Some of the most important features are "timeline semaphores for easily managed synchronization", "a formal memory model to precisely define the semantics of synchronization and memory operations in different threads", and "descriptor indexing to enable reuse of descriptor layouts by multiple shaders". The additional features of Vulkan 1.2 improve its flexibility when it comes to implementing other graphics APIs on top of Vulkan, including "uniform buffer standard layout", "scalar block layout", and "separate stencil usage".
When releasing OpenCL 2.2, the Khronos Group announced that OpenCL would converge where possible with Vulkan to enable OpenCL software deployment flexibility over both APIs. This has been now demonstrated by Adobe's Premiere Rush using the clspv open source compiler to compile significant amounts of OpenCL C kernel code to run on a Vulkan runtime for deployment on Android.
The Khronos Group began a project to create a next generation graphics API in July 2014 with a kickoff meeting at Valve. At SIGGRAPH 2014, the project was publicly announced with a call for participants.
According to the US Patent and Trademark Office, the trademark for Vulkan was filed on February 19, 2015.
In early 2015, LunarG (funded by Valve) developed and showcased a Linux driver for Intel which enabled Vulkan compatibility on the HD 4000 series integrated graphics, despite the open-source Mesa drivers not being fully compatible with OpenGL 4.0 until later that year. There is still the possibility of Sandy Bridge support, since it supports compute through Direct3D11.
On December 18, 2015, the Khronos Group announced that the 1.0 version of the Vulkan specification was nearly complete and would be released when conforming drivers were available.
The specification and the open-source Vulkan SDK were released on February 16, 2016.
On February 26, 2018, Khronos Group announced that the Vulkan API became available to all on macOS and iOS through the MoltenVK library, which enables Vulkan to run on top of Metal. Other new developments were shown at SIGGRAPH 2018. Previously MoltenVK was a proprietary and commercially licensed solution, but Valve made an arrangement with developer Brenwill Workshop Ltd to open-source MoltenVK under the Apache 2.0 license and as a result the library is now available on GitHub. Valve also announced that Dota 2 can as of 26 February 2018 run on macOS using the Vulkan API, which is based on MoltenVK.
On Feb 25, 2019, the Vulkan Safety Critical (SC) Working Group was announced to bring Vulkan GPU acceleration to safety critical industries.
On January 15, 2020, Vulkan 1.2 was released.
Alongside the Vulkan 1.2 release, the Khronos Group posted a blog post which considered that HLSL support in Vulkan had reached "production ready" status, given the improvements in Microsoft's DXC compiler and Khronos's glslang compiler, and new features in Vulkan 1.2 which enhance HLSL support.
On February 3, 2020, the Raspberry Pi Foundation announced that it was working on an open source Vulkan driver for their Raspberry Pi, a popular single board computer. On June 20, 2020, a graphics engineer revealed that he had created one after two years of work that was capable of running VkQuake3 at over 100FPS on the small computer.
Initial specifications stated that Vulkan will work on hardware that currently supports OpenGL ES 3.1 or OpenGL 4.x and up. As Vulkan support requires new graphics drivers, this does not necessarily imply that every existing device that supports OpenGL ES 3.1 or OpenGL 4.x will have Vulkan drivers available.
Vulkan 1.1 with higher efforts is supported by the newer lines in Hardware like Intel Skylake and higher, AMD GCN 3rd and higher, Nvidia Kepler and higher. AMD, Arm, Imagination Technologies, Intel, Nvidia and Qualcomm supports actual hardware since second half of 2018 Vulkan 1.1 with own drivers. Mesa 18.1 supports with RADV and ANVIL driver AMD and Intel hardware. Actual state in Mesa 3D of RADV and ANVIL see Mesamatrix.
Android 7.0 Nougat supports Vulkan 1.0. The software was released in August 2016. Vulkan 1.1 is supported in Android 9.0 Pie. Vulkan 1.1 support is mandatory for 64-bit devices running Android 10.
|Company||Hardware||Software support: Vulkan 1.0|
|Microarchitecture||Available since||GPUs (chips)||Graphic cards / SoCs||Android[a]||Linux||Microsoft Windows[b]|
|RDNA 1.0||July 2019||Navi 10, Navi 12, Navi 14||Radeon RX 5000 series||N/A||1.0 and 1.1: AMDGPU PRO (Ubuntu & RHEL)
& RADV in Mesa
|1.0 (1.1 and 1.2 GCN 2nd and higher) Radeon Software|
|GCN 5th||August 2017||Vega 10, Raven Ridge, Picasso||Radeon RX Vega series,|
|GCN 4th||June 2016||Polaris 10, Polaris 11, Polaris 12||Radeon RX 400 series, Radeon RX 500 series|
|GCN 3rd||August 2014||Tonga, Fiji, Carrizo||Radeon R9 Series and more|
|GCN 2nd||March 2013||Bonaire, Hawaii, Kaveri, Kabini, Temash, Mullins, Beema, Carrizo-L||Radeon HD 7790 and more, PlayStation 4, Xbox One||Stable}} 1.1-1.2 </ref>|
|GCN 1st||January 2012||Oland, Cape Verde, Pitcairn, Tahiti||Radeon HD 77xx-7900 Series|
|TeraScale 3||December 2010||Cayman, Trinity/Richland||Radeon HD 69xx Series, Radeon HD 7xxx-76xx Series||not supported|
|TeraScale 2||September 2009||Cedar, Cypress, Juniper, Redwood, Palm, Sumo||Radeon HD 5000 Series, Radeon HD 6350, Radeon HD 64xx-68xx Series|
|TeraScale 1||May 2007||R600, RV630, RV610, RV790, RV770, ...||Radeon HD 2000 Series, HD 3000, HD 4000|
|Ampere||September 2020||GA10x||GeForce 30 series||1.2: Nvidia GeForce driver||1.2: Nvidia GeForce driver|
|Turing||September 2018||TU10x, TU11x||GeForce 20 series, GeForce 16 series||1.1 and 1.2: Nvidia GeForce driver||1.1 and 1.2: Nvidia GeForce driver|
|Volta||December 2017||GV10x||Nvidia Titan V||1.0, 1.1 and 1.2: Nvidia GeForce driver||1.0, 1.1 and 1.2: Nvidia GeForce driver|
|Pascal||May 2016||GP10x||GeForce 10 series, Tegra X2||Yes||1.0, 1.1 and 1.2: Nvidia GeForce driver||1.0, 1.1 and 1.2: Nvidia GeForce driver|
|Maxwell||February 2014||GM10x, GM20x||GeForce GTX 750 Ti, GTX 750, GTX 860M, GeForce 900 series, Tegra X1|
|Kepler||March 2012||GK10x, GK110, GK208||GeForce 600 series, GeForce 700 series, Tegra K1|
|Fermi||March 2010||GF10x, GF11x||GeForce 400 series, GeForce 500 series||not supported|
|Tesla||November 2006||G8x, G9x, GT20x, GT21x||GeForce 8 series, GeForce 9 series, GeForce 100 series, GeForce 200 series, GeForce 300 series|
|Intel||Tiger Lake||September 2020||Core i3-/i5-/i7-11xxGx,||Yes||Yes||Yes |
1.2: Intel Graphics driver
|Ice Lake||August 2019||Core i3-/i5-/i7-10xxGx,||Yes||Yes||Yes|
|Comet Lake||August 2019||Core i3-/i5-/i7-10000,||Yes||Yes||Yes|
|Coffee Lake||October 2017||Core i3-/i5-/i7-8000,||Yes||1.0 and 1.1: Anvil in Mesa 18.1||Yes|
|Kaby Lake||September 2016||Core i3-/i5-/i7-7000, Pentium xyz, Celeron xyz||1.0 Anvil in Mesa 17.1, 1.1 in Mesa 18.1||1.0: Anvil in Mesa, 1.1 in Mesa 18.1||Intel Graphics driver|
|Skylake||August 2015||Core i3-/i5-/i7-6000, Core m3-/m5-/m7-6Yxx, Pentium G4xxx, Celeron G39xx|
|Broadwell||September 2014||Core i3-/i5-/i7-5000, Core M-5Yxx||1.0 Anvil in Mesa 17.1||1.0: Anvil in Mesa||not supported|
|Haswell||June 2013||Core i3-/i5-/i7-4000, Pentium G3xxx, Celeron G18xx|
|Ivy Bridge||April 2012||Core i3-/i5-/i7-3000, Pentium G2xxx, Celeron G16xx|
|Sandy Bridge||January 2011||Core i3-/i5-/i7-2000, Pentium Gxxx, Celeron Gxxx||not supported||not supported|
|Westmere||January 2010||Core i3-/i5-/i7-xxx, Pentium G69xx, Celeron G1101|
|PowerVR Series 8||February 2016||GE8200, GE8300||PowerVR Graphics SDK v4.1|
|PowerVR Series 7||November 2014||GE7400, GE7800, GT7200, GT7400, GT7600, GT7800, GT7900||Apple A9, A9X, A10 Fusion, Helio X30 (MT6799)|
|PowerVR Series 6||January 2012||G6100, G6200, G6230, G6400, G6430, G6630, RK3368, G6050, G6060, G6100 (XE), G6110, GX6240, GX6250, GX6450, GX6650||Apple A7, A8, A8X, MediaTek MT8173, MT8176, MediaTek MT6595M, MT6595T, MT6595M, MT6795, MT8135, Helio X10 (MT6795), LG H13, Atom Z3460, Z3480, Z3530, Z3560, Z3570, Z3580|
|PowerVR Series 5||January 2009||SGX543, SGX544, SGX554||Apple S1, A5, A5X, A6, A6X, NovaThor L8540, L8580, L9540, TI OMAP 4470, 5430, 5432, MediaTek MT5327, MT6589M, MT6589T, MT6589, MT8117, MT8121, MT8125, MT8389, Atom Z2460, Z2520, Z2560, Z2580, Z2760, Exynos 5410||not supported|
|Adreno 600 series||Adreno 616, 620, 630, 640, 650||Snapdragon 710, 712, 720, 730, 765, 845, 855, 865||1.1|
|Adreno 500 series||Adreno 510, 512, 530, 540||Snapdragon 430, 625, 650, 652, 660,820, 821, 835||1.0|
|Adreno 400 series||Adreno 418, 420, 430||Snapdragon 415, 615, 616, 617, 805, 808, 810||1.0(Adreno 418,430)|
|Adreno 300 series||Snapdragon 200, 208, 210, 212, 400, 410, 412, 600, 800, 801||not supported|
|Bifrost||June 2016||Mali-G71, ...||Kirin 960, 970, Exynos 8895, MediaTek Helio P23 (MT6763T), Helio P30||1.0|
|Midgard 4th||Q4 2015||Mali-T860, Mali-T830, Mali-T880||Exynos 8890, Exynos 7880, Exynos 7870, Kirin 950, 955, MediaTek MT6738, MT6750, Helio X20 (MT6797), X25 (MT6797T), P10 (MT6755), P20 (MT6757)|
|Midgard 3rd||October 2013||Mali-T760, ...||Exynos 7420, Exynos 5433, MT6752, MT6732, RK3288|
|Midgard 2nd||August 2012||Mali-T600 series, T720||Exynos 5250, 5260, 5410, 5420, 5422, 5430, 5800, 7580, Mediatek MT6735, MT6753, Kirin 920, 925, 930, 935||not supported|