You can sign up to get a daily email of our articles, see the Mailing List page.
We do often include affiliate links to earn us some pennies. See more here.

AMD make switching between Vulkan drivers AMDVLK and RADV easier

By - | Views: 38,611

On Linux with AMD GPUs you can decide between the RADV and AMDVLK drivers for Vulkan API support, and it appears AMD want to make things a little easier for you.

It can get a little confusing so here's the real basics: AMDVLK is the "official" external Vulkan driver developed by AMD, whereas RADV is part of Mesa and comes with most distributions by default. Sometimes certain games work better on one, sometimes on the other. Additionally, AMD only directly support Ubuntu and Red Hat, whereas Mesa with RADV focuses on everything they can.

With the latest AMDVLK 2021.Q1.1 release, AMD has made switching between the two a little easier. With this driver installed, you only need to set an environment variable to tell whatever game or application you're using what driver to use with "AMD_VULKAN_ICD" set to either "AMDVLK" or "RADV". The default is AMDVLK of course, if none is set.

Here's the highlights of this new driver release:

New feature and improvement

  • Add AMD switchable graphics layer to switch AMD Vulkan driver between amdvlk and RADV
  • Update Khronos Vulkan Headers to 1.2.164
  • Navi21 performance tuning for game X-Plane, Madmax, Talos Principle, Rise of Tomb Raider, F12017

Issue fix

  • RPCS3 Corruption observed on Game window on Navi10

See more on GitHub.

Article taken from GamingOnLinux.com.
Tags: AMD, Drivers, Vulkan
26 Likes
About the author -
author picture
I am the owner of GamingOnLinux. After discovering Linux back in the days of Mandrake in 2003, I constantly came back to check on the progress of Linux until Ubuntu appeared on the scene and it helped me to really love it. You can reach me easily by emailing GamingOnLinux directly. Find me on Mastodon.
See more from me
The comments on this article are closed.
25 comments
Page: «2/3»
  Go to:

x_wing Jan 8, 2021
Quoting: torbidoAMDVLK is now used by default? I do not like that at all.

If I remember correctly, installing AMDVLK or AMD Proprietary Vulkan drivers along side RADV makes them the default driver due that Vulkan Loader exposes the icd files in alphabetical order. This means that if an application selects the first available driver, it will default to AMDVLK. So, the problem is related to having the AMDVLK icd file name as "amd_icd64.json" while RADV driver icd named as "radeon_icd.x86_64.json". The solution: rename "amd_icd64.json" to "zamd_icd64.json" and RADV will be once again the default driver (bare in mind that if you installed your AMDVLK driver using some sort of distro package, this change will break a little bit the update/removal of the package).

But as strycore mentioned before, installing AMDVLK system wide is kinda pointless as RADV works better in 99% of cases.


Last edited by x_wing on 8 January 2021 at 4:09 pm UTC
pete910 Jan 8, 2021
View PC info
  • Supporter Plus
Make it so I could actually buy a damn card would be a good idea first!
kaiman Jan 8, 2021
Quoting: pete910Make it so I could actually buy a damn card would be a good idea first!
Yeah, with the current situation my plans to upgrade my PC early this year have been postponed. But it's okay; the game that would have mandated an upgrade won't be finished anytime soon either.
Brisse Jan 8, 2021
Quoting: x_wingIf I remember correctly, installing AMDVLK or AMD Proprietary Vulkan drivers along side RADV makes them the default driver due that Vulkan Loader exposes the icd files in alphabetical order.

I've had both RADV and AMDVLK installed for a long time and it always used to be RADV that loaded first unless I specifically asked for AMDVLK using environment variable. I think the reason for this is that the icd loaders resided in different folders and the folder with the mesa drivers was checked first so it didn't matter that "r" as in "radeon" comes after "a" as in "amd".

This behaviour seems to have changed lately however, because when a saw this thread I decided to check again by launching a game in Lutris and checking the DXVK_HUD. Without specifying a driver by environment variable, it was now running AMDVLK for some reason.

I wonder if there was an update that changed the folder structure at some point. The AMDVLK loader is currently in /etc/vulkan while the RADV one is in /usr/share/vulkan.

On a different note: To those of you wondering if you should install AMDVLK alongside RADV, the short answer is that you can, but you probably don't have a good reason besides just for testing. Multiple userspace Vulkan drivers can happily coexist on the same system and you can specify which to use by environment variable, but RADV is so good that it most likely covers all your needs on it's own.
Shmerl Jan 8, 2021
radv is better because it has open development model. Keeping amdvlk around can be useful for some edge cases though. I don't install it globally, I just put it somewhere and load on demand VK_ICD_FILENAMES.


Last edited by Shmerl on 8 January 2021 at 8:00 pm UTC
elmapul Jan 8, 2021
" RPCS3 Corruption observed on Game window on Navi10"
i know that emulators arent illegal, but can we spend an minute to talk about how amd is the manufacturer for ps4, ps5, xbox one, xbox series cpu/gpu and at the same time they fix bugs related to emulators and report this on the list of fixes on the driver relase notes?
kinda curious if you ask me...
Shmerl Jan 8, 2021
Emulators are fine, so AMD should have no problem with it. They don't have a stake in the copyright maximalists' lunacy.


Last edited by Shmerl on 8 January 2021 at 8:27 pm UTC
smn Jan 8, 2021
Quoting: strycoreThis is a vendor specific implementation of something that already exists and is not vendor specific. We have supported switching vulkan drivers with the VK_ICD_FILENAMES environment variable for months in Lutris so I don't really see what the big improvement is here.

that's true, but it's easier to remember than /usr/share/vulkan/icd.d/radeon_icd.x86_64.json
x_wing Jan 8, 2021
Quoting: BrisseI've had both RADV and AMDVLK installed for a long time and it always used to be RADV that loaded first unless I specifically asked for AMDVLK using environment variable. I think the reason for this is that the icd loaders resided in different folders and the folder with the mesa drivers was checked first so it didn't matter that "r" as in "radeon" comes after "a" as in "amd".

This behaviour seems to have changed lately however, because when a saw this thread I decided to check again by launching a game in Lutris and checking the DXVK_HUD. Without specifying a driver by environment variable, it was now running AMDVLK for some reason.

I wonder if there was an update that changed the folder structure at some point. The AMDVLK loader is currently in /etc/vulkan while the RADV one is in /usr/share/vulkan.

Never tested with different directories, so my comment is probably isolated to ICD files loaded in the same directory (at least at the time of my testing).

For the curious out there, this are the directories that the vulkan loader searches by default: https://github.com/KhronosGroup/Vulkan-Loader/blob/master/loader/LoaderAndLayerInterface.md#icd-discovery-on-linux
mylka Jan 9, 2021
Quoting: fagnerlnAMD and Valve are two of most helpful companies and must be supported from us.

meehhh they kicked the AMD sensor thingy (k10temp) out of kernel 5.10 because a lack of documentation. now some values are useless and i have to stick with kernel 5.9
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
The comments on this article are closed.