AMD Linux Drivers Get Dynamic VRS Support To Boost Steam Deck Power Efficiency

radeon tech hero
AMD's graphics drivers for Linux have been getting a lot of love lately, but not just from AMD. The most up-to-date and commonly-used Radeon graphics drivers are all open-source, which means anyone can contribute, and the biggest contributor lately is none other than game-dev-turned-platform-host Valve. That might be a surprise if you have momentarily forgotten that Valve is essentially about to ship a handheld game console called Steam Deck that relies heavily on said open-source drivers.
steamdeck front news
Valve Steam Deck

One of the more interesting features to debut in DirectX 12 Ultimate was a feature called "variable-rate shading", or VRS. VRS is a scheme by which a game engine can spend less time shading the pixels in a region of the game that you're probably not looking at closely, or is off in the periphery. In areas of the game that are poorly-lit, that don't have a lot of fine detail, or that are far off in the scene, you can quite literally shade pixel regions at lower and varying rates, to save shader overhead and produce the final image.

vrs demo example image
VRS example image from Khronos Vulkan documentation.

If done correctly, it should be fairly transparent to the player while offering a nice little performance boost. Now, while I mentioned DX12 Ultimate up there, the first implementation of VRS in a retail game was actually in Wolfenstein II: The New Colossus, which uses the open-source Vulkan API. Indeed, Vulkan supports more or less all the fancy features you'll find in DirectX 12 Ultimate, including ray-tracing, and obviously, VRS.

When using VRS in Vulkan, you use the extension VK_KHR_fragment_shading_rate to control the shading rate in various regions of the frame. AMD has supported this extension for awhile in its RADV open-source Vulkan driver for Linux, but Valve has now implemented the ability to force per-vertex VRS with a certain shading rate dynamically. Previously, VRS rates would be hard-coded in a game's vertex shaders.

What this means, at least according to Phoronix founder Michael Larabel, is that this could allow Valve to define adjustable VRS rates depending on the power state of the Steam Deck. So saying, if you disconnect AC power, the Deck could slant the algorithm to prefer a slight downgrade in visual quality to save on battery life. With that said, it's difficult to imagine the Steam Deck getting too much mileage out of VRS given the extremely low 1280×800 resolution of its display, but it's also working with a very small GPU and a very tight power budget. It's likely that every little bit counts.