Last month at the XDC2015 conference AMD detailed plans for their Linux driver stack dubbed “AMDGPU”. At the center of AMDGPU is a new open-source Kernel driver that interfaces both closed and open source user-mode drivers (UMDs) unifying it’s driver offering into a solution that both official drivers and community created alternatives can tap into.
From the images displayed on your monitor all the way down to the physical hardware, the graphics driver stack controls every aspect of of rendering both 2D and 3D graphics on a computer. It’s important to differentiate between the Kernel graphics driver (AMDGPU) which is used by hardware and the user-space drivers which is used by the operating system (Linux). Since both closed and open source user-space drivers will utilize the same Kernel driver it will be possible to switch between user-spaces without the need to reboot!
Using AMDGPU most of the graphics stack will be open-source including the KFD and HSA runtime, OpenGL, Video Encode/Decode Gallium, DDX and Advanced Micro Devices has promised to open up OpenCL and Vulkan as it progresses down the AMDGPU road map. They also showed a closed stack diagram for AMD FirePro that will remain proprietary for workstation graphics cards but these are mostly used at the enterprise level.
This is a big deal for Linux users who for years had to choose between proprietary graphics drivers that offered better performance or open-source alternatives created by the community. For AMD cards, Radeon is the open source project that is based on documentation released by AMD and Catalyst Linux previously known as fglrx is the current official drivers. On the NVIDIA side of things, Nouveau is the open source project that relies almost entirely on reverse engineering and NVIDIA’s proprietary Linux Display Driver is what they officially recommend for Linux users.
AMD code included in Linux Kernel 4.2 for AMDGPU
Starting with Linux Kernel 4.2 released on September 1st 2015 AMDGPU code was included through AMD pull requests and they continue to submit new updates for Linux 4.3 and most recently Linux 4.4 as different parts become stable. This is not an open-source version of their currently closed Catalyst drivers but as the slides put it: “AMDGPU is based on current upstream open source AMDRadeon kernel driver” and “The existing open source AMD Radeon driver and new AMDGPU driver leverage upstream components.”
Support of this new driver does require owning a slightly newer AMD graphics card with GCN 1.2 support which are chips based on Tonga, Fiji, and Carrizo it’s new mobile-only chips. This does include the latest and greatest AMD Fiji cards: R9 Fury X, R9 Fury, and R9 Nano. Tonga cards supported only include the Radeon R9 285 and OEM only R9 380. All Carrizo APUs are supported but so far few have been announced or released.
Advanced Micro Devices is not opening up professional workstation cards which are separate from consumer chips and high-end graphics cards for gaming. AMD FirePro add-ons along with some other UMDs will remain closed source indefinitely and are not marked for become open-source ever. See the AMD Linux Stacks slide below for more details:
To help conceptualize from User Space (OS) to Kernel Space (hardware) here is the stack diagram for the All Open drivers: