Panfrost is the open-source driver being developed for Arm Midgard and Bitfrost GPUs. The first versions focused on support for OpenGL ES 2.0, but the more recent OpenGL ES 3.0 enables faster and more realistic rendering.
The goods news is that Panfrost support for experimental OpenGL ES 3.0 has landed in Mesa according to a recent post on Collabora blog.
Specifically, Panfrost now supports instanced rendering, primitive restart, uniform buffer objects, 3D textures, and multiple render targets (on Mali T760 and up) all of which are OpenGL ES 3.0 features.
People who are not into graphics development may not know about the purpose of those features, but Alyssa Rosenzweig, a free software graphics hacker leading Panfrost, explains:
… instanced rendering and primitive restart allow developers to write faster graphics applications, to render efficiently scenes more complex than possible in ES 2.0.
… uniform buffer objects and 3D texture give developers a more natural environment to write efficient graphics shaders, again allowing for more complex fast applications.
… multiple render target enable a range of modern rendering techniques like deferred shading.
One consequence of the changes is that SuperTuxKart racing game now works with OpenGL ES 3.0 rendering using an open-source Arm GPU driver in Linux.
While support is said to be preliminary, Panfrost already passes 95% of OpenGL ES 3.0 tests in drawElements Quality Program (dEQP) test suite while running on Arm Mali-T860 GPU.
Panfrost’s OpenGL ES 3.0 support can be found in upstream Mesa and works with a mainline Linux kernel. Make sure to set PAN_MESA_DEBUG=gles3 in your environment before trying it with OpenGL ES 3.0 applications and games.