How To Setup Your Linux System For The Radeon RX Vega

Written by Michael Larabel in Display Drivers on 13 August 2017 at 12:00 AM EDT. Page 1 of 1. 44 Comments.

Yesterday the embargo expired on showing you the Radeon RX Vega hardware, both the Vega 56 and Vega 64. While the embargo for sharing reviews and performance benchmarks for the Radeon RX Vega doesn't expire until tomorrow (Monday) when the hardware will become available, today I am providing a brief how-to guide for setting up both drivers (AMDGPU+RadeonSI and AMDGPU-PRO) for the RX Vega 56 / 64. So if you are hoping to buy a Radeon RX Vega tomorrow when they become available, this is what you can do today for getting your system(s) ready.

This information is public if going through mailing lists, etc, thus not embargoed information. In fact, all of the technical details were basically shared last month in Linux Driver Expectations For The Radeon RX Vega while this is basically the latest updated bits and formed as a how-to. The guide is primarily geared for Ubuntu Linux users but the rough steps can be used across other Linux distributions.

The Easy Way: AMDGPU-PRO

As has been already covered, with AMDGPU's new display code stack (also known as DC / DAL) having yet to be merged into the mainline Linux kernel, you won't see "out of the box" support for Radeon RX Vega on Linux for at least a few months. Thus the easiest way for quickly getting the Radeon RX Vega graphics cards on Linux is by installing the AMDGPU-PRO driver. That is, of course, assuming you are running a supported distribution like Ubuntu 16.04, Red Hat Enterprise Linux / CentOS, or SUSE Linux Enterprise. Support on unofficial distributions will vary as always depending upon your Linux kernel version, X.Org Server, etc.

So if you simply install the new AMDGPU-PRO Linux driver, you should be in good shape for Radeon RX Vega support. The AMDGPU-PRO 17.30 or newer driver is where there is the RX Vega support after the Radeon Vega Frontier Edition support was initially introduced in the 17.20 series. AMDGPU-PRO carries the AMDGPU DC display code as part of its DKMS module, so you will find working display support as well as FreeSync, HDMI/DP audio, and other modern display features.

With Vega and newer, ROCm is used for providing the OpenCL/compute support rather than their older OpenCL driver. Their older OpenCL driver is installed by default with AMDGPU-PRO while the ROCm OpenCL is not. After installing the AMDGPU-PRO driver, the ROCm OpenCL can be activated via sudo apt install rocm-amdgpu-pro (or equivalent command depending upon your packaging system). After that the ROCm OpenCL stack is installed into /opt/amdgpu-pro/ rather than the standard Linux system paths; see detailed instructions at support.amd.com.

The Fully Open-Source Way: AMDGPU+RadeonSI

Most Phoronix readers and Linux enthusiasts will be after getting this driver going on the pure open-source stack as is most frequently used by Linux gamers / non-workstation users. While AMD developers have been working on the open-source driver support for months, it's not yet baked into released versions of all the relevant components. Still, it's pretty easy to get going if you have ever used the Oibaf/Padoka PPAs or similar, but the main caveat comes down to the kernel.

Vega Kernel Support

While Linux 4.13 has Radeon RX Vega support, it's only headless (non-display) support. There isn't display support until AMDGPU lands its big DC display stack, which looks like it will be Linux 4.15 at the earliest before that happens. This headless support on the mainline kernel is only practical if having an integrated GPU or secondary GPU installed where you could use that for driving a display and offloading the rendering to the Vega GPU using DRI_PRIME. It could also be used for OpenCL/compute systems, but the necessary ROCm kernel driver changes have yet to be mainlined, so ROCm is still relying upon its older kernel branch for now.

For the moment the easiest kernel branch to use for Vega support paired with DC is amd-staging-4.12. That branch will eventually be updated to a newer kernel base, etc. For my testing, that's the branch I have been using. When pulling from that branch (or any others), you need to ensure the Kconfig configuration has enabled the CONFIGURE_DRM_AMD_DC switch to actually use the new DC display code-paths.

For Ubuntu users, a few days ago I uploaded an AMDGPU DC Ubuntu kernel build from amd-staging-4.12 with Vega support. In fact, that's what I have been using for testing.

In the next few kernel cycles, there probably should be more performance improvements and other optimizations come down for Vega too, so always try to be on an updated kernel release. Already queued in DRM-Next for the eventual Linux 4.14 cycle is also 2MB pages support that should be of benefit for Vega.

