Features You Will Not Find In The Mesa 13.0 Release

Written by Michael Larabel in Mesa on 22 October 2016 at 09:20 AM EDT. 16 Comments
While Mesa 13.0 is coming along for release next month with exciting features like OpenGL 4.5 for Intel, unofficial GL 4.4/4.5 for RadeonSI/NVC0, and the addition of the RADV Radeon Vulkan driver, there is some functionality that sadly won't be found in this release.

Below are some features/functionality not currently found in Mesa 13.0. Some of the mentioned items have patches floating on the mailing list that weren't merged in time while other items are more along the lines of pipe-dreams that would have been fun to see in Mesa for 2016.

These items aren't meant to criticize Mesa development but rather show there is still much work to be done in the open-source graphics space so while the drivers may be hitting OpenGL 4.5, there is still a lot left and to make these drivers more competitive with Windows/proprietary drivers. Plus if you are looking to improve the situation, Mesa could always use more assistance from independent developers with an array of contributions. Even if you aren't a developer, you can help Mesa development by testing the latest code and reporting bugs.

OpenGL 4.0/4.1 For Haswell - While there have been FP64 patches floating around for months to support Intel Haswell hardware with GL4 so it can advance beyond GL 3.3, they were not merged for Mesa 13.0. It's a big set of patches but once this ARB_gpu_shader_fp64 support for Haswell lands, these older Intel graphics processors will be able to expose OpenGL 4.1 compliance.

Nouveau Vulkan - Intel has a Vulkan driver since Mesa 12.0 and Mesa 13.0 adds the RADV community-based (unofficial) Radeon Vulkan Linux driver. Unfortunately, there is no NVIDIA Vulkan open-source driver, which would have to come through the Nouveau camp. Nouveau developers said at XDC2016 to not expect a Nouveau Vulkan driver anytime soon considering their resources are stretched as is and there are more important Nouveau tasks to work on. Thus for the foreseeable future NVIDIA GPU owners will be left to the NVIDIA proprietary driver for Vulkan support.

Official OpenGL 4.5 Support For RadeonSI / NVC0 - While the Nouveau NVC0 and RadeonSI drivers expose all needed extensions for OpenGL 4.4 and 4.5, they only still advertise "OpenGL 4.3" via their version string. This is due to passing the conformance tests set out by Khronos with GL 4.4/4.5. There is a path to conformance for open-source drivers with Khronos, but Nouveau hasn't yet tackled it (some of their developers have also expressed concern over Nouveau having no formal organizational structure for pursuing official compliance) while an AMD developer clarified about RadeonSI conformance, "'Some bugs' is actually still a relatively big number for radeonsi (and nouveau is probably worse, since some of its most prolific contributors can't even test against the CTS). We're making good progress on radeonsi, but there's no guarantee that it'll happen before the final 13.0 release, and I don't want us to rush things. Don't worry, you'll have OpenGL 4.5 on Mesa master soon enough, and you can always set an environment variable override."

OpenGL Multi-Threading - Some modern games require proper multi-threading in the OpenGL driver for good performance, such as Witcher 2. Unfortunately there hasn't been too much work on better multi-threading of Mesa/Gallium3D drivers. The only work that comes to mind was some earlier work done by Intel but nothing too fancy and haven't seen any work in the Gallium3D space.

Vulkan Drivers Faster Than The OpenGL Drivers - The RADV Vulkan driver is slower than RadeonSI OpenGL, which isn't too much of a surprise given its limited development resources and not being in development as long as other Vulkan drivers. However, the Intel ANV Vulkan driver is slower than the GL driver (that's also the case for Haswell on GL / Vulkan). It looks like the Intel Vulkan driver just needs more time to mature too. It's not just the game/renderer to blame as the proprietary NVIDIA/AMD stacks have shown Vulkan can be faster than OpenGL with the same games while having less CPU overhead.

On-Disk Shader Cache - There's been patches for an on-disk GLSL shader cache to speed up game loading times going back many months. The work has been centered around the Intel i965 driver and unfortunately this shader cache hasn't yet landed in Mesa Git. We also haven't seen any public shader cache work for RadeonSI or NVC0 yet. Some prep work landed in Mesa in September for the shader cache, but unfortunately it's not all buttoned up yet. The shader cache will be a big win for game loading times on supported Mesa drivers.

AZDO / Driver Overhead - More work is still needed for making Mesa drivers support "Approaching Zero Driver Overhead" techniques. Some extensions are supported but other extensions like ARB_indirect_parameters, ARB_bindless_texture, ARB_sparse_texture, and many other extensions are not yet supported by Mesa or only by a subset of the drivers.

OpenGL 2015 / 2016 Extensions - Related to the previous AZDO comment, there still are a ton of ARB/EXT extensions post-4.5 OpenGL that have yet to be implemented by Mesa drivers. You can see all of the red via the bottom of MesaMatrix.net. Not all of the extensions are necessarily useful but a good number of them are important. There are also a number of OpenGL ES 3.1/3.2 extensions yet to be completed by the Radeon or Nouveau drivers.

LLVMpipe OpenGL 4 - While LLVMpipe is about the best open-source OpenGL software rasterizer implementation, it's still living in a OpenGL 3.3 world. There's been barely any work on implementing OpenGL 4.x extensions along the software code-paths for LLVMpipe. Then again, LLVMpipe is mostly used just as software fallbacks on composited desktops and debugging by developers as a vendor-neutral driver code-path to test against.

GLSL Memory Allocation Rework / Faster Compilation - Marek has recently been working on using Jemalloc in Mesa and improving the GLSL compiler performance. Unfortunately this work didn't land for Mesa 13.0 but Marek did mention on the mailing list he is looking at merging some of his GLSL compiler improvement patches into Git this weekend.

If you want to help Mesa developers and get started in open-source driver development, see some past resources about getting started with Mesa and different easy projects to gain experience.

If you could have all of your Mesa dreams answered - realistic or not - what would they be? What do you like best about Mesa 13? Which of these items do you hope will be reasonably scratched off for the next Mesa release? Share your thoughts this weekend with us by commenting in the forums.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week