AMDGPU vs. Radeon DRM Driver Performance On Linux 4.15

Written by Michael Larabel in Display Drivers on 21 December 2017 at 11:05 AM EST. Page 1 of 5. 17 Comments.

For GCN 1.0 "Southern Islands" and GCN 1.1 "Sea Islands" graphics processors from AMD, they are supported both by the Radeon DRM driver (the default) as well as the AMDGPU DRM driver (designed for GCN 1.2+ GPUs). As it's been a while since comparing the performance impact of changing the kernel driver for these older GCN graphics cards, here are some fresh benchmarks using the Linux 4.15 Git kernel with Mesa 17.4-dev using a few GCN 1.0/1.1 cards.

The AMDGPU DRM driver was designed for GCN 1.2 and newer architectures while with time GCN 1.0/1.1 support ended up getting added to this driver too. While the long-standing Radeon DRM driver remains the default and is what fully supports this hardware. The AMDGPU support for GCN 1.0/1.1 remains experimental but with recent kernels can be easily enabled via the radeon.si_support=0 amdgpu.si_support=1 kernel command-line switches for GCN 1.0 GPUs or radeon.cik_support=0 amdgpu.cik_support=1 for GCN 1.1 GPUs.

As a refresher, GCN 1.0 GPUs are like Oland / Cape Verde / Pitcairn / Tahiti in the HD 7000 series and other re-branded RX 200/300 series GPUs. The GCN 1.1 GPUs are Bonaire, Hawaii, Kabini, Kaveri, Godavari, and other APUs.

GCN 1.0/1.1 isn't defaulting to AMDGPU on the latest mainline kernel since the Radeon DRM support is more mature and there are some functionality regressions, particularly around video encode/decode capabilities not being present for GCN 1.0 right now in AMDGPU. There's also risk of other regressions with GCN 1.0/1.1 support not being well tested on AMDGPU or a focus by AMD, thus use those kernel module options at your own risk.

Seeing what DRM driver you are using can be done by looking at dmesg for "amdgpu" or "radeon" references.

With my testing, the only regression I ran into from the functionality perspective during testing was with the R9 290 Hawaii graphics card not having HDMI output working when using the AMDGPU DRM driver. But if plugging in a DisplayPort cable it worked, and that also then allowed the HDMI output to also work with AMDGPU.

While there is the risk of regressions if using GCN 1.0/1.1 GPUs, users are interested in using the AMDGPU driver due to it being the newer code-base picking up new features while Radeon DRM is largely in a maintenance state. This includes PowerPlay, TTM memory management optimizations, etc, that still go into AMDGPU. Feature-wise, using AMDGPU DRM means that you can use the RADV or official Radeon Vulkan drivers. These AMD Vulkan drivers are only written against the AMDGPU DRM interfaces and not the older Radeon driver.

Using the Linux 4.15 kernel and Mesa 17.4-dev atop Ubuntu 16.04 LTS, I ran some fresh benchmarks comparing the OpenGL performance impact when using the AMDGPU vs. Radeon DRM drivers on this latest kernel series. Additionally, when using the AMDGPU driver, I also ran some now-possible Vulkan benchmarks.

AMDGPU vs. Radeon DRM Drivers Linux 4.15

The GCN 1.0/1.1 graphics cards available for testing were the Radeon HD 7950, R7 260X, R9 270X, and R9 290. Note that with the R9 290 Hawaii GPU this is the particular card that's been very peculiar on and off with performance regressions, just as a forewarning about that particular card.

Related Articles