The Microcode Binaries

As with any recent Radeon GPU (and NVIDIA too), there are microcode/firmware images that must be supplied too for working hardware acceleration. As of writing, the Vega10 microcode images have not yet been added to linux-firmware.git. You can manually download the Vega10 microcode binaries from this web page. If using the supported AMDGPU-PRO driver, it ships with the Vega10 images by default. Drop the vega10_*.bin files into /lib/firmware/amdgpu/ and don't forget to rebuild your initramfs.

RadeonSI Mesa + LLVM

For Radeon RX Vega support you basically want to be on Mesa Git and also LLVM Git/SVN. You may be able to survive fine on Mesa 17.2 that will soon be promoted to stable, but with any new graphics card release I always recommend using Mesa Git for having the very latest fixes and optimizations. Especially with Vega being a brand new architecture, sticking to Mesa Git is wise. Mesa 17.3 will be released as stable around November, at which point sticking to Mesa stable releases should be a pleasant experience for Vega Linux gamers.

Radeon RX Vega support also requires updates to the AMDGPU LLVM compiler back-end, which are present for the soon-to-be-released LLVM 5.0 release. So make sure your Mesa build is against LLVM 5.0 or LLVM 6.0 SVN, again, there could be improvements to land in the days/weeks ahead, so it pays off to be riding Git. The current LLVM 4.0 stable release is not new enough.

RadeonSI is the Gallium3D driver continuing to support OpenGL on Vega. David Airlie has already been working on initial open-source Vulkan support for Vega, but expect that to continue to be refined over the weeks ahead. Notably missing from the RADV Vulkan driver for Vega right now is geometry and tessellation shader support.

For ease of use, if running Ubuntu, I recommend the Padoka PPA for getting Mesa Git built against LLVM SVN/Git and generally updated once or twice per week.

DDX Driver, ROCm / OpenCL, Etc

The libdrm required by Mesa Git is enough to get you going with AMDGPU, given that libdrm isn't too frequently updated. The xf86-video-amdgpu DDX driver has not seen any patches for Vega, but using xf86-video-modesetting is enough for Radeon hardware.

For those wanting open-source OpenCL, the easiest way is by using the AMDGPU-PRO driver with its ROCm OpenCL driver included. There is also the ROCm repository managed by AMD for getting all of the needed ROCm components. While ROCm is open-source, all of the necessary changes have yet to be worked into the upstream Linux kernel, LLVM Clang, etc, so you are relying upon a number of branched components for the time being. The Clover OpenCL Gallium3D state tracker remains unmaintained.

The Biggest GPU Launch Ever With Full-Featured Open-Source Support Available

This is AMD's biggest graphics card launch ever with a brand new architecture where it's supported by day-one with working open-source drivers. Albeit, it's not ideal in not having mainline/integrated support. If you will recall from the Fury launch and such, the AMDGPU DRM driver was still actively being developed, etc. Previous to that, there's generally always been same-day (closed-source) Catalyst/AMDGPU-PRO drivers available (just as you will continue to find with new NVIDIA GPU launches and their Linux support), but the open-source support for the big desktop GPU launches have tended to lag behind by weeks or months.

The open-source code today for Vega is basically on-par with the hybrid proprietary AMDGPU-PRO driver but unfortunately not all mainlined today. Even if it had been mainlined, users would likely be needing to pull from Git anyways in order to benefit from the latest performance optimizations and improvements not yet in released versions; this is simply the state of affairs with GPUs growing ever increasingly complex and being among the largest drivers in the entire Linux kernel. It's likely for the next few weeks/months you will want to be tracking the AMDGPU DRM, Mesa Git, and LLVM SVN for the newest fixes/optimizations/features. I just hope that for Linux 4.15 they will manage to have the DC display stack merged so there can be working out-of-the-box Radeon RX Vega support on the Linux desktop, which will then be rolling out to Linux distributions in H1'2018.

Stay tuned for a plethora of Radeon RX Vega Linux benchmarks tomorrow on Phoronix.

If you enjoyed this article consider joining Phoronix Premium to view this site ad-free, multi-page articles on a single page, and other benefits. PayPal or Stripe tips are also graciously accepted. Thanks for your support.


Related Articles
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.