Mesa 20.2.0 Is Released

From LinuxReviews
Jump to navigationJump to search
Glxgears-with-hud.jpg

There is a lot to of new features in the latest Linux graphics stack. Mesa 20.2 offers Vulkan 1.2 support, OpenGL 4.5 support for llvmpipe, faster NIR performance and the ACO shader compiler for Vulkan on AMD hardware is now the default shader compiler for the AMD RADV Vulkan driver.

written by 윤채경 (Yoon Chae-kyung)  2020-09-29 - last edited 2020-09-29. © CC BY

Blue Nebula v1.6.0 01.jpg
Blue Nebula is one of many free software games you can play on Linux thanks to the Mesa graphics drivers.

Mesa 20.2.0 brings a lot to the table. For one, there's a whole lot of new OpenGL and Vulkan extensions. That is specially true when it comes to the llvmpipe OpenGL graphics driver.

New OpenGL features in Mesa 20.2
DRI3
  • EGL_KHR_swap_buffers_with_damage on X11 (DRI3)
GLES3
  • GL_EXT_shader_group_vote
Intel Iris
  • GL_ARB_compute_variable_group_size
llvmpipe
  • GLES 3.2 and OpenGL 4.5 support
  • GL_ARB_gpu_shader5
  • GL_ARB_post_depth_coverage
  • GL_EXT_texture_shadow_lod
Nouveau (nvc0/nir)
  • GL_ARB_gl_spirv
  • GL_ARB_spirv_extensions
Intel-DG1.jpg
Nothing in the Mesa 20.2 code-base indicates what ray-tracing plans Intel "may or may not have" for their dedicated GPUs currently being mass-produced at TSMC in Chinese Taipei on their 6nm node.

llvmpipe is a special graphics driver for doing OpenGL rendering on the CPU rather than a GPU. Dave Airlie, from the Red Hat graphics team, has done a lot of hard work on the Mesa llvmpipe graphics driver during this Mesa release-cycle. llvmpipe now supports OpenGL 4.5 and GLES 3.2 which means that you can play most OpenGL games using this driver if you happen to have a extremely powerful CPU. The nearly two hundred commits by Dave Airlie were only enough to make team Red Hat the fifth largest Mesa 20.2 contributor thanks to a overall lower score from the other team Red Hat players.

There were a lot of Vulkan improvements in Mesa 20.2. Vulkan 1.2 is now supported by Mesa but actual support varies from driver to drier. The AMD RADV driver says it supports apiVersion 1.2.131 and the Intel ANV drivers says it supports apiVersion 1.2.145.

The ACO shader compiler is the default for AMD graphics cards rendering with Vulkan using the RADV driver as of Mesa 20.2. You should watch the video How the ACO Mesa Vulkan Shader Compiler For AMD GPUs Came To Be: From Prototype To Default with developer Timor Kristóf, recorded at the The X.Org Developers Conference 2020, if you want to know more about ACO. The ACO shader compiler was developed by the Valve corporation who, overall, came in with commit score placing them at third place in this Mesa release.

New Vulkan features in Mesa 20.2
Driver Feature
ANV (Intel Vulkan)
  • VK_EXT_image_robustness
  • VK_EXT_shader_atomic_float
  • VK_EXT_4444_formats
  • VK_EXT_extended_dynamic_state
  • VK_EXT_private_data
  • VK_EXT_custom_border_color
  • VK_EXT_pipeline_creation_cache_control
RADV (AMD Vulkan)
  • RADV now uses ACO per default as backend
    • RADV_DEBUG=llvm option to enable LLVM backend for RADV
  • VK_EXT_4444_formats
  • VK_KHR_memory_model
  • VK_AMD_texture_gather_bias_lod
  • VK_AMD_gpu_shader_half_float (ACO)
  • VK_AMD_gpu_shader_int16 (ACO)
  • VK_EXT_extended_dynamic_state
  • VK_EXT_image_robustness
  • VK_EXT_private_data
  • VK_EXT_custom_border_color
  • VK_EXT_pipeline_creation_cache_control
  • VK_EXT_shader_demote_to_helper_invocation on RADV/LLVM.
  • VK_EXT_subgroup_size_control on RADV/ACO.
  • VK_GOOGLE_user_type on ANV and RADV.
  • VK_KHR_shader_subgroup_extended_types on RADV/ACO.
LLVM
  • VK_EXT_shader_demote_to_helper_invocation

AMD developer Marek Olšák contributed some very cool optimizations to the NIR intermediate representation optimizing compiler that sits in the middle between shaders written in high-level shader languages and the low-level assembly code that run on GPUs. One of them did not make it into Mesa 20.2:

"I have written a simple NIR pass that looks at conditions in ifs and if they only contain uniforms, those uniforms are marked for in-lining at draw time"

on new technologies in Mesa
in a secret developers hangout, September 28th, 2020

His contributions to NIR and the AMD RADV Vulkan driver, and other contributions from the AMD graphics team, earned AMD a sixth place in terms of code commits to Mesa 20.2.

