Mesa 19.3.0 Is Released With ACO shader compiler for AMD GPUs And OpenGL 4.6 Support
The ACO shader compiler for AMD's Vulkan graphics driver RADV, developed by Valve, is the biggest highlight in this latest release of the Mesa graphics stack for GNU/Linux desktops.
written by 林慧 (Wai Lin). published 2019-12-13 - last edited 2019-12-16
Mesa 19.3 bumps OpenGL support up to OpenGL 4.6 on Intel hardware. The 19.2-series supports OpenGL versions up to 4.5. What OpenGL version Mesa actually supports on a given machine depends on what GPU and graphics driver is used. The Mesa radeonsi OpenGL driver for AMD GPUs is, for now, limited to OpenGL 4.5.
The Vulkan version supported remains the same; Mesa 19.3 and 19.2 both list Vulkan 1.1 as the supported version. The latest version does have quite a few new Vulkan extensions for both Intel ("i965, iris") and AMD ("RADV") GPUs.
Intel was planning to make their new Iris graphics driver the default for Intel GPUs as of this release. Those plans were scrapped and the new Iris driver will not be a Mesa default until Mesa 20 is released sometime in Q1 2020. Intel's Lisa Pearce stated that Intel chose to delay general Iris deployment to "ensure no destabilization for users".
A new shader compiler for Vulkan driver called ACO is the big highlight in Mesa 19.3. It was developed by Valve in order to improve the AMD RADV Vulkan driver's performance. RADV has, up to now, used LLVM to compile shaders. The Low-Level Virtual Machine (LLVM) was created with entirely different purposes in mind. It can compile shaders but it's not very good at it. ACO does a much better job. It's much faster at compiling shaders with shader compile times being half of LLVMs in most cases. In-game performance is, on the other hand, not dramatically improved. ACO does provide 5-10% gains, so it is better, but it doesn't double performance or anything like that. Do note that ACO is not used by default. It's just there, available to you as part of this release. Running games with the
RADV_PERFTEST=aco environment variable set enables it.
Mesa's relese-manager Dylan Baker had this to say in the 19.3.0 release announcement:
"Mesa 19.3.0 is now available for general consumption. We finally got all of the blocking issues resolved and 19.3 is available for 2020! This release is slightly late as the Clear Linux team reported that some EGL header changes broke building some packages. Those have been reverted for the final release.
I'll go ahead and mention that the normal release schedule would result in a release due out Christmas Day. I will not be making a release Christmas day. Nor will I be making one a week later on New Years Day. If there is interest I'll make another release next week on December 19th, and regardless will begin normal releases on January 8th, on a two week cadence until 20.0.1 is released.
I expect that 19.2.8 will be released next week (December 19th), and will be the last release in the 19.2 series."
The list of small last-minute fixes since last week's Mesa 19.3.0-rc6 release can be found in the announcement on the Mesa-announce mailing list in a message titled "mesa 19.3.0". The list of new features since Mesa 19.2 is as follows:
New features for Intel GPUs:
- OpenGL 4.6 on i965, iris.
- GL_ARB_gl_spirv on i965, iris.
- GL_ARB_spirv_extensions on i965, iris.
- GL_EXT_demote_to_helper_invocation on iris, i965.
- VK_KHR_vulkan_memory_model on Intel.
- VK_EXT_shader_subgroup_ballot on Intel.
- VK_EXT_shader_subgroup_vote on Intel.
- VK_INTEL_performance_query on Intel.
- Initial Intel gen12 (Tigerlake) support on anvil and iris
New features for AMD GPUs:
- New compiler backend "ACO" for RADV (RADV_PERFTEST=aco)
- VK_KHR_shader_clock on Intel, RADV.
- VK_KHR_shader_float_controls on Intel, RADV.
- VK_KHR_spirv_1_4 on Intel, RADV.
- VK_KHR_timeline_semaphore on RADV.
- VK_EXT_texel_buffer_alignment on RADV.
- VK_EXT_shader_demote_to_helper_invocation on RADV/ACO.
New features in other areas:
- Meson support for windows using MSVC and MinGW
- scons has been deprecated for non windows
- VK_ANDROID_external_memory_android_hardware_buffer on RADV.
The list of bug-fixes since 19.2 is much longer. There are a lot of them, specially Navi ("gfx10") related ones on the AMD side. The entire really long list is available in
docs/relnotes/19.3.0.html within the mesa-19.3.0.tar.xz tarball.
Mesa follows the even-numbers are stable, odd numbers are development releases system most of the free software community (but not Wine) uses. That makes Mesa 19.3.0 and subsequent 19.3.x versions development-releases not entirely meant for general consumption. Some distributions will opt to ship it anyway and enthusiast games may want to install it even if there is a small risk that some parts of it could be "unstable".