AMD and Valve Are Working to Improve the ACPI CPUFreq Driver for Better Gaming Performance on Linux
The upcoming release of the Steam Deck could mean great things for gaming on Linux. The handheld PC due to ship in December 2021 (provided you're one of the lucky few pre-order customers who managed to catch the initial stock) is Valve's latest attempt to break through in the hardware market, following the earlier Steam Machines project with renewed focus and dedication.
While the Steam Deck will allow you to install Windows on it, by default it runs a modified Arch Linux distro with the latest version of SteamOS. Games will run through Proton, a compatibility layer that Valve is working hard to improve so that it may be compatible with an even greater spectrum of titles.
However, it is widely known that some games aren't nearly as performant on Linux as they are on Windows, especially on AMD hardware (which Valve used for the Steam Deck, of course, powered by an AMD APU featuring Zen 2 and RDNA 2 technology).
That is mainly due to the ACPI CPUFreq driver, which led to poor CPU performance scaling. According to Phoronix, though, AMD and Valve have partnered to address this issue.
AMD will outline these improvements during the upcoming X.Org Developers Conference (XDC), the virtual event for developers working on all things Open graphics (Linux kernel, Mesa, DRM, Wayland, X11, etc.). The talk, titled 'A new CPU performance scaling proposal for tuning VKD3D-Proton' and presented by Ray Huang, will take place on September 17th.
The CPU performance scaling is one of key parts in Linux Kernel, it is to manage the CPU frequency according to kernel and processor status and widely used by many user mode application to talk to the processors. The system information APIs in Wine will use the CPU performance scaling interfaces to manage the multi-core processor schedule timing compatibilities from windows application to Linux environment for VKD3D-Proton (the full Direct3D 12 API on top of Vulkan) on Steam. The original CPU performance scaling module is based on the legacy kernel common ACPI cpufreq driver on AMD processors. We found it was not very performance/power efficiency for modern AMD platforms. So this talk is to introduce a new CPU performance scaling design for AMD platform which has better performance per watt scaling on such as 3D game like Horizon Zero Dawn with VKD3D-Proton on Steam.
The idea is inspired by co-working with Valve software guys for tuning animation slow down problem (https://github.com/ValveSoftware/Proton/issues/4125) of VKD3D-Proton on steam.