The Open Source consulting firm Collabora was the by-far largest contributor to Mesa 20.2 thanks to a very impressive team effort lead by Alyssa Rosenzweig who made a very long list of commits to the Panfrost driver for ARM (soon Nvidia) Mali Midgard and Bifrost GPUs.

Team Google won second place thanks to a lot of code contributions by Rob Clark, Eric Anholt and Bas Nieuwenhuizen.

Mesa 20.2 scoreboard
team totals
team score rank
Collabora 720 #1
Google 646 #2
Valve 620 #3
Intel 468 #4
Red Hat (IBM) 325 #5
AMD 288 #6

Intel, who put many improvements to their ANV Vulkan driver for Intel graphics chips in Mesa 20.2, came in at fourth place, ahead of AMD by nearly 200 code commits.

Mesa 20.2 scoreboard - Players
team player score
Collabora Alyssa Rosenzweig 475
Google Rob Clark 265
Valve (and France) Samuel Pitoiset 235
Google Eric Anholt 228
AMD Marek Olšák 226
Red Hat Graphics Dave Airlie 199
Valve Rhys Perry 174
Intel graphics Jason Ekstrand 167
Datapred (Intel team at time of contributions) Eric Engestrom 146
Canada Jonathan Marek 135
Collabora / Norway Erik Faye-Lund 124
Valve Connor Abbott 88
Google Bas Nieuwenhuizen 80
HYUNA Icecream95 78
Unknown Mike Blumenkrantz 73
Google Kristian Høgsberg 73
Valve Timothy Arceri 69
Collabora Gert Wollny 66
AMD Pierre-Eric Pelloux-Prayer 62
Intel graphics team Lionel Landwerlin 60
Collabora Tomeu Vizoso 55
Valve Daniel Schürmann 54
Red Hat Graphics Karol Herbst 50
Intel graphics Dylan Baker 41
Red Hat Graphics Ben Skeggs 38
Red Hat Michel Dänzer 38
Intel graphics team Caio Marcelo de Oliveira Filho 32
Chaos Computing Christian Gmeiner 31
Mesa contributors with less than 30 commits
  • Neil Roberts (26):
  • Marcin Ślusarz (24)
  • Danylo Piliaiev (25)
  • Vinson Lee (25)
  • Ian Romanick (24)
  • Francisco Jerez (23)
  • Matt Turner (Intel graphics) (22)
  • Kenneth Graunke (20)
  • Axel Davy (19)
  • Mauro Rossi (17)
  • Italo Nicola (17)
  • Erico Nunes (16)
  • Boris Brezillon (14)
  • Ilia Mirkin (14)
  • Brian Ho (14)
  • Daniel Stone (13)
  • Andres Gomez (Igalia) (10)
  • Chris Forbes (12)
  • Elie Tournier (12)
  • Andres Gomez (10)
  • Alejandro Piñeiro (Igalia) (9)
  • Iván Briano (9)
  • Dmitriy Nester (8)
  • Iago Toral Quiroga (7)
  • Anuj Phogat (6)
  • Hyunjun Ko (6)
  • Chris Wilson (6)
  • Jan Beich (5)
  • Arcady Goldmints-Orlov (4)
  • D Scott Phillips (4)
  • Andrii Simiklit (3)
  • Benjamin Tissoires (3)
  • Emmanuel (3)
  • David Stevens (2)
  • Boyuan Zhang (2)
  • Eduardo Lima Mitev (2)
  • Guido Günther (2)
  • Christopher Egert (2)
  • Emmanuel Gil Peyrot (2)
  • Indrajit Kumar Das (2)
  • Frank Binns (2)
  • Frédéric Bonnard (2)
  • Jan Palus (1)
  • Jan Zielinski (1)
  • Abhishek Kumar (1)
  • Emmanuel Vadot (1)
  • Greg V (1)
  • Daryl W. Grunau (1)
  • Andreas Baierl (1)
  • Gurchetan Singh (1)
  • James Park (1)
  • James Zhu (1)
  • Hanno Böck (1)
  • Icenowy Zheng (1)
  • David McFarland (1)
  • Clément Guérin (1)
  • Con Kolivas (1)
  • Andrey Vostrikov (1)
  • Charmaine Lee (1)
  • Duncan Hopkins (1)
  • Ani (1)
  • Benjamin Cheng (1)
  • Blaž Tomažič (1)

Some features in Mesa git master did not make it into Mesa 20.2. There is, for example, support for on-disk shader cache functionality in the Nouveau NVC0 Gallium3D driver in Mesa master. This functionality won't become commonly available until Mesa 20.3.

The Mesa graphics library website is at mesa3d.org and the source code repository is at gitlab.freedesktop.org/mesa/mesa. You can compile it yourself, but you are likely better off waiting until your favorite GNU/Linux distribution makes it available to you in their regular repositories. Most non-LTS distributions will have it available within a week or two.

5.00
(one vote)


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