Confused about AMD drivers

It’s been a while since I had to use the Radeon graphics cards on linux. It seems like a lot has changed since and I’m a bit confused.

Can someone explain to me the concepts of it ?

Before if was simple, there was a fglrx and it sucked and that’s all I had to know and get myself nvidia.

Now there is :

  • radeon: drivers ( I believe this came after fglrx and sucked less ? )
  • amdgpu: the new good stuff, the grass is green and the girls are pretty
  • amdgpu-pro: ?
  • mesa: amgdpu but only glass is green ?
  • mesa NEW: ?
  • mesa-libOpenCL: ?
  • mesa-libGL: ?
  • mesa-dri: ?
  • vulkan

It would be nice if there would be some guide explaining those and probably more of what do I need to get installed on my system to get it flying on the latest rDNA/rDNA2 cards?

If you know about any article explaining it or some YouTube video, I would appreciate it.

what is your distro?

Fedora but I guess the dri/libOpenCL/libGl/vulkan bits are distro agnostic.
Recently they’ve back-ported the drivers into f33 5.9 kernel so the graphics works out of the box I am just not sure if I should be installing the libGL, dri, vulkan, opencl bits etc or if they are mutually exclusive.

libva info: VA-API version 1.9.0
libva info: Trying to open /usr/lib64/dri/
libva info: Found init function __vaDriverInit_1_9
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.9 (libva 2.9.0)
vainfo: Driver version: Mesa Gallium driver 20.2.6 for AMD SIENNA_CICHLID (DRM 3.39.0, 5.9.15-200.fc33.x86_64, LLVM 11.0.0)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointEncSlice
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileNone                   :	VAEntrypointVideoProc

I’m not sure, but aren’t the drivers baked into 5.9 already?

They are so I don’t have the issue with the driver as of now, it’s just I am confused about the other drivers/implementations etc.

Is Mesa Gallium driver 20.2.6 for AMD SIENNA_CICHLID the so called “Mesa new” driver?
Do I need amdgpu-pro driver from AMD site to get things like freesync working etc…

To add even more confusion, apparently a amdgpu-next is a thing…

  • radeon - Open source kernel driver for radeon cards, primarily for cards before GCN.
  • amdgpu - Open source kernel driver for amd/radeon cards, supports GCN and RDNA cards.
  • amdgpu-pro - Closed source userland driver that afaik sits on top of/borrows from amdgpu stuff. It provides the AMD official support for OpenGL, OpenCL and Vulcan, and maybe some more stuff? Needed to use hardware acceleration with some programs (Davinci resolve for example I think)
  • amdgpu-next- Development/unstable version of amdgpu. So more buggy (sometimes), or at least not as tested yet.
  • mesa - Open source userland driver to support OpenGL, OpenCL, Vulcan, and a couple of other APIs. Basically a open source amdgpu-pro, in some ways but not made by AMD. It is a go-between for going between a program making an API call and the driver sending information to the hardware.
  • mesa NEW, mesa-libOpenCL, mesa-libGL, mesa-libGL, mesa-dri - All basically versions or components of mesa. Perhaps split up for some packaging reason, or so you only have to install what you need.
  • vulkan - A graphics API. So you can use vulkan in your game, tell vulkan to draw a something, and vulkan will go ahead and take care of it. Similar purpose to OpenGL, but but newer.

I think freesync is built into amdgpu.


Wow thanks, that’s exactly what I was looking for, much appreciated.

Looks like sticking to built-in amdgpu/Mesa would be the choice for most.


To add the the cake’s post:

Mesa is not a driver, it is the implementation of various graphics APIs in a unified way. It implements OpenGL, Vulkan, OpenCL, among other things.

From a program perspective, the program talks to mesa, and mesa talks to the GPU driver. That’s also why it is not AMD specific, it can talk to any GPU driver that is made to work with it. This is so that not every GPU driver has to implement the various graphics APIs individually, but have one single project that handles that.

The Intel GPU driver uses Mesa, and so does the Open Source nvidia driver nouveau.

It does, but it still has some limitations. To my knowledge FreeSync still does not work when using multiple monitors. I don’t know if it works when running multiple X Servers (i.e. one per Monitor).