AMD FreeSync For Tear-Free Linux Gaming - Current State In 2017

Written by Michael Larabel in Linux Gaming on 16 December 2017 at 11:08 AM EST. Page 1 of 3. 40 Comments.

If you are thinking of gifting yourself (or someone else) a FreeSync-compatible monitor this holiday season, here's a look at how the AMD FreeSync support is working right now, the driver bits you need to be aware of, and how it's all playing out for those wanting to use this tear-free capability for Linux gaming.

What Is FreeSync?

For those that don't know, FreeSync is AMD's branded adaptive synchronization technology. FreeSync came following NVIDIA introducing their G-SYNC technology for adaptive synchronization. FreeSync aims to reduce/eliminate tearing by supporting a dynamic refresh rate while not introducing any added performance cost or lag. FreeSync makes use of VESA's Adaptive-Sync protocols and supported monitors are generally cheaper than those supporting NVIDIA's G-SYNC. FreeSync/Adaptive-Sync is supported by dozens of different monitors from just FHD/QHD monitors to 4K UHD displays and generally can be found for about the same cost or only nominally more than other similarly speced gaming monitors.

FreeSync On Linux

Long story short, at the moment it's easiest to get FreeSync working when using the AMDGPU-PRO hybrid driver stack. For this article I was using the latest AMDGPU-PRO 17.50 driver.

On the open-source side, the kernel bits are present with Linux 4.15 as part of the AMDGPU DC display code landing. You can see the AMDGPU DC FreeSync commits to the kernel here.

Keep in mind though that DC is only used by default with Vega/Raven GPUs at the moment, so you would need to boot your system with amdgpu.dc=1 on older GPUs to be using the DC stack that is required for FreeSync support. (With AMDGPU-PRO you don't have to worry about that with AMDGPU DC being used by default.) AMDGPU DC is also what provides HDMI/DP audio for newer GPUs, HDMI 2.0 capabilities, atomic mode-setting, and more.

AMD officially supports FreeSync with GCN 1.1 Sea Island GPUs and newer. My tests were being predominantly done with the Radeon RX Vega 64 and also tested some with the Radeon RX 580 Polaris.

Besides the kernel bits with AMDGPU DC, FreeSync also needs a bit in user-space. Libdrm and DDX driver patches are needed to basically inform the Direct Rendering Manager (DRM) kernel driver when to turn on/off FreeSync. Those are the bits that are not yet upstreamed in their respective code repositories and thus why it's easier just deploying the AMDGPU-PRO hybrid driver. There's also an experimental patch for RadeonSI Gallium3D in Mesa that would expose a DriConf option to easily have FreeSync turned on/off when entering full-screen Linux games.

It hopefully won't be too much longer before those user-space bits are upstreamed. It's taking some time as among other reasons they are trying to come up with good open-source FreeSync/Adaptive-Sync plans that would suit the multiple open-source Linux driver parties so they could support the same interfaces.

So if you don't want to be tracking down patches / non-mainline repositories, for now it's easiest just deploying AMDGPU-PRO while in 2018 everything should hopefully be settled and of course you'll be able to read about it on Phoronix at that time.

My Test Setup

With the Radeon RX 580 and RX Vega 64 in my AMDGPU-PRO 17.50 testing, I've been using Ubuntu 16.04 LTS for compatibility with the PRO hybrid driver components. The monitor for testing is the ASUS MG28UQ 4K 28-inch display.

I've been using the ASUS MG28UQ as my primary monitor on my main production system the past year and a half and due to it being a great 4K display, there's now a second ASUS MG28UQ for FreeSync/Adaptive-Sync testing.

This 4K 28-inch Adaptive-Sync/FreeSync ASUS monitor can be found for $399 USD from Amazon or $369 right now from NewEgg.


Related Articles