Posted on 13/03/2019 by Robert Foss
During the past few months significant progress has been made on the Open Source Arm Mali GPU driver front, culminating in the Panfrost driver targeting Mali T and G-series of GPUs being available now.
The process of reverse engineering Arm GPUs has been going on for a long time, starting with Luc Verhaegens work on the low-end Mali 2/3/400 series of GPUs based on the Arm Utgard family of GPUs.
This driver has recently seen a lot new attention and is itself progressing quickly, which means it will be soon accepted in the kernel. A piece of trivia is that this GPU architecture was what Arm received when they purchased the Norwegian GPU IP vendor Falanx Microsystems.
The Mali T and G-series of GPUs are based on the Midgard and Bifrost architectures respectively, both of which are quite different from the 2/3/400 series. However the T and G-series are somewhat similar at least when it comes to the way a driver can be built for them. This is why the Panfrost driver is aiming to support both architectures with one driver.
At Embedded World 2019 Collabora demoed the Panfrost driver running kmscube (video below, on the right). The singleboard computer used was a Radxa Rock Pi 4, which was generously sent to us by Tom Cubie.
Panfrost currently runs simple 3D applications like kmscube, the Wayland based Weston desktop and even more complex 3D benchmarks like glmark2.
This is still a new driver and it is in heavy development currently.
There are two semi-parallel parts under development currently; the new kernel driver and the Mesa userspace driver.
The new kernel driver is intended to replace the Open Source driver that Arm provides for its Mali GPUs (mali_kbase). Up until recently the Mesa Panfrost has been used with a shim between the Arm kernel driver and the userspace driver. While the Arm kernel driver exists, it cannot accepted into the upstream Linux kernel project for multiple reasons, but most importantly it doesn't expose the DRM API that userspace expects of modern GPU drivers in the kernel.
As for the Panfrost Mesa driver, this driver is under heavy development and is seeing fixes, improvements to the compiler and new features added at a rapid pace. This driver is being built on top of the common Gallium driver framework in Mesa, which means that it will be relatively easy to move features from other drivers to the Panfrost driver.
Additionally the Panfrost driver uses the NIR intermediate representation (IR) for its compiler, which is the most common and most modern IR that Mesa implements. This again means that new and upcoming features like OpenCL for example, will be portable from the other Gallium/NIR drivers to Panfrost.
I would also like to thank Tom Cubie for sending out Rock Pi 4 boards to not just me, but the wider Panfrost development community.
Visit Robert's blog.
In this tutorial, we'll look at how to create a functional and simple Arch Linux virtual machine image, that can have network access, display…
During the past few months significant progress has been made on the Open Source Arm Mali GPU driver front, culminating in the Panfrost…
With just a few simple steps, you can compile and boot a Raspberry Pi using the Linux kernel mainline source code. Here's how.
Since the last Debian release, a number of changes have been made in the Debian Cloud Team, both on the technical & organisational level…
Following two months of work to develop a new kernel driver for Midgard and Bifrost GPUs, the kernel side of Panfrost is now in a form close…
A look at how to implement USB gadget devices on Linux machines which have the necessary UDC hardware, automate the manual configfs process…