AMDVLK 2020.Q3.5 Alternative AMD Vulkan Driver Released With Four Game Specific Fixes And Sub-RADV Performance

From LinuxReviews
Jump to navigationJump to search

AMD has released a new version of their special "open source" Vulkan driver with game-specific fixes for Detroit: Become Human, Tropico 4, Doom 2016 and GTA IV. Vulkan API compliance is updated to Vulkan 1.2.152. Performance is overall slightly worse than what the latest Mesa RADV Vulkan driver provides and magnitudes worse in very specific GPU stress tests.

written by 권유리 (Kwon Yu-ri)  2020-09-14 - last edited 2020-10-04. © CC BY

Tropico 4 demo Steam.jpg
Tropico 4 demo installed from Steam running on GNU/Linux using Proton 5 and the Mesa 20.2.0~rc4 RADV Vulkan driver for AMD graphics cards, not the special "open" AMDVLK driver which contains a fix for this game in the latest 2020.Q3.5 release.

AMDVLK is a special MIT licensed "open source" AMD graphics driver for Vulkan released regularly by AMD in the form of binaries and regular source code dumps on Microsoft GitHub at /GPUOpen-Drivers/AMDVLK/releases. There is no git source tree to look at, AMD just dumps source tarballs and binary packages for Ubuntu and RedHat/Fedora once or twice a month and that's what you get. AMDVLK is built on AMD's cross-platform "Platform Abstraction Library (PAL)". It is basically a Linux version of the Windows driver, it is not at all the same as the free software community's Mesa RADV Vulkan driver.

AMDVLK 2020.Q3.5 supports Vulkan API 1.2.152, bringing it up to par with the Mesa 20.2 rc4 RADV driver. The release-notes lists four game-specific fixes:

  • Corruption observed in Detroit: Become Human on RX 5600XT
  • Tropico 4 demo: Game Crashes instantly after launch
  • Doom 2016: TDR / Hang Observed playing a while
  • GTA IV: Game crashes instantly on launch

AMDVLK Performance

The default (Vulkan at 4K High) Basemark GPU 1.2.1 benchmark crashes/hangs in the same spot with both the AMDVLK driver and the Mesa 2.20.0 rc4 RADV driver on Linux 5.9 rc4. That default benchmark does run, like a slide-show, without issues on Intel integrated graphics using the Mesa ANV driver.

Basemark 1.2.1 "Official" test, MSI RX 470 8 GiB
Basemark GPU 1.2.1 test Mesa RADV 20.2rc4 AMDVLK 2020.Q3.5
High Content Quality Edit-bomb.svg Fail Edit-bomb.svg Fail
Medium Content Quality 41316 40944

Basemark GPU using the AMDVLK driver will run at "High" content quality at all resolutions except 4K. Both AMD drivers are capable of running the Basemark GPU benchmark at all resolutions when "Medium" content quality is used. Mesa RADV will not run with "High" content quality at any resolution. This gives AMDVLK 2020.Q3.5 a win in Basemark GPU even though it too is far from perfect in this particular benchmark application.

The rather simple vkmark benchmark does work with both Mesa RADV and AMDVLK. A very quick and dirty test of the Mesa 20.2 rc4 RADV driver vs AMDVLK 2020.Q3.5 using vkmark --fullscreen at 1440p reveals that AMDVLK is slower and therefore totally not worth bothering with. The default free software Mesa RADV driver developed by the free software community using a live git tree everyone can see and participate in development of, is faster than the "open source" AMDVLK driver in the not very good or accurate vkmark Vulkan benchmark.

vkmark 2017.08-0 20180123git68b6f23 AMD RX470 8GiB
Mesa 20.2 rc 4 RADV AMDVLK 2020.Q3.5
vkmark Score 3583 3483
Component FPS FrameTime FPS FrameTime
[vertex] device-local=true 3929 0.255 ms 3886 0.257 ms
[vertex] device-local=false 3530 0.283 ms 3363 0.297 ms
[texture] anisotropy=0 3929 0.255 ms 3809 0.263 ms
[texture] anisotropy=16 3921 0.255 ms 3826 0.261 ms
[shading] shading=gouraud 3673 0.272 ms 3638 0.275 ms
[shading] shading=blinn-phong-inf 3685 0.271 ms 3636 0.275 ms
[shading] shading=phong 3671 0.272 ms 3628 0.276 ms
[shading] shading=cel 3670 0.272 ms 3650 0.274 ms
[effect2d] kernel=edge: 3301 0.303 ms 3323 0.301 ms
[effect2d] kernel=blur: 1412 0.708 ms 1423 0.703 ms
[desktop] <default> 3051 0.328 ms 3106 0.322 ms
[cube] <default> 4290 0.233 ms 4243 0.236 ms
[clear] <default> 4523 0.221 ms 3750 0.267 ms

