Getting GPU drivers to work on Linux with Arm SoCs was really a struggle a few years ago due to close-sources binary blobs that required all bugs to be fixed by a single team. But in recent years we’ve seen good progress with open source mobile GPU drivers including Freedreno for Adreno GPUs, and Etnaviv for Vivante GPUs.
Arm Mali also got its own open source Lima driver worked on for many years but only for older Utgard GPUs (Mali 400, Mali 450). However, during the Opensource GPU Drivers BoF at Linaro Connect Bangkok 2019, Rob Herring, Technical Architect at Linaro and Tomeu Vizoso, Principal Software Engineer at Collabora, discuss the status of drivers, and I learned about an open source driver for Mali Midgard (Mali-T6xx, Mali-T7xx) GPU called Panfrost.
As we’ll see below, the driver is already capable of running basic demos, has been upstreamed to Mesa, and tested on Rockchip RK3288 / R3399, and Amlogic S912 with respectively Arm Mali-T764, Arm Mali-T864, and Arm Mali-T820MP3 GPU.
There’s still a lot more work to do, and some of the tasks to complete include merge into mainline, GNOME Shell, browsers and WebGL support, MMU improvements, OpenCL and Vulkan APIs support, as well as dEQP and CTS compliance. They’ll also work on Bitfrost (Mali-Gxx GPUs).
Charbax met with Collabora at Embedded World 2019 earlier this year, and just recently uploaded the video showing Panfrost demo on RockPi 4 board and other platforms.
Depending on what you plan to achieve with the graphics driver, you may have to be patient, or help improve the drivers, as Robert Foss, graphics developer at Collabora, estimates that a fully-compliant GPU driver with stability and features similar to Freedreno may take 2 to 4 more years.