We're hiring!
*

Experimental Panfrost GLES 3.0 support has landed in Mesa

Alyssa Rosenzweig avatar

Alyssa Rosenzweig
February 27, 2020

Share this post:

Reading time:

In the early days of Panfrost, the free and open-source graphics driver for Mali GPUs, we focused on OpenGL ES 2.0. Many applications and games work have basic support for ES 2.0 but for advanced rendering require the newer, more featureful OpenGL ES 3.0... for which Panfrost now has initial support!

ES 3.0 adds dozens of new features to ES 2.0 to enable faster and more realistic rendering. To support it, we've added features to Panfrost like instanced rendering, primitive restart, uniform buffer objects, 3D textures, and multiple render targets (on Mali T760 and up). Features like instanced rendering and primitive restart allow developers to write faster graphics applications, to render efficiently scenes more complex than possible in ES 2.0. Features like uniform buffer objects and 3D texture give developers a more natural environment to write efficient graphics shaders, again allowing for more complex fast applications. Finally, features like multiple render target enable a range of modern rendering techniques like deferred shading.

By adding these features and more to Panfrost, games like SuperTuxKart now work with their preferred modern renderers, for instance using instancing for particle systems and new texturing operations to add shadows. SuperTuxKart's ES 3.0 non-deferred renderer now works with Panfrost, so grab the latest code and give it a play!

To ensure OpenGL ES 3.0 continues working smoothly with Panfrost and only improves over time, we've added ES 3.0 to Panfrost's continuous integration infrastructure. Every change to upstream Mesa is verified against the drawElements Quality Program (dEQP) test suite on Panfrost hardware, now including ES 3.0 testing on Mali T860 in our continuous integration lab. Panfrost currently passes 95% of dEQP's ES 3.0 tests, and with continuous integration in place, this number can only grow.

Panfrost's ES 3.0 support has landed in upstream Mesa and works with a mainline Linux kernel. While the code is still experimental, it can be accessed compiling the latest Mesa and setting the environment variable PAN_MESA_DEBUG=gles3. The support is still early, but if you're feeling adventurous, feel free to give it a try on your favourite ES 3.0 applications and games. You might be pleasantly surprised!

SuperTuxKart running with Open GL ES 3.0 on Panfrost

 

Comments (6)

  1. QwertyChouskie:
    Feb 27, 2020 at 10:03 PM

    Looking great! I wonder, does it still work if you enable STK's Advanced Pipeline? Also, do things still work if the visuals are cranked to max? It'll probably run slow, but would be cool to see if everything renders without glitches.

    Reply to this comment

    Reply to this comment

    1. Alyssa Rosenzweig:
      Feb 28, 2020 at 03:29 PM

      Thank you for asking! STK's advanced pipeline is their deferred rendering engine, which does not yet work due to incomplete support for packed float (R11G11B10) render targets. Support for this is planned, and there is some unmerged experimental code which does enable the deferred rendering to work with some caveats. Stay tuned

      Reply to this comment

      Reply to this comment

  2. Shugyousha:
    Feb 28, 2020 at 07:52 AM

    Awesome work!

    If I had more time I would really like to dig deeper into how one goes about implementing a (relatively) low-level graphics API like OpenGL ES 3.0 for a mainline driver.

    Reply to this comment

    Reply to this comment

  3. aaditya:
    Feb 28, 2020 at 06:03 PM

    Pleasantly surprised, indeed!

    Tested Supertuxkart 1.1. Levels that were playable earlier are much smoother (b/w 30-40 fps), and heavier levels have become playable (20-30 fps).

    Thanks! :-)

    Reply to this comment

    Reply to this comment

  4. jock:
    Feb 29, 2020 at 01:37 PM

    Congratulations and thanks a lot for all the love you are pouring into panfrost project!

    Reply to this comment

    Reply to this comment


Add a Comment






Allowed tags: <b><i><br>Add a new comment:


Search the newsroom

Latest Blog Posts

Automatic regression handling and reporting for the Linux Kernel

14/03/2024

In continuation with our series about Kernel Integration we'll go into more detail about how regression detection, processing, and tracking…

Almost a fully open-source boot chain for Rockchip's RK3588!

21/02/2024

Now included in our Debian images & available via our GitLab, you can build a complete, working BL31 (Boot Loader stage 3.1), and replace…

What's the latest with WirePlumber?

19/02/2024

Back in 2022, after a series of issues were found in its design, I made the call to rework some of WirePlumber's fundamentals in order to…

DRM-CI: A GitLab-CI pipeline for Linux kernel testing

08/02/2024

Continuing our Kernel Integration series, we're excited to introduce DRM-CI, a groundbreaking solution that enables developers to test their…

Persian Rug, Part 4 - The limitations of proxies

23/01/2024

This is the fourth and final part in a series on persian-rug, a Rust crate for interconnected objects. We've touched on the two big limitations:…

How to share code between Vulkan and Gallium

16/01/2024

One of the key high-level challenges of building Mesa drivers these days is figuring out how to best share code between a Vulkan driver…

Open Since 2005 logo

We use cookies on this website to ensure that you get the best experience. By continuing to use this website you are consenting to the use of these cookies. To find out more please follow this link.

Collabora Ltd © 2005-2024. All rights reserved. Privacy Notice. Sitemap.