Daniel Stone
July 20, 2023
Reading time:
Collabora's raison d'être has always been simple: accelerate the adoption of Open Source technologies, methodologies & philosophy. This was our founding principle when the company was formed by the founders of the Telepathy and Farstream projects to enable open-source cross-vendor instant messaging, and the company fit around a cafe table. 18 years down the road, with Collabora having grown from three people to three digits, we continue to apply the same principle through our ongoing work across the ecosystem on the Linux kernel, U-Boot, Wayland, Mesa, GStreamer, PipeWire, Monado, WebKit, D-Bus, and more: relentlessly shifting the needle to make high-quality open-source software not just an aspiration, but an expectation.
Today we're pleased to announce an extension of our collaboration with Arm, providing more surety and capability for Panfrost. But apart from making Panfrost better, faster, and stronger, what does it mean? And apart from being a mainline open-source solution to support graphics acceleration on Arm's Mali GPU family, what is Panfrost? Read on for more. (Or, if you're impatient, the answer is that Arm's ongoing long-term support for our work on Panfrost means that you'll have conformant and performant out-of-the-box open-source support for any system you buy with an Arm Mali SoC. Your choice.)
When I started at Collabora 15 years ago, I was working on X11, bringing as much capability to it as we could to match the demands of 'modern' systems. We pretty quickly realised we'd hit a wall: it wasn't possible to ship an X11-based system without paying for custom development to make it acceptably fast. As a consultancy, the repeated revenue was good, in a way. For the ecosystem though, it was terrible. Requiring that people paid a consultancy to have a viable display system was an indication that something was badly broken. This is why we jumped on the nascent Wayland project, with some work paid but much unfunded. We wanted to raise the bar and bootstrap the ecosystem, so that everyone could expect a high-quality display system out of the box, for free, and focus on solving more interesting problems.
Panfrost has been on a similar journey. Back in 2017, Alyssa Rosenzweig bootstrapped the chai repository as a summer project to reverse-engineer the Midgard generation of Arm Mali GPUs. Through 2018, her work started to develop into a fully-fledged Mesa driver to support OpenGL ES, together with a kernel driver originally written by Marty Plummer. We sensed a great moment to help, and stuck our shoulder to the wheel: on the stroke of 2019, Tomeu Vizoso started to flesh the kernel driver out into the full-blown Panfrost DRM driver that still lives in the upstream kernel today, soon joined by Boris Brezillon and others. In the summer of 2019, Alyssa joined Collabora, as we decided to fully sponsor the project and push it forward as much as possible. This work bore great fruit, as through the year Panfrost was able to bring up GNOME for the first time, with many conformance and performance improvements.
There's not a lot to be said for the year 2020, however this was the year when Arm first threw its support behind Panfrost as a project, providing us with the support we needed to bring Bifrost to production quality. This was not only a novel and difficult architecture to develop for, but introducing the second architecture resulted in a great number of internal driver cleanups and reorganisations which set us on a much better path for the future.
Throughout the past three years, we have been heads-down working away on Panfrost and growing our team. We now support three full architectural generations in Midgard, Bifrost, and Valhall, in our upstream drivers. These drivers are shipped by default in various distributions and builds, and ... it just works. We've gone from being able to identify our users by name, to knowing which groups of people used Panfrost, to it being so widespread that the group is 'everyone'. Even though it's not forging thrilling new ground, a lot of excellent engineering work has gone into making Panfrost so usable as to be unremarkable.
Our approach is the same here as it is everywhere. AngeloGioacchino's work on upstream kernel support for MediaTek devices, and the work done by many Collaborans to upstream support for Rockchip's RK3588 SoC, will have the same outcome: your device just works with a mainline kernel. The work done by our KernelCI team means that we won't fall back on that support. The work done by our Mesa CI team to first introduce hardware testing, and now run conformance, real-world trace, and performance, workloads as part of pre-merge Mesa CI means that it won't regress either. And this is all underpinned by our cast of LAVA developers as well as the team who manage our test lab of hundreds of machines in Cambridge.
All this work behind the scenes is why you don't always hear so much from us, because we're working in the background to make sure that you don't need to think about every single piece of the puzzle. You know it just works, and you can go on to solving the problem you actually wanted to solve in the first place.
We're thrilled to not only have Arm's continued support, but increased long-term backing. Arm's aims are the same as ours: to ensure that Mali GPUs will continue to work well upstream, and to continue closing the gap so that this support is available earlier, works better, and is faster. A closer collaboration between our two teams means that we can achieve these goals much more efficiently than we could previously. This backing allows us and you - the community as well as the reader - to confidently plan for long-term support of Mali GPUs upstream.
Some of the quiet background work has involved a lot of preparation for the 10th-generation Mali cores, aka third-generation Valhall. This generation introduces a new command stream frontend for job scheduling and synchronisation. Whilst it offers a lot of exciting new capabilities, we have needed to do a huge amount of work under the hood to make this happen and support these Valhall (and beyond) GPUs. The Panfrost team have been busily working on this for a long time now, and it is finally coming to fruition, with a solid and credible driver approaching upstream readiness.
One of the things enabled by the new architecture, and Arm's closer backing, is a Vulkan driver for these cores. Being natively architected for Vulkan, these modern GPUs make it far easier to support Vulkan for modern, high-performance, workloads. Our team has begun work on a Vulkan driver aimed at this new architecture, so we can provide high-quality Vulkan support alongside our existing proven OpenGL and OpenGL ES support, as well as our more experimental support for OpenCL.
Looking to the future, we're also excited by some of the capability this new hardware and driver architecture enables, such as direct command submission from userspace to support low-latency, high-performance, workloads. It will be a lot of work there, but the building blocks we're putting in place today are opening up these possibilities for the future.
Although Collabora has long been committed to Panfrost and contributed the vast majority of its work, we are indebted to everyone around us for making it possible.
First, to the initial community of Alyssa, Marty, Connor Abbott, Lyude Paul, Ryan Houdek, and others, for tilting at an impossible windmill with their incredible initial reverse-engineering work. Secondly, to the wider community that has since sprung up around Panfrost, providing not only improvements, fixes, and testing, but also their evangelism to ensure everyone knew about this high-quality open-source driver. Thirdly, to the wider ecosystem including projects like Kodi and LibreELEC in particular, for not only giving us sharp focus and goals, but also pushing it to their users. Further, we are standing on the shoulders of giants: without the incredible work that went into Mesa and the DRI/DRM ecosystem dating back to the late 90s, continuing all the way to Gallium3D, NIR, and the modern kernel DRM subsystem.
Without all this work from a cast of thousands, it would not be possible for Panfrost to be more than a proof of concept - much less a high-quality reliable solution now with the generous backing and support of Arm themselves.
15/11/2024
The Linux Foundation Member Summit is an opportune time to gather on the state of open source. Our talk will address the concerns and challenges…
14/11/2024
Today, we are delighted to announce a growing collaboration with MediaTek which will enable Collabora to introduce, improve, and maintain…
06/11/2024
Join us at electronica 2024! In partnership with Renesas, Collabora will be showcasing GStreamer open source AI video analytics on the Renesas…
Comments (4)
Razze:
Jul 22, 2023 at 01:31 PM
Seems like that kernelci.org link doesn't like to be used with www in front. At least Firefox doesn't trust it, but it's fine without the www
Reply to this comment
Reply to this comment
ALfred:
Jul 26, 2023 at 06:33 PM
Great so this means we will have MESA support with ARM Mali G610 present in RK3588?
Reply to this comment
Reply to this comment
PojavLauncher Player shadyfy:
Apr 23, 2024 at 11:40 PM
This Panforst-driver is too strong. I hope it will develop and flourish in the future! As an ordinary user who uses MediaTek-D8100 processor, there are some questions I want to know:
1、Does this mean that the Redmi-k50 mobile-phone with Mali-G610 will also have Panforst to replace the The ARM-Official R32P1 of the Non-Updatable ancient driver?
2、For this New-Panforst driver with high efficiency to be released soon, As a mobile phone player of MediaTek D8100 processor, when can you experience the high efficiency performance of the driver on a real machine? On the Baidu-Tieba platform in China, some geeks have posted that this driver will support OpenGL 4.6 natively, is this possible?Will this Panforst-Driver support the more comprehensive Vulkan 1.3 when it is released, or will it continue to support only Vulkan 1.2?
Panforst很强,望蒸蒸日上。作为普通用户,想了解:
1、这是不是意味着手头中马丽G610的红米k50也将有Panforst替代32.1版本的官方远古驱动?
2、对于这样高效率的新Panforst驱动,用户大概能在什么时候可以在实机体验到?一些贴吧老哥发帖说该驱动会原生支持OpenGL4.6,这有可能实现吗?该驱动会不会支持特性较全面的Vulkan1.3版本,还是继续支持Vulkan1.2?
Reply to this comment
Reply to this comment
Niklaus 'vimja' Hofer:
Nov 06, 2024 at 10:45 AM
Hi
I am using Panfrost on my rk3588 powered MNT Reform. In doing so, I have noticed that the driver has support for OpenGL 3.1, but not 3.2 or 3.3. According to mesamatrix.net, there is only one single OPenGL extension (feature?) required to get the driver to support OpenGL 3.3, Geometry shaders.
However, according to the Mesa bug tracker [1], this cannot easily be implemented, because the underlying hardware is lacking the necessary feature, so it would have to be emulated by the driver.
Now, I was wondering if it would be possible to sponsor fork on this feature? How much would Collabora need to implement Geometry shaders on Panfrost and raise OpenGL support to 3.3? I don't need an exact number, just a ball park...
Or is this the entirely wrong approach? I've seen that you have been working on a Vulkan driver, panvk, too. Is panvk + Zink the way to go? Seems like it is pretty far off still with panvk being in an early stage...
Links:
[1] https://gitlab.freedesktop.org/mesa/mesa/-/issues/9840
Reply to this comment
Reply to this comment
Add a Comment