PowerVR Vulkan driver

frank.binns at imgtec.com frank.binns at imgtec.com
Fri Mar 4 15:22:55 UTC 2022

Hi All,

I'm excited to share that over the last year we've been working on a new
Vulkan driver, compiler and Linux kernel DRM driver for our PowerVR
GPUs. As it was important for us to do things "right", we got Collabora
involved early on in the project. They've been a big help and have
guided us with the approach and overall design of the driver.

I've sent an initial merge request for the Mesa parts of the driver


The corresponding MRs for the kernel driver and firmware haven't been
sent yet, as the kernel driver still has a few things that need
finalising. We're currently exploring the best approach for getting it
merged upstream while temporarily maintaining enough flexibility to make
changes to the uAPI (any guidance here is very welcome). In the meantime
you can find the kernel code here:


and the firmware here:


In addition to highlighting the MR, I also wanted to take the
opportunity to provide a bit more information and to introduce myself
and the rest of the team.

As mentioned in the MR, the driver will initially support three GPUs
based on our Rogue architecture. The first of these (GX6250) is one of
our earlier Rogue based GPUs, whereas the other two (AXE-1-16M and
BXS-4-64) are some of our most recently available GPUs.

For initial development we've been using an Acer Chromebook R13 as a
target device (this contains a Mediatek MT8173 SoC/GX6250 GPU). We also
hope to gain support for the TI AM62 SoC (AXE-1-16M GPU), which is in
the process of having support upstreamed [1].

To help speed up development, we've been making use of the existing open
source, but not upstream, kernel mode driver (pvrsrvkm) from our DDK. A
kernel with the pvrsrvkm sources in-tree can be found here:


The Vulkan driver has a thin abstraction layer (inspired by radv) to
allow it to make use of the pvrsrvkm driver and the new powervr kernel
driver (support for the former being hidden behind a build config

Unlike other driver efforts, we chose to start with a Vulkan driver as
we thought that this would be a more interesting proposition than a
native OpenGL ES driver. Obviously there's a lot of OpenGL ES content
out there, but in recent years there's been a lot of effort put into GL
to Vulkan translation layers. We therefore felt that a Vulkan driver
together with Zink/ANGLE would be a good way to support multiple APIs
from the get go.

I know a lot of effort has been put into Mesa CI over the last few
years, so we'll be looking to add support for our driver once it's
upstream. The aim is to start looking at what's required in the next
week or two in preparation for this (again, any guidance here is very

The final thing to do is to introduce myself and the rest of the
team. I've been following and working with a number of the graphics
related projects (Mesa, the DRM subsystem, Wayland/Weston, X.Org) for
many years now. In this time I've made a few minor contributions here
and there, but nothing major. I'm super excited to be leading our open
source driver effort and I'm really looking forward to getting more

In addition to myself, the team consists of Rajnesh & Karmjit, who are
the main contributors to the Vulkan driver, Simon, who has been working
on the compiler, and Sarah & Matt, who are the main contributors to the
kernel driver.

The rest of the team are new to Mesa and DRM, but eager to learn and
become an active part of the community. With this in mind, you'll be
able to reach us via the standard channels (#dri-devel irc and the
mesa-dev and dri-devel mailing lists).

We look forward to getting involved and hearing any feedback!


[1] https://lore.kernel.org/linux-arm-kernel/20220225120239.1303821-1-vigneshr@ti.com/

More information about the mesa-dev mailing list