We're hiring!
*

Mesa 25.0: PanVK moves towards production quality

Erik Faye-Lund avatar

Erik Faye-Lund
February 04, 2025

Share this post:

Reading time:

The first release candidate of Mesa 25.0 has recently shipped, so this seems like a good time to cover the updates we have spent the last few months on for the Panfrost project.

Most of the effort has gone into PanVK, which is starting to move from an experimental status to production quality.

PanVK 1.1 support

First, and most importantly: We're now exposing Vulkan 1.1 unconditionally on V10 GPUs. This specifically covers the Mali-G610 and the Mali-G310 GPUs.

There are two different ways this is new. Previously, we only exposed Vulkan 1.0.

But more importantly, in earlier releases we didn't expose the driver at all unless a special environment was set. This was to avoid accidentally breaking end-user systems, where falling back to Lavapipe or something else would be a better choice. This is no longer the case for V10 GPUs. We now believe enumerating PanVK by default is the best choice.

It's important to point out that PanVK is not yet formally conformant to any version of the Vulkan specification. We are working on this bit, but we are not yet there. Exposing Vulkan 1.1 rather than Vulkan 1.0 does not change this.

We're also building PanVK by default on ARM systems now.

Other new PanVK features

New extensions:

We have enabled a lot of new extensions, including:

One thing worth noting is that we dropped support for VK_EXT_vertex_attribute_divisor in favor of the KHR version listed above. This is because the hardware doesn't fully support that version of the extension properly due to lacking the VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance feature.

New Vulkan 1.0 features

We also added support for a bunch of optional Vulkan 1.0 features that were previously unsupported. Here's the list of those:

Gallium / OpenGL improvements

Transaction elimination

Panfrost now uses the "transaction elimination" feature by default, reducing memory bandwidth by skipping write-out for tiles which have not changed since the previous render. This can be disabled by the PAN_MESA_DEBUG=nocrc debug option. If this changes the rendered result, please file a bug in the issue tracker!

Incremental rendering

We also added support for "incremental rendering" on v10 HW. This allows us to render very high triangle counts without running out of memory and failing, by writing the tile-buffers out to memory, flushing the tile-lists and starting over.

AFBC 32x8 mode

Some display controllers support reading AFBC compressed data using a 32x8 "wide" tile mode. This yields better performance than using the traditional 16x16 mode for scan-out due to better cache reuse.

Panfrost now supports this mode and will now prefer this over the 16x16 mode for scan-out buffers (when supported).

Maximum texture size

The maximum texture width/height has been increased from 8192 to 32768. At the same time, we now limit the maximum total memory usage to be a quarter of the total system memory. This should allow running modern content while keeping memory usage a bit under control on systems with very little memory.

MM21 de-tiling

We've added support for texturing using MediaTek's MTK_FMT_MOD_TILE_16L32S tiling mode, where Panfrost will copy the tiled data into a temporary (non-tiled) resource, before using it for rendering. This allows rendering with the output from the HW video decoder on certain MediaTek SoCs.

Thanks

Apart from all of the above, there have also been countless optimizations and bugs fixed, too many to mention here.

All of those new features are the result of teamwork between many people. The complete list of people who contributed new features to Panfrost in Mesa 25.0 are:

Thanks a lot to everyone for their help making Mesa 25.0 a very exciting release from a Panfrost point of view!

 

Comments (0)


Add a Comment






Allowed tags: <b><i><br>Add a new comment:


 

Search the newsroom

Latest News & Events

Mesa 25.0: PanVK moves towards production quality

04/02/2025

The first release candidate of Mesa 25.0 has recently shipped, bringing with it multiple updates to Panfrost, and most notably to PanVK,…

Welcoming the libsurvive project

29/01/2025

Collabora's involvement in Open Source XR development continues to grow today as we welcome the libsurvive project, the open source lighthouse…

Kernel 6.13: A flawless end of the year

28/01/2025

The latest Linux kernel release is here, bringing improvements to the DRM subsystem, further enablement of Rockchip SoCs, a new debugging…

Open Since 2005 logo

Our website only uses a strictly necessary session cookie provided by our CMS system. To find out more please follow this link.

Collabora Limited © 2005-2025. All rights reserved. Privacy Notice. Sitemap.