Mesa 21 Is Released With Many Improvements For AMD Graphics Users

From LinuxReviews
Jump to navigationJump to search

The latest version of the Mesa graphics stack for Linux adds support for sparse memory, rapid packed math, dynamic fragment shading and resizable bar to the RADV Vulkan driver for AMD, improved OpenGL support to the Panfrost driver for Mali graphics chips on ARM devices, some Intel speedups and a whole lot more.

written by 윤채경 (Yoon Chae-kyung)  2021-03-13 - last edited 2021-03-15. © CC BY

Fr-041 debris in Wine.jpg
The Fr-041: d e b r i s PC demo, released by the German demo group Farbrausch in 2007, running in Wine with DXVK converting Direct3D to Vulkan which is then rendered by the RADV Vulkan driver for AMD graphics cards.

Mesa is a large collection of graphics-related libraries that handle all the free software graphics drivers, OpenGL support, Vulkan support and much more. It is a fundamental part of GNU/Linux desktop systems.

The release-cycle for Mesa 21 was a bit hectic with quite a few hiccups and delays along the way. The shiny new Mesa version is finally out and on its way to the more bleeding-edge GNU/Linux distributions thanks to the hard work of release-manager Dylan Baker and a whole lot of other hard-working developers.

Marek Olšák is one of them. He was pretty much alone on team AMD this release-cycle, but he managed to make up for it with a whopping 278 commits. That makes him the single largest contributor to Mesa 21, outperforming Collabora's Alyssa Rosenzweig by a whopping 108 commits. Olšák contributed a whole lot to the various AMD drivers, but he is not the sole reason there is so many improvements on the AMD side in this release. Valve's Daniel Schürmann and Google's Bas Nieuwenhuizen are also notable for their many contributions to the AMD RADV Vulkan driver and the ACO shader compiler in this Mesa release.

Sparse Memory, "Rapid Packed Math" And Resizable BAR On AMD

"Sparse Memory" means that memory resources can be non-contiguous and re-bound to different memory allocations. It also relaxes the memory descriptor requirements. Most Vulkan objects, such as VkBuffer and VkImage, need to be completely and contiguously bound to a single VkDeviceMemory object. Some objects do not and those objects, that are in the Vulkan API specification, can now be made as sparse resources when the AMD RADV Vulkan driver is used.

Software like the development version of VKD3D can already use this functionality for things like Direct3D 12 sparse texture support.

"Rapid Packed Math" is a marketing term AMD uses to describe two half-precision floating-point (FP16) operations within a single single-precision floating-point format (FP32) operation. The AMD RADV Vulkan driver can now use AMD-specific "Rapid Packed Math" operations on Vega and newer graphics cards from AMD. Most games do half-precision floating-point operations now and then, so this is helpful on the hardware that supports it, but it is not something that will have a gigantic impact since it is just one small part of a typical game's workload.

Those who happen to own a brand new Radeon RX 6000 card will be happy to know that there's also support for the VK_KHR_fragment_shading_rate extension in Mesa 21. This extension can be used to dynamically adjust how parts, or fragments, of a scene are shaded on a per-region, per-draw or per-primitive basis. This extension is only available on brand new RDNA 2 based graphics cards (RX 6000-series), the vast majority of AMD graphics cards out there lack the necessary hardware.

Mesa 21 brings support for AMD Smart Access Memory, also known as resizable BAR, to both the RadeonSI OpenGL driver and the AMD RADV Vulkan driver. Very recent hardware and a fairly new kernel (5.10+) is required to use this functionality, and it must be enabled by a BIOS setting on the hardware where it is available.

Some who have tested it have mentioned that they get reduced performance in certain games with Mesa 21 when resizable BAR is turned on in BIOS, so your mileage may vary.

A few of the improvements to the AMD RADV Vulkan driver are more general in nature. The Stormblood Final Fantasy XIV Benchmark for Windows improved from a score of 5648 using Wine 6.3, DXVK 1.8.1 and Mesa 20.3.4 to 5850 with Mesa 21 on a box with an older RX 470 graphics card.

Stormblood Final Fantasy XIV Benchmark, 1080p

The difference between 5648 and 5850 is less than one percent, there is no huge general performance improvement in the AMD RADV Vulkan driver in Mesa 21 but there is, at least, a slight improvement to enjoy in graphical applications.

The compute performance the AMD RADV Vulkan driver offers has not improved since Mesa 20.3, not even a little. Our Vulkan compute image up-scaling benchmarks using RealSR and waifu2x are within the same half a second run-to-run variation with both Mesa 20.3 and Mesa 21. There is nothing new for those using Vulkan compute on AMD graphics cards. There are equally few improvements to enjoy in the Mesa Clover OpenCL driver. It is still stuck at OpenCL 1.1 and it couldn't produce a valid and correctly LuxMark benchmark result if its existence depended on it. Those who want to use OpenCL on AMD graphics hardware will still have to install the alternative AMD ROCm stack.

Intel Speedups

Intel were not very active during this Mesa release-cycle, but they did manage to squeeze some overall performance improvements to both their Intel Iris OpenGL driver and their ANV Vulkan driver into this release.

