RadeonSI NIR Benchmarks Show Great Progress With Mesa 20.0
With AMD last week having enabled OpenGL 4.6 for their RadeonSI OpenGL Linux driver when enabling the NIR intermediate representation support, you may be wondering how using NIR is stacking up these days compared to the default TGSI route. Here are some benchmarks on Polaris, Vega, and Navi for comparing this driver option that ultimately allows OpenGL 4.6 to be flipped on.
NIR is the modern intermediate representation used by a majority of Mesa drivers now in some capacity as an alternative to the likes of TGSI as what had been the default IR for Gallium3D drivers. With RadeonSI they have been transitioning to NIR since that has been the growing trend of these open-source drivers for sharing IR optimizations and the like. As well, NIR is being wired up in order to re-use some code-paths used currently by the "RADV" Radeon Vulkan driver to share some of the SPIR-V work that was needed in order for RadeonSI to have OpenGL 4.6 support. Like on the Intel side when they crossed the OpenGL 4.6 milestone recently, the big blocker to GL 4.6 on these drivers was handling SPIR-V ingestion with GL_ARB_gl_spirv / GL_ARB_spirv_extensions.
On Mesa 20.0-devel Git, when using the radeonsi_enable_nir=true environment variable to enable NIR usage it also then exposes OpenGL 4.6 now rather than OpenGL 4.5. This is for Mesa 20.0 due for release in late February or March and not the Mesa 19.3 release due out likely next week.
For showing how the performance compares when changing the driver's intermediate representation from TGSI to NIR, I ran some benchmarks using a Radeon RX 580, RX Vega 56, and RX 5700 XT graphics cards from Mesa 20.0-devel this week paired with the Linux 5.4.1 kernel atop Ubuntu 19.10. Using the Phoronix Test Suite various OpenGL gaming tests were carried out.