Catalyst vs. AMDGPU vs. Radeon DRM On A R9 290: Experimental AMDGPU Can Be Faster
While the AMDGPU Linux kernel driver right now exposes support for AMD GCN 1.2 GPUs and newer, like Carrizo, Fiji, and Tonga, it is possible to get GCN 1.1 Sea Islands hardware working with this driver if jumping through a few hoops. In this article are some tests of a Radeon R9 290 "Hawaii" when using the proprietary Catalyst driver, Radeon DRM driver as is the default for this card on open-source, and then using the experimental AMDGPU DRM open-source support.
The AMDGPU kernel driver was originally developed by AMD on GCN 1.1 Sea Islands hardware prior to the availability of graphics cards like the R9 285 "Tonga", but it's only for GCN 1.2+ graphics cards where this driver is used by default. The upstream kernel does maintain a "DRM_AMDGPU_CIK" Kconfig option for enabling experimental support for these CIK GCN 1.1 graphics processors. The use-case in doing so would be since the upcoming AMD Vulkan driver and closed-source proprietary OpenGL driver component will be tied to the AMDGPU kernel interfaces and not the Radeon DRM driver for GCN 1.1 GPUs and older. However, there's also talk of trying to port the Mesa DRM library (libdrm) code of Radeon to exposing an interface similar to AMDGPU so that these user-space components would work in that regard without having to port the hardware enablement code over to the AMDGPU DRM -- effectively just changing around the interface between user and kernel-space so that the newer user-space code targeting the AMDGPU libdrm would also work with the Radeon DRM driver.
A few days ago I tried running the R9 290 with the AMDGPU driver but that initial effort was thwarted. The first effort encountered was that I had added amdgpu.powerplay=1 to the kernel command-line by default, even when testing this CIK GPU. Booting with PowerPlay enabled for these pre-GCN1.2 GPUs apparently causes some troubles on Linux 4.5 and isn't needed anyway. Once knowing that, the initial problem was fixed, but then there were some firmware woes. After updating the firmware and at first having some odd interaction issue, then the R9 290 Hawaii was happily running on the AMDGPU kernel driver. All along, I was using this Linux 4.5-rc1 Ubuntu kernel build I published at the beginning of the week that enables the PowerPlay and CIK GPU support that otherwise isn't enabled by default. Once installing that kernel you also need to blacklist the Radeon DRM driver otherwise it will claim the CIK hardware first rather than AMDGPU. The Sea Islands hardware is the Radeon HD 7790 and Radeon R7 260 / R7 260X / R9 290 / R9 290X / R9 295 X2. The other AMD Southern Islands (GCN 1.0) graphics cards have no AMDGPU DRM driver support at present.
So from the common Core i7 5960X test system running Ubuntu 15.10, I tested the Catalyst driver as packaged on Ubuntu 15.10 (fglrx 15.20.3), then using Linux 4.5-rc1 with the Radeon DRM, and lastly with 4.5-rc1 when using the AMDGPU DRM driver. During the open-source tests, Mesa 11.2-devel with LLVM SVN from the Padoka PPA was used as the user-space drivers. The xf86-video-ati 7.6.99 and xf86-video-amdgpu 1.0.99 DDX drivers were also provided by the Padoka PPA during this XFX Radeon R9 290 graphics card benchmarking. During all of the open-source testing, DRI3 was enabled.