Vladar's Blog

Best of both worlds: Radeon RX 500 series Linux drivers in 2024

And Now for Something Completely Different And Now for Something Completely Different

Not the usual topic for this blog, but having struggled with this problem for a good amount of time, I want to preserve these instructions for those who might stumble upon the same issue.

What follows is a short but very specific guide that applies only if you:


📝 NOTE: If for some reason you need a specific DaVinci Resolve version, you can download it from the videohelp.com website.


There are three graphic drivers available for AMD cards:


📝 NOTE: For further details, consult the Xorg ArchWiki page.


The Solution

As you can see, the plan is to have an open-source AMDGPU driver alongside the proprietary AMDGPU PRO one. The latter will be used only to run software that requires it. I've tried different OpenCL packages before finding this particular working solution and, while ArchWiki documentation on DaVinci Resolve is quite comprehensive, there are some tricky parts I want to highlight.

The main hurdle is the opencl-amd package won't work with your RX 500 series card unless you install its older version (kudos to nho1ix) along with the corresponding AMDGPU PRO driver version:

AUR package Working version Snapshot
opencl-amd 1:5.7.1-1 aur.git, tar.gz
amdgpu-pro-oglp 23.10_1620044-1 aur.git, tar.gz

Once you download the snapshots, you can easily build the packages and install them with the usual makepkg process of running the makepkg -si command.

Now you can use the progl script to run any application with the proprietary driver, while you still have the open-source driver as your default one.

The amdgpu-pro-oglp package comes along with the proprietary AMF (GPU encoding/decoding) and Vulkan (required by AMF) packages:

While you might want to have the AMF package installed for video processing, you most certainly wouldn't want the proprietary Vulkan package to be the default one, because it sucks compared to the open-source (vulkan-radeon) driver. Thankfully, you can have a couple of Vulkan divers installed alongside and select them by using the amd-vulkan-prefixes scripts.

To make sure the correct OpenCL (pre-Vega) and Vulkan (open-source) drivers are set as the default ones, you must set these environment variables:

export ROC_ENABLE_PRE_VEGA=1
export DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1
export VK_DRIVER_FILES=/usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json

Finally, don't forget to freeze these packages in your pacman.conf file so they won't be updated.

Once you reboot the machine, you can run DaVinci Resolve through the following command:

vk_pro progl /opt/resolve/bin/resolve

The Alternative Solution

There is also another OpenCL implementation that works — rusticl, but while it doesn't require fiddling with the proprietary drivers, I found its performance almost twice as slow as when using the opencl-amd package. Hope the situation changes in the future.


Discuss this post on Reddit

#guide #linux #software