What the new PowerVR driver means for mobile
Much to the suprise of many people, Imagination created a merge request for an open source PowerVR vulkan driver to Mesa.
The PowerVR GPUs are in quite a lot of mobile devices. It's one of the larger GPU vendor for ARM hardware and even some x86 platforms. These GPUs have been long renowned for being a problem on Linux. From the PowerVR smartphones to the early Intel Atom CPUs.
For the other GPUs like ARM Mali, Qualcomm Adreno and Vivante, there are already well established open source drivers which is why the current Linux phones have selected hardware that use these GPUs like the Mali GPU in the PinePhone and the Vivante GPU in the Librem 5.
The lack of open drivers for PowerVR has been a huge problem for Linux phone projects dating back to the Nokia N900. The hardware for the N900 is pretty outdated for today's standards, but its GPU can still provide a smooth user experience. There are some projects to use the closed, user space PowerVR driver from Imagination on this hardware, with some shims which give distributions like Maemo Leste GPU acceleration on PowerVR phones, but this is not an ideal situation.
But on March 4, 2022 something happened...
The PowerVR Vulkan driver
There have been signs that Imagination Technologies had been working on an open source driver for PowerVR for quite some time. For instance, there have been job listings all the way back to 2015 for developers working on "an open-source driver". Nothing seemed to have come from it. Until now.
A merge request has been made to Mesa, the open source graphics stack used in Linux, for a new PowerVR Vulkan driver. This driver has been developed for Imagination Technologies, and this initial version supports a limited set of hardware.
The supported GPUs for this new driver are:
- GX6250 (Series 6XT), used in numerous Chromebooks and tablets
- AXE-1-16M (A-Series)
- BXS-4-64 (B-Series)
The A- and B-series GPUs seem to be too new to be in any products yet. The GX6250 is quite popular on Chromebooks and some Android tablets, and it is used by the Mediatek MT8173 and MT8176 SoCs. Since the MT8173 also has quite good mainline Linux support, an Acer Chromebook R13 has been used for the Mesa driver development.
The nice thing about a Vulkan driver is that, in combination with something like Mesa Zink, it is possible to have OpenGL support through this driver, without the driver having to implement a GL API itself.
The other GPUs
The oldest supported GPU by the new driver is the GX6250, which is great news due to the Chromebook hardware coverage, but a lot of the interesting hardware for mobile Linux uses older GPUs.
For example, the N900 has a SGX530, and the Motorola Droid 4 has the SGX540. Both are phones with a lot of Linux potential due to Linux supporting this hardware, and because they have full slide-out QWERTY keyboards. However, these 5th-generation PowerVR GPUs are not covered by the new drivers.
Anyway, having the initial PowerVR driver is a great start for getting the open source ecosystem for PowerVR graphics rolling. Time will tell if the 5th generation PowerVR hardware is close enough to the current supported chips. It seems like the 6th generation of PowerVR is the first generation to have Vulkan support in the hardware, so the implementation would likely be quite different for the older chips, as they would need an OpenGL driver rather than Vulkan.