What’s the deal with AMD’s new Linux Vulkan driver?

Hi, I’m a developer who works primarily on Linux games. I’d like to quickly cover the basics of what AMD’s new driver is, how it functions, and speculate on how it may fit into Linux gaming as a whole. If you’re technically minded then you’ll find a large, detailed, and up to date explanation of some of these aspects over at the AMDVLK GitHub repository.

What’s this thing’s name?

AMD’s official name for the driver is the “AMD Open Source Driver For Vulkan®”. From this point on, to avoid a big bag of confusion, I’ll be calling it by the development name AMDVLK. It’ll probably be best if as a community we try and do the same, otherwise we’re going to enter a world of pain when talking about RADV, the other AMD open-source driver for Vulkan, which is part of a broader collection of open source drivers built on a shared tool-set called Mesa.

What‘s the support like?

Pretty extensive - you can see the list of supported AMD GPUs here, but in general all the modern discrete GPUs are supported. The initial version (2.0.0) does not support geometry and tessellation on RX Vega, so a few games may have issues.

In terms of operating systems, AMD only lists support for Ubuntu 16.04.03 and RHEL 7.4, but as AMDVLK is open source it can be built and installed on pretty much any major distro. There is already an AUR package, for example, and we should expect mainline packages to filter through to all major distros soon enough.

So what is AMDVLK?

AMDVLK is an open source version of AMDGPU-PRO’s Vulkan component, with a few parts removed and swapped out to allow for it to be fully open source. To get into the nuts and bolts - AMDVLK’s components include the main bulk of the PRO driver code called PAL, and a slightly modified LLVM back-end for shaders, the same back-end that RADV uses, rather than the proprietary shader back-end found in AMD’s windows driver and AMDGPU-PRO. AMDVLK currently uses the same open-source amdgpu kernel module as RADV.

Wait, what happened to AMDGPU-PRO?

The PRO driver is still about, but don’t expect this to be relevant to Linux gaming anymore. For example, the latest version (17.50) is compiled targeting Ubuntu 16.04 or RHEL 6.8/7.2 and is nigh on impossible to install easily on other distributions due to various kernel incompatibilities. While compatibility may change in the future, the current impression from AMD is that AMDVLK is intended to supersede AMDGPU-PRO for Vulkan gaming on Linux. AMDGPU-PRO is dead, long live AMDVLK.

And what about RADV?

RADV is not going anywhere, and can even be installed alongside AMDVLK (yup, that’s right, driver cohabiting!). Both RADV and AMDVLK are already very performant, so expect close competition in the future, and also shared ideas for optimisation, features, and tools. RADV is also conveniently installed in the same packages as radeonsi (the AMD Mesa GL driver), and shares code with it.

In general, we could expect RADV to provide faster updates with bug fixes, and more legacy compatibility, while AMDVLK could provide faster performance and better support for the newest GPUs. To say any of those is a sure thing would be a mistake, as currently RADV provides better support for RX Vega than AMDVLK does, which isn’t as expected.

So, what’s the deal?

If all goes well we’re in for a fun ride here - two great open source drivers in direct competition can be a wonderful thing for AMD graphics on Linux. However, this does come with some pillars that must hold true:

Both drivers stay (relatively) bug-free

For developers, testing and fixing issues on multiple drivers in Linux games risks not being cost effective. This was a major issue only a few years ago when radeonsi and AMDGPU-PRO were both relatively buggy GL drivers. The open-source nature of both of these drivers should make this goal far easier.

AMDVLK and RADV stay easy to swap between

Nobody likes reinstalling different drivers to play a different game, especially not to do a simple comparison of the experience. Preserving this functionality would be a great boon to AMD gamers on Linux.

Without these pillars, we risk returning to the dark days of the old radeonsi and AMDGPU-PRO, where game support was sparse, and AMD couldn’t be recommended for Linux gaming.

There’s no hints of that yet, and the current outlook appears hopeful. It’s also great that AMD have made this move. Personally I had already planned on buying AMD for my next GPU, and this new status quo makes that even more promising. If only those bitcoin miners would stop buying them all…

This article was originally posted on Medium