Radeon Vulkan Variable Rate Shading Benchmarks For Boosting RDNA2 Performance
Landing in Mesa 21.1 on Friday was a variable rate shading (VRS) override for the Radeon Vulkan "RADV" driver for providing significant performance boosts by effectively rendering less. This feature is limited to RDNA2 graphics processors while here are some benchmarks on what it means for 4K gaming with the AMD Radeon RX 6000 series graphics cards on Linux.
The Mesa RADV driver has Variable Rate Shading (VRS) support for trading less rendering for higher performance. The driver allows setting an environment variable (RADV_FORCE_VRS) to force-enable the functionality even for games/software not making direct use of Vulkan VRS. A value of 2x2 will reduce the fragment shader invocations per pixel to one per 2x2 pixels as a decent performance boost while not degrading quality too much. For the benchmarking today I tested the RDNA2 graphics cards available with the 2x2 setting compared to no overrides.
RADV co-lead developer Bas Nieuwenhuizen explains the RADV VRS support in more detail over on his blog.
With the Radeon RX 6700 XT, RX 6800, and RX 6800 XT I have been running some benchmarks of Mesa 21.1-devel + Linux 5.12 out-of-the-box and then again with the RADV_FORCE_VRS=2x2 set for enjoying this new feature. Tests were done on a Ryzen 9 5900X system with ASUS ROG CROSSHAIR VIII HERO motherboard running Ubuntu 20.04 LTS with 16GB of RAM and 1TB Sabrent Rocket 4.0 Plus NVMe SSD.
The RADV VRS functionality will be quite interesting when any RDNA2-based APUs or low-end graphics cards come to market for squeezing out greater Linux gaming performance for what otherwise wouldn't be achievable. For the Radeon RX 6700/6800 series for testing today, the focus was on 4K gaming as where these higher-end graphics cards may be able to enjoy a more playable experience thanks to variable rate shading. A variety of native and Steam Play games were tested for this initial RADV VRS comparison.