Vulkan

From LinuxReviews
Jump to navigationJump to search

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.

Linux Support

The Mesa graphics stack has fully featured Vulkan drives for Intel and AMD.

Lovelyz Kei ProTip.jpg
TIP: vulkaninfo from vulkan-tools will tell you if your GPU supports Vulkan and all kinds of information about specific features it supports
Graphics Brand / Gen Vulkan version Kernel driver Mesa GPU models Note
Driver Version
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+,
HD400+,
Iris,
Iris Pro
Haswell, Broadwell, Skylake, Kaby Lake, Coffee Lake and newer.
1.2.0 Mesa 20
AMD TeraScale 1, 2, 3 No No No Any Radeon HD 5000 Series,

Radeon HD 6350,
Radeon HD 64xx–68xx Series,
Radeon HD 69xx Series,
Radeon HD 7xxx–76xx Series

Not Supported
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.[1]
1.2.0 Mesa 20
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

Features

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 .cache/mesa_shader_cache/.

Specifications

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.

Notes

  1. 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.


Add your comment
LinuxReviews welcomes all comments. If you do not want to be anonymous, register or log in. It is free.