The vkmark scores do not mean all that much since the tests that benchmark runs are so ridiculously simple that they produce FPS numbers in the thousands on many-years old graphics cards. Still, a win is a win, and the Mesa RADV number does win with a whopping 100 FPS (which means a whole lot less when it's 3583 vs 3483 than it would mean if it was 150 vs 50 FPS).

The difference between AMDVLK and Mesa 20.2rc4 RADV is just 1 FPS in the MSI Kombustor Furkmark-MSI test rendered at 1080p using Vulkan. There is, however, something seriously wrong with the way AMDVLK handles the MSI Kombustor TessMark tests.

MSI Kombustor, Wine 5.16, 1080p
Mesa 20.2 rc 4 RADV AMDVLK 2020.Q3.5
Furkmark-MSI VK 85 FPS 84 FPS
TessMark-X16 VK 254 FPS 71 FPS Blond-anime-girl-with-red-questionmark.png
TessMark-X32 VK 106 FPS 12 FPS Blond-anime-girl-with-red-questionmark.png
Furmark-Donut VK 53 53

Someone from AMD should probably have a look at how AMDVLK 2020.Q3.5 handles the MSI Kombustor TessMark tests since there is a gigantic performance difference between AMDVLK and Mesa RADV that isn't there in the Furkmark-MSI and Furmark-Donut tests. The TessMark test are probably using some specific Vulkan feature AMDVLK is really bad at compared to Mesa RADV. Games using whatever Vulkan feature is the root cause of the horrible TessMark performance will likely suffer equally gigantic performance-penalties.

HOWTO test the AMDVLK technology

Fedora 32/33 users who want to try the special AMD AMDVLK Vulkan driver can acquire the technology with this fine command:

sudo rpm -ivh
Kemonomimi rabbit.svg
Note: You only want the above command if you are reading this after it was recently published, go to /GPUOpen-Drivers/AMDVLK/releases and find the link to the latest version if you are reading this after October 2020.

vulkaninfo from the vulkan-tools package will tell you that you have two Vulkan-capable graphics cards even if you only have one once this package is installed. A brute-force fix is disable the Mesa driver by renaming the ICD loader file as root:

mv /usr/share/vulkan/icd.d/radeon_icd.x86_64.json /usr/share/vulkan/icd.d/radeon_icd.x86_64.disabled

Switching between Vulkan drivers can be done by renaming both the Mesa and the AMDVLK ICD files. To switch from AMDVLK to Mesa RADV:

mv /usr/share/vulkan/icd.d/radeon_icd.x86_64.disabled /usr/share/vulkan/icd.d/radeon_icd.x86_64.json
mv /etc/vulkan/icd.d/amd_icd64.json /etc/vulkan/icd.d/amd_icd64.disabled

To switch from Mesa RADV to AMDVLK:

mv /usr/share/vulkan/icd.d/radeon_icd.x86_64.json /usr/share/vulkan/icd.d/radeon_icd.x86_64.disabled
mv /etc/vulkan/icd.d/amd_icd64.disabled /etc/vulkan/icd.d/amd_icd64.json

You can check what Vulkan driver you are using with vulkaninfo |grep driver. It will tell you

driverName = AMD open-source driver

if you are using the AMD AMDVLK driver or, if you are using Mesa:

driverName = radv

Ubuntu users can get a .deb package from /GPUOpen-Drivers/AMDVLK/releases.

Installing AMDVLK for performance reasons is probably not worth it if the vkmark numbers are any indication. But there may be compatibility reasons, if a Vulkan games has issues with the Mesa RADV drivers then the AMDVLK driver could be worth a try. It is closer to the Windows driver than the Mesa driver is so it may work better if some proprietary game has glitches or issues using the Mesa RADV driver.

(one vote)

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