Intel put several pieces of code for Vulkan ray-tracing in place during the Mesa 21 release-cycle. Intel's existing CPU-integrated graphics chips won't be able to take advantage of this code, but their new dedicated Xe HPG cards will. It is quite possible that Intel will have cards fully supporting Vulkan ray-tracing before AMD gets there.

ARM Improvements

The Panfrost drivers for the Mali graphics chips that are very common on the ARM side have seen a lot of improvements mostly thanks to Alyssa Rosenzweig. The Panfrost t760+ driver can now do OpenGL 3.1 and the g31/g52/g72 driver can now do OpenGL ES 3.0.

The Freedreno driver for Qualcomm Adreno graphics has gained OpenGL 3.3 support.

OpenGL Without OpenGL By The Power Of Vulkan

Erik Faye-Lund from Collabora has done a lot of work on a very special Gallium driver called Zink that turns intermediary Gallium graphics calls into Vulkan API calls instead of graphics driver output. The idea is to make OpenGL work on platforms that do not support OpenGL but to support Vulkan.

"The Zink driver is a Gallium driver that emits Vulkan API calls instead of targeting a specific GPU architecture. This can be used to get full desktop OpenGL support on devices that only support Vulkan."

Mesa Documentation: Zink Overview

Devices with Vulkan support that do not support OpenGL are not common today, but Zink is a pretty neat technology that could be very useful for compatibility on future devices.

The Contributors

Valve had the most code commits overall with a total of 378, most of which came from Samuel Pitoiset and Rhys Perry. The developers-for-hire at Collabora (325) came in second place with 325 commits thanks to a strong team effort lead by Alyssa Rosenzweig, Boris Brezillon and Gert Wollny. Google came in third place with 306 commits and AMD got fourth price even though Marek Olšák was theor only notible contributor Intel, with just 186 commits in total, were barely trying.

Mesa 21.0.0 Developer scoreboard - Top 10
score player team
278 Marek Olšák AMD Open Source Lab
170 Alyssa Rosenzweig Collabora
156 Eric Anholt Google
155 Samuel Pitoiset Valve
148 Rhys Perry Valve
119 Boris Brezillon Collabora
113 Mike Blumenkrantz SuperGoodCode
105 Jesse Natalie Microsoft
93 Rob Clark Google
Notable contributors to Mesa 21
score player team score player team
70 Dylan Baker Intel 36 Adam Jackson Red Hat
69 Dave Airlie Red Hat 33 Michel Dänzer Red Hat
63 Jason Ekstrand Intel 33 Iago Toral Quiroga Igalia
57 Bas Nieuwenhuizen Google 32 Nanley Chery Intel
55 Vinson Lee San Diego Community College District 23 Ian Romanick The Khronos Group
54 James Park 23 Andres Gomez Igalia
54 Icecream95 Hyuna 22 Tony Wasserka Valve
53 Daniel Schürmann Valve 22 Danylo Piliaiev globallogic
37 Christian Gmeiner Chaos Computing 21 Lionel Landwerlin Intel
36 Gert Wollny Collabora
Mesa contributors with 2 to 20 commits
  • Mauro Rossi (19)
  • Juan A. Suarez Romero (19)
  • Ilia Mirkin (18)
  • Pierre Moreau (17)
  • Leo Liu (17)
  • Daniel Stone (17)
  • Connor Abbott (17)
  • Timur Kristóf (16)
  • Michel Zou (16)
  • Marcin Ślusarz (16)
  • Kenneth Graunke (16)
  • X512 (13)
  • Caio Marcelo de Oliveira Filho (13)
  • Alejandro Piñeiro (12)
  • Simon Ser (11)
  • Hoe Hao Cheng (11)
  • Jordan Justen (10)
  • Jonathan Marek (9)
  • Tapani Pälli (7)
  • Hyunjun Ko (6)
  • Erico Nunes (6)
  • David Stevens (6)
  • Andrii Simiklit (6)
  • jzielins (5)
  • cheyang (5)
  • Thong Thai (4)
  • Ruijing Dong (4)
  • James Jones (4)
  • Duncan Hopkins (4)
  • Yevhenii Kolesnikov (3)
  • Witold Baryluk (3)
  • Tomeu Vizoso (3)
  • Samuel Iglesias Gonsálvez (3)
  • Neha Bhende (3)
  • Michael Tang (3)
  • Marijn Suijten (3)
  • Karol Herbst (3)
  • Jeremy Huddleston (3)
  • Indrajit Kumar Das (3)
  • Georg Lehmann (3)
  • Eric Engestrom (3)
  • Yevhenii Kharchenko (2)
  • Sagar Ghuge (2)
  • Ryan Neph (2)
  • Matt Turner (2)
  • Lucas Stach (2)
  • Giovanni Mascellani (2)
  • Boyuan Zhang (2)
  • Anuj Phogat (2)
  • Alistair Popple (2)
  • Alexander von Gluck IV (2)

The source-code for Mesa 21 can be acquired from The more bleeding-edge distributions will probably have it available in their repositories by next week while more stable-focused distributions will likely stick with Mesa 20 for the foreseeable future. Don't expect Debian to get it any time soon. You can check the Mesa 21.0.0 release notes if you want to see all the tiny details that where changed since Mesa 20 was released.

(one vote)

Add your comment
LinuxReviews welcomes all comments. If you do not want to be anonymous, register or log in. It is free.