FreeSync is designed to reduce tearing, help battery life, and more via dynamically adapting the display refresh rate as needed. There are more and more FreeSync-supported displays hitting the market and FreeSync is backed by VESA as an option in the DisplayPort 1.2a specification. AMD Linux customers have been missing out on this feature, but it appears as part of the new AMDGPU DAL driver where they are working towards feature display parity with the proprietary driver, FreeSync is on the TODO list.
In looking to address the concerns by upstream developers about the massive size and complexity of DAL, AMD's Harry Wentland described the architecture a bit more. Here's the main part of his message:
The goal with DAL is to provide a unified, full featured display stack to service all of our Linux offerings. This driver will have to support our full feature set beyond what's supported by amdgpu, e.g.FreeSync is mentioned along with other exciting work like synchronized timings across displays, better multi-monitor support, improved stability, and more power management related features! Let's hope this all pans out in a timely manner.
- synchronzied timings across different displays
- solid support of 6 displays in any configuration (HDMI, DVI, DP, DP MST, etc)
- solid support of 4k at 60 timings on APUs
- power features, such as
- clock-accurate bandwidth formulas
- improved interaction with powerplay to maximize power savings
- Improved audio and other infoframe related features
- Improved stability with powerplay since display hw is involved in the SMC hw interactions and improper programming sequences can lead to GPU hangs, etc.
The current amdgpu display stack grew somewhat organically and as such is not well suited to handling all of the hardware dependencies involved especially in areas like audio. The drm abstractions used by the old code map less and less well to new hw pipelines. Atomic helps, but if we are going to convert, it seemed like a good time to start fresh.
He also explained more with their reasoning for some of the code abstraction, how their display core doesn't always map well to the DRM interfaces, the DAL internal abstractions match what is used by the AMD drivers on other operating systems, and how they can further trim this ~93k lines of code (there's a lot of blank lines and code comments).