AMDVLK 2020.Q3.5 Alternative AMD Vulkan Driver Released With Four Game Specific Fixes And Sub-RADV Performance
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.
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 github.com /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
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 GPU 1.2.1 test||Mesa RADV 20.2rc4||AMDVLK 2020.Q3.5|
|High Content Quality||Fail||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.
|Mesa 20.2 rc 4 RADV||AMDVLK 2020.Q3.5|
|[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.
|Mesa 20.2 rc 4 RADV||AMDVLK 2020.Q3.5|
|Furkmark-MSI VK||85 FPS||84 FPS|
|TessMark-X16 VK||254 FPS||71 FPS|
|TessMark-X32 VK||106 FPS||12 FPS|
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 https://github.com/GPUOpen-Drivers/AMDVLK/releases/download/v-2020.Q3.5/amdvlk-2020.Q3.5-el.x86_64.rpm
|Note: You only want the above command if you are reading this after it was recently published, go to github.com /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
driverID = DRIVER_ID_AMD_OPEN_SOURCE driverName = AMD open-source driver
if you are using the AMD AMDVLK driver or, if you are using Mesa:
driverID = DRIVER_ID_MESA_RADV driverName = radv
Ubuntu users can get a .deb package from github.com /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.