Vulkan is a low-overhead, cross-platform 3D graphics and compute API. Vulkan targets high-performance realtime 3D graphics applications such as video games and interactive media across all platforms. Compared with OpenGL and Direct3D 11, and like Direct3D 12 and Metal, Vulkan is intended to offer higher performance and more balanced CPU/GPU usage. Other major differences from Direct3D 11 (and prior) and OpenGL are Vulkan being a considerably lower level API and offering parallel tasking. Vulkan also has the ability to render 2D graphics applications, however it is generally suited for 3D. In addition to its lower CPU usage, Vulkan is also able to better distribute work amongst multiple CPU cores.
|Initial release||February 16, 2016|
|Stable release||1.0.65 (28 October 2017) [±]|
|Operating system||Android, Linux, Microsoft Windows, Tizen|
|Type||3D graphics and compute API|
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 once the Vulkan name 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, much like OpenGL.
Vulkan is intended to provide a variety of advantages over other APIs as well as its spiritual 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 Direct3D 12, Metal and Mantle.
Intended advantages of Vulkan over previous-generation APIs include:
- Vulkan API is well suited for high-end graphics cards as well as for graphics hardware on mobile devices (OpenGL has a specific subset for mobile devices called OpenGL ES; it's still an alternative API in Vulkan supporting devices).
- In contrast to Direct3D 12, Vulkan is available on multiple modern operating systems; like OpenGL, the Vulkan API is not locked to a single OS or device form factor. As of release, Vulkan runs on Android, Linux, Tizen, Windows 7, Windows 8, and Windows 10 (third party support for iOS and macOS is also available)
- Reduced driver overhead, reducing CPU workloads.
- Reduced load on CPUs through the use of batching[definition needed], leaving the CPU free to do more computation or rendering than otherwise.
- Better scaling on multi-core CPUs. Direct3D 11 and OpenGL 4 were initially designed for use with single-core CPUs and only received augmentation to be executed on multi-cores. Even when application developers use the augmentations, the API regularly does not scale well on multi-cores.
- OpenGL uses the high-level language GLSL for writing shaders which forces each OpenGL driver to implement its own compiler for GLSL that executes at application runtime to translate the program's shaders into the GPU's machine code. Vulkan drivers are supposed to ingest instead shaders already translated into an intermediate binary format called SPIR-V (Standard Portable Intermediate Representation), analogous to the binary format that HLSL shaders are compiled into in Direct3D. By allowing shader pre-compilation, application initialization speed is improved and a larger variety of shaders can be used per scene. A Vulkan driver only needs to do GPU specific optimization and code generation, resulting in easier driver maintenance, and eventually smaller driver packages (currently GPU vendors still have to include OpenGL/CL).
- Unified management of compute kernels and graphical shaders, eliminating the need to use a separate compute API in conjunction with a graphics API.
|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 does come at a much lower complexity and maintenance burden than Vulkan, while in many cases still providing great overall performance.
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.
The Khronos Group began a project to create a next generation graphics API in July 2014 with a kickoff meeting at Valve Corporation. 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 December 15, 2016, Unity Technologies announced that version 5.6 of their game engine, Unity, would support the Vulkan API.
- On February 9, 2017, Croteam announced that it would be adopting the Vulkan API in its games and leveraging it to make their games more cross-platform friendly.
- On March 19, 2017, Cloud Imperium Games announced that Star Citizen would be using the Vulkan API instead of Direct3D.
- On July 25, 2017, Crytek released a preview of CryEngine 5.4 which added beta support for Vulkan.
Software that supports VulkanEdit
- The Talos Principle – The first game with Vulkan rendering support.
- Dota 2 – Vulkan support was released in May 2016.
- Doom – Vulkan support was released in July 2016.
- vkQuake – A Vulkan Quake port was released in July 2016.
- Roblox – In March 2017, Vulkan support for Roblox was added.
- Star Citizen – In March 2017, the Director of Graphics Programming for Cloud Imperium Games, Alistair Brown, announced on the official Star Citizen forums that Cloud Imperium will now only focus on implementing Vulkan into Star Citizen and Squadron 42. Support for DirectX 12 will be dropped as it would require customers to use Windows 10.
- Mad Max – In March 2017, the developers added beta support for Vulkan exclusively for the Linux port.
- Ballistic Overkill – Vulkan support was released in May 2017.
- Quake III Arena Kenny Edition – A Quake 3 engine modification added Vulkan support in May 2017.
- Ashes of the Singularity: Escalation – Vulkan support will be added in an upcoming release.
- Counter-Strike: Global Offensive – The game will be ported to Source 2 and support Vulkan.
- vkDoom3 - a Vulkan port of Doom3 BFG support was released in August 2017.
- Wolfenstein II: The New Colossus - Launched in 2017 with Vulkan support
Game console emulatorsEdit
- Beetle/Mednafen PSX, Libretro port of Mednafen PlayStation
- Libretro port of Mupen64Plus
- Source 2 – In March 2015, Valve Corporation announced the Source 2 engine, the successor engine to the original Source engine, would support Vulkan.
- Serious Engine 4 – In February 2016, Croteam announced that they were supporting Vulkan in their Serious Engine.
- Unreal Engine 4 – In February 2016, Epic Games announced Unreal Engine 4 support for Vulkan at Samsung's Galaxy S7 Unpacked event.
- Torque 3D – In April 2016, the developers community announced they will include Vulkan support.
- Quake Engine – Vulkan support was added in July 2016.
- id Tech 3 – Vulkan support was added in May 2017.
- id Tech 4 – Vulkan support was added in August 2017.
- id Tech 6 – In May 2016, id Software announced Doom, running the id Tech 6 engine, would support Vulkan.
- Xenko – Vulkan support was added in July 2016.
- Unity – The engine has support for Vulkan since version 5.6.
- CryEngine – Support for Vulkan was added in the 5.4 release.
- Intrinsic – A free and open-source cross-platform game engine that supports Vulkan.
- Unigine – In April 2017, Unigine Corp announced that Vulkan support for Unigine is in the roadmap for 2017.
- Abyss Engine – In May 2017, Manticore released Galaxy on Fire 3 on Android with Vulkan support.
- Banshee 3D – A free and open-source cross-platform game engine that supports Vulkan.
- UX3D Engine – Vulkan support was added in September 2017.
- GPU PerfStudio 3.6 supports Vulkan on Linux and Windows.
- GTK+ Scene Graph Kit, released on March 2017 as part of GTK+ 3.90, has a Vulkan rendering path.
- RenderDoc has support for Vulkan, since it was added on February 10, 2016.
The Vulkan Window System Integration (WSI) does for Vulkan what EGL does for OpenGL ES. EGL is used by OpenGL ES programs to interface with the native platform windowing system. EGL handles context management, surface binding and rendering synchronization.
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.
|Company||Hardware||Software support: Vulkan 1.0|
|Microarchitecture||Available since||GPUs (chips)||Graphic cards / SoCs||Android[a]||Linux||Microsoft Windows[b]|
|GCN 5th||August 2017||Vega 10||Radeon Rx Vega series||N/A||AMDGPU PRO (Ubuntu & RHEL)
& RADV in Mesa
|GCN 4th||June 2016||Polaris 10, Polaris 11, Polaris 12||Radeon Rx 400 series|
|GCN 3rd||August 2014||Tonga, Fiji, Carrizo||Radeon R9 Series|
|GCN 2nd||March 2013||Bonaire, Hawaii, Kaveri, Kabini, Temash, Mullins, Beema, Carrizo-L||Radeon HD 7790, PlayStation 4, Xbox One||Experimental|
|GCN 1st||February 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|
|Pascal||May 2016||GP10x||GeForce 10 series, Tegra X2||Yes||Nvidia GeForce driver||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|
|Kaby Lake||January 3, 2017||Core i3-/i5-/i7-7000, Pentium xyz, Celeron xyz||Anvil in Mesa 17.1||Anvil in Mesa||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||not supported|
|Haswell||September 2012||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 500 series||Adreno 510, Adreno 530, Adreno 540||Snapdragon 430, 625, 650, 652, 820, 821, 835||1.0|
|Adreno 400 series||Adreno 418,Adreno 420,Adreno 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, Exynos 8895||1.0|
|Midgard 4th||Q4 2015||Mali-T860, Mali-T830, Mali-T880||Exynos 8890, Exynos7880, 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|
- Direct3D 12 – main competitor of Vulkan
- OpenGL – another graphics API by the Khronos Group
- OpenCL – a heterogeneous computing framework by the Khronos Group
- Mantle – a low-level graphics and compute API from AMD, the foundation of Vulkan
- Metal – a low-level graphics and compute API for iOS and macOS
- AMDGPU – AMD's fully open-source unified graphics driver for Linux
- "Khronos Releases Vulkan 1.0 Specification". Khronos Group Press Release.
- "Vulkan® 1.0.65 - A Specification".
- Bright, Peter & Walton, Mark (February 16, 2016). "Vulkan now official, with 1.0 API release and AMD driver [Updated]". Ars Technica. Retrieved February 18, 2016.
- Valich, Theo (February 17, 2016). "Mantle Cycle is Complete as Khronos Releases Vulkan 1.0". VR World. Retrieved February 19, 2016.
- "More on Vulkan and SPIR - V: The future of high-performance graphics" (PDF). Khronos Group. p. 10. Retrieved June 27, 2015.
- "Does Vulkan support 2D graphics?". LunarG. Retrieved September 24, 2016.
- Hruska, Joel. "Next-generation Vulkan API could be Valve's killer advantage in battling Microsoft". ExtremeTech. Retrieved June 26, 2015.
- "Vulkan: Graphics and compute Belong Together" (PDF). Khronos Group. March 2015. Retrieved March 5, 2015.
- "Vulkan - Graphics and compute belong together". Khronos Group. Retrieved March 5, 2015.
- Smith, Ryan. "Khronos Announces Next Generation OpenGL Initiative". Retrieved September 24, 2016.
- Batchelor, James (March 3, 2015). "glNext revealed as Vulkan graphics API". Develop.
- Shilov, Anton. "AMD: Vulkan absorbed 'best and brightest' parts of Mantle". KitGuru. Retrieved June 26, 2015.
- Mah Ung, Gordon (March 6, 2015). "Mantle is a Vulkan: AMD's dead graphics API rises from the ashes in OpenGL's successor". PC World.
- "AMD Gaming: One of Mantle's Futures: Vulkan | AMD Blogs". AMD. Retrieved March 5, 2015.
- Hruska, Joel (March 4, 2015). "Not dead yet: AMD's Mantle powers new Vulkan API, VR efforts". ExtremeTech. Retrieved March 5, 2015.
- "AMD's Mantle Lives On In Vulkan - Lays The Foundation For The Next OpenGL". Wccftech. June 20, 2014. Retrieved March 5, 2015.
- Kirsch, Nathan. "Is AMD Mantle Dead As We Have Known It? Vulcan API Uses Mantle Technology for OpenGL". Legit Reviews. Retrieved March 5, 2015.
- "MoltenVK". Molten. Retrieved April 5, 2016.
- "Khronos Group Announces The Next-Generation 'Vulkan' Graphics And Compute API". Tom's Hardware. March 3, 2015.
- "Vulkan: High efficiency on mobile". Imagination Technologies. November 5, 2015.
- "Vulkan: Scaling to multiple threads". Imagination Technologies. November 24, 2015.
- Kessenich, John. "An Introduction to SPIR-V" (PDF). Khronos Group. Retrieved March 5, 2015.
- "FOSDEM 2016 - Vulkan in Open-Source". FOSDEM. Retrieved February 27, 2016.
- "Transitioning from OpenGL to Vulkan". Nvidia.
- "Vulkan Next will bring better support for VR and multiple GPUs". PC World.
- Smith, Daniel Williams, Ryan. "Ashes of the Singularity Revisited: A Beta Look at Direct3D 12 & Asynchronous Shading". AnandTech.
- Michaud, Scott (May 16, 2017). "Breaking: OpenCL Merging Roadmap into Vulkan PC Perspective". PC Perspective. Retrieved May 17, 2017.
- SIGGRAPH 2015: 3D Graphics API State of the Union (Video). YouTube. SIGGRAPH 2015: Khronos Group. September 16, 2015. Event occurs at 57:24. Retrieved November 12, 2015.
- "US Patent and Trademark Office". Retrieved March 7, 2015.
- Batchelor, James. "glNext revealed as Vulkan graphics API | Latest news from the game development industry | Develop". Develop. Retrieved March 5, 2015.
- Larabel, Michael (March 5, 2015). "Valve Developed An Intel Linux Vulkan GPU Driver". Phoronix. Retrieved August 8, 2017.
- Larabel, Michael (March 12, 2015). "Learning More About The Intel Vulkan Driver, Linux Vulkan Plans". Phoronix. Retrieved August 8, 2017.
- "Evan Odabashian on Twitter". Retrieved July 22, 2015.
- Woods, Shannon (August 12, 2015). "Low-overhead rendering with Vulkan". Android Developers Blog.
- "Unity engine adds Vulkan support for a big performance boost".
- "Croteam will take its games cross-platform with Vulkan support".
- Palumbo, Alessia (March 19, 2017). "Cloud Imperium Now Only Intends To Support Vulkan, Instead of DirectX 12, for Star Citizen". Wccftech. Retrieved August 8, 2017.
- "CryEngine welcomes Vulkan API support to latest build".
- Williams, Daniel & Smith, Ryan (February 17, 2016). "Quick Look: Vulkan Performance on The Talos Principle". Anandtech. Retrieved February 19, 2016.
- "Dota 2 Update - May 23rd 2016". store.steampowered.com. Valve. Retrieved May 24, 2016.
- "DOOM - Vulkan Support Now Live". Bethesda Softworks. Retrieved July 11, 2016.
- Larabel, Michael (July 25, 2016). "Quake 1 Ported To Run On Vulkan". Phoronix. Retrieved August 8, 2017.
- Papadopoulos, John (July 21, 2016). "Here is your first look at the first Quake being recreated in Unreal Engine 4 (fan project)". DSOGaming. Retrieved August 26, 2016.
- Larabel, Michael (March 30, 2017). "Feral Interactive Vulkan-izes Mad Max". Phoronix. Retrieved August 8, 2017.
- Saed, Sherif (April 3, 2017). "Counter-Strike: Global Offensive will be moved to Source 2, new operation coming this summer". VG247. Retrieved August 8, 2017.
- "Beetle/Mednafen PSX". Libretro Wiki. Retrieved February 14, 2017.
- "Vulkan Backend by stenzek · Pull Request #3935 · dolphin-emu/dolphin". GitHub. Retrieved February 14, 2017.
- "Mupen64plus". Libretro. Retrieved February 14, 2017.
- Kollar, Philip (March 3, 2015). "Valve announces Source 2 engine, free for developers". Retrieved March 3, 2015.
- Mahardy, Mike (March 3, 2015). "GDC 2015: Valve Announces Source 2 Engine". IGN. Retrieved March 3, 2015.
- "The Talos Principle will support Vulkan". February 4, 2016.
- "Epic Games adds Vulkan support to Unreal Engine 4". Bit-Tech. Retrieved February 24, 2016.
- "Epic Games Unveils ProtoStar at Samsung Galaxy Unpacked". Epic Games. Retrieved February 24, 2016.
- "Closing in on 3.9". Forums. Torque 3D.
- "Reddit response from a Torque3D developer". Reddit.
- "id announces Doom running on Vulkan". May 7, 2016.
- "Xenko 1.7β released!". July 1, 2016.
- liamdawe (March 31, 2017). "Unity 5.6 is now available with full Vulkan support". GamingOnLinux. Retrieved July 31, 2017.
- "Crytek launches CryEngine 5.4 with Vulkan support". Bit-Tech. September 24, 2017.
- "Intrinsic - Cross-platform Game and Rendering Engine". Retrieved August 12, 2017.
- liamdawe (April 13, 2017). "The UNIGINE engine will get Vulkan support this year". GamingOnLinux. Retrieved July 31, 2017.
- "Vulkanised! Manticore with Vulkan on Mobile Device - May 2017". YouTube. The Khronos Group. May 31, 2017. Retrieved June 11, 2017.
- "Banshee 3D - Home". Retrieved August 12, 2017.
- "GPUPerfStudio Vulkan Tools". AMD.
- "RenderDoc Version v0.27".
- "Vulkan 1.0 specification released with day-one support for Wayland". February 16, 2016.
- "Vulkan Overview" (PDF). Khronos Group. June 2015. Retrieved August 18, 2015. p. 19 "Vulkan Status"
- "Android N's second preview build supports Vulkan and new emoji". Ars Technica.
- "Final Developer Preview before Android 7.0 Nougat begins rolling out". July 19, 2016.
- "The Android platform includes an Android-specific implementation of the Vulkan API specification from the Khronos Group". April 5, 2016.
- Larabel, Michael (October 27, 2016). "AMDGPU-PRO 16.40 Released For Ubuntu & Red Hat Linux Systems". Phoronix. Retrieved August 8, 2017.
- "Radeon GPUs are ready for the Vulkan graphics API". Community. AMD.
- Larabel, Michael (August 30, 2016). "Testing The Open-Source "RADV" Radeon Vulkan Driver vs. AMDGPU-PRO". Phoronix. Retrieved August 8, 2017.
- "AMD Radeon Software version 16.15.1009 supports Vulkan". February 16, 2016.
- "NVIDIA DRIVERS Linux x64 (AMD64/EM64T) Display Driver". Nvidia.
- "Vulkan Driver Support". NVIDIA Developer. Nvidia. Retrieved April 4, 2016.
- "android: add vulkan build for intel". January 31, 2017.
- "Open-source Vulkan drivers for Intel hardware". February 16, 2016.
- Larabel, Michael (July 8, 2016). "Mesa 12.0 Released With OpenGL 4.3 Support, Intel Vulkan & Many Other Features". Phoronix. Retrieved August 8, 2017.
- "184.108.40.20690: Intel Graphics Driver for Windows 7/8.1/10 (Vulkan Support)". Intel.
- "Imagination announces Vulkan SDK for PowerVR Rogue GPUs". Imagination Blog. PowerVR Developer Technology Team. March 16, 2016. Retrieved April 27, 2016.
- "Qualcomm announces Vulkan API support for Adreno 5xx and 4xx GPUs".
- "Vulkan Hardware Database".
- "ARM Bifrost GPU Architecture". May 30, 2016.
- "ARM® Mali™GPUs with Vulkan Conformance".