Collabora has been working on Panfrost open-source Arm Mali GPU driver for over a year. The drive aims to support both Midgard and Bifrost families. But so far, the company had mostly focused on Midgard (Mali-T6xx/T7xx) GPUs with for example experimental OpenGL ES 3.0 support announced last February.
Collabora engineers, such as Alyssa Rosenzweig, have now started to work on Bifrost support, and some good progress has been made since they managed to have Panfrost render the first 3D graphics with basic texture support using a platform with an Arm Mali-G31 GPU.
Alyssa notes that while Midgard and Bifrost have a similar command stream requiring a few changes, the Bifrost instruction set is completely different and required building a new compiler from scratch. This leads to changes to the Intermediate Representation (IR), 16-bit data support, a different register allocation mechanism due to adapt to irregular vector architectures, and the latter also made packing (final code generation) much more complicated than with Midgard Panfrost implementation. If you want to find out more about the nitty-gritty of Panfrost Bifrost implementation, read the announcement.
Now that’s good progress, but that does not mean we have a working driver just yet, and Collabora will now work on adding support for more complex instructions and scheduling to support more complex shaders. Note that GPUs are incredibly complex, and development will take time. In April 2019, Robert Foss, a graphics developer at Collabora, estimated that a stable, fully-compliant Panfrost GPU driver may take two to four more years to have the stability and features of Freedreno.