Vulkan is a low-level cross-platform 3D graphics API which is very well supported on GNU/Linux by the Mesa graphics stack. The API allows game and application developers to create games with very fancy graphics which are easily portable to any of the many platforms with a graphics stack supporting the Vulkan API. The Vulkan specification is maintained by the Khronos Group
The Graphics API Contenders
OpenGL from the Khronos Group, Direct3D 11 and Direct3D 12 from Microsoft and Metal from Apple Inc are all graphics APIs who serve the same basic function as Vulkan. Vulkan, Metal and Direct3D 12 are more low-level oriented than OpenGL and Direct3D 11.
Of those, OpenGL and Vulkan are the only free and open graphics standards with a clear specification.
The Mesa graphics stack has fully featured Vulkan drives for Intel and AMD.
|Graphics Brand / Gen||Vulkan version||Kernel driver||Mesa||GPU models||Note|
|Intel||<=6.5||No||i915||No||Any||HD 2000-4000||Westmere, Sandy Bridge|
|Intel||7-12||1.1.2||i915||ANV||Mesa 19.2.8||HD 4200+,
|Haswell, Broadwell, Skylake, Kaby Lake, Coffee Lake and newer.|
|AMD||TeraScale 1, 2, 3||No||No||No||Any||Radeon HD 5000 Series,
Radeon HD 6350,
|AMD||GFX6, GFX7||1.1.2||amdgpu||RADV||Mesa 19.2.8||Radeon HD 77xx–7790
R9 270, R9-280, R7 240, R7 250
R7 260, R9 290
|NOT supported when using the "radeon" kernel driver, Vulkan is only supported when using the "amdgpu" kernel driver.|
|AMD||GFX8, GFX9, GFX10||1.2.0||amdgpu||RADV||Mesa 20||Radeon RX 400 series, Radeon RX 500 series, Radeon RX Vega series, Radeon RX 5000 series|
Vulkan is designed to run on multi-core systems. OpenGL was not, it was originally designed to run on single-core machines. It is also designed to give a higher degree of control over the graphics card compared to OpenGL. This is good or bad depending on how you look at it. Vulkan will provide higher performance than OpenGL if the code is well written. However, Vulkan requires more code than OpenGL to place a rotating 3D pyramid (or something else) on the screen.
Vulkan is multi-platform. It can be used on Android, Linux and Windows 7-10.
Vulkan shaders have to be in a intermediate binary format called SPIR-V (Standard Portable Intermediate Representation). SPIR-V is meant to be easily translatable to GPU machine code. OpenGL shaders are, in comparison, written in the very high-level GLSL format which is, on Linux, compiled into GPU machine code by LLVM. This takes longer than it takes to translate SPIR-V into GPU machine code. The difference is, in practice, only relevant the first time you start a game or application since modern versions of Mesa cache all the GPU machine code in
Vulkan was first announced February 2016. The Vulkan 1.1 specification was released in March 2018.
The Vulkan 1.2 specification was announced in January 2020. It was mostly incorporation of already existing Vulkan extensions in order to make the existence of these extensions a sure thing on devices with Vulkan 1.2 support.
- Older Radeon HD 77xx–7900 Series series AMD cards will only support Vulkan if the "amdgpu" driver is used. However, hardware accellerated video decoding is only supported when the "radeon" driver is used. You can't have both.
- vulkan-tutorial.com Good resource for learning Vulkan. Quite time-consuming.