在两年前,我们介绍了如何移植ARM Mali GPU的开源驱动到NanoPC-T4开发板,具体可以参考《Rockchip RK3399 - Mali-T860 GPU驱动(mesa+Panfrost)》。

今天呢,我们就来谈一谈如何将ARM Mali GPU开源驱动到ArmSoM-Sige7开发板。

一、GPU驱动回顾

我们在《Rockchip RK3399 - Mali-T860 GPU驱动(mesa+Panfrost)》中介绍了ARM Mali GPU开源驱动的由来,其重要包含两部分:

  • 内核层GPU驱动:
    • Lima驱动支持Utgard Mali GPUMali-400 / Mali-450 GPU(Linux 5.2+);
    • Panfrost驱动支持MidgardBifrostValhall Mali GPUMali-Gxx GPUMali-T6xx / Mali-T7xx / Mali-T8xx GPU(Linux 5.2+);
    • Panthor驱动为新一代的开源驱动,专门为未来基于ARM最新GPU架构(如Valhall和后续架构)的Mali GPU 而设计(Linux 6.10+);
  • 用户层动态库:Usersacpe部分的开源库叫做mesa,对Mali GPU的支持从mesa 19.2开始。
1.1 Panfrost

Panfrost是一个开源的自由及开放源代码软件(FOSS)图形驱动项目,旨在为ARM Mali系列GPU提供在Linux系统上的支持。它包含在Mesa 3D图形库中,是 Linux开源图形栈的核心组成部分。

Panfrost最初是通过对ARM Mali GPU的硬件行为和官方闭源驱动进行逆向工程而开发的。这是一个由社区推动的巨大成就。它支持多代Mali GPU架构:、

  • Midgard(例如Mali-T760, T860);
  • Bifrost(例如Mali-G31, G52);
  • Valhall(例如Mali-G57,G310):注意:对Valhall的早期支持是在Panfrost内开始的,但现在发展的重点已经转移到了Panthor上。

作为Mesa的一部分,Panfrost已经进入了几乎所有主要的Linux发行版。

Panfrost驱动程序栈包括基于MidgardBifrostValhalla 微架构的ARM Mali GPUOpenGL ES实现,目前支持以下硬件:

GPU Architecture Found in SoC Mesa version Notes
T600 Midgard (v4) Exynos 5250 24.1+
T620 Midgard (v4) Exynos 5420/5422/5430/5800 22.3+
T720 Midgard (v4) Exynos 7580, MT6735, and MT6753 20.0+
T760 Midgard (v5) RK3288 19.3+
T820 Midgard (v5) S912 19.3+
T830 Midgard (v5) Kirin 65x 22.0+
T860 Midgard (v5) RK3399 19.3+
T880 Midgard (v5) Kirin 95x and MediaTek Helio X20/X27 22.0+
G31 Bifrost (v7) Amlogic S905, RK3326 and Allwinner H616 SoC 20.3 kernel 5.10+
G51 Bifrost (v7) Kirin 710 22.0
G52 Bifrost (v7) Amlogic S922, RK3530, Kirin 810 and Helio P65/G70/G80/G85 20.3 kernel 5.10+
G52r1 Bifrost (v7) RK3566 and RK3568 21.2
G57 Valhall (v9) MediaTek MT8192 22.2+ kernel 5.20+
G72 Bifrost (v6) Exynos 7 9610, Exynos 9 9810, Helio P60/P70 and Kirin 970 20.3 kernel 5.10+
G76 Bifrost (v7) elio G90T/G95 22.0
G310 Valhall (v10) RK3688 24.1+ kernel 6.10+
G610 Valhall (v10) RK3588 24.1+ kernel 6.10+
G720 5th Gen (v12) 25.1+ kernel TBD - Requires patch series to be merged: https://lwn.net/Articles/1023522/
G725 5th Gen (v13) 25.1+ kernel TBD - Requires patch series to be merged: https://lwn.net/Articles/1023522/
1.2 Panthor

PanthorARM公司推出的Mali GPU开源驱动项目,主要用于替代传统闭源驱动,支持Linux系统下的OpenGLVulkan图形渲染。

  • 目标硬件:主要针对Valhall以及其后续架构,例如瑞芯微、全志等国产芯片方案中集成的Mali GPU(例如Mali-G31Mali-G52Mali-G710等);
  • 驱动类型:它是一个完全开源、符合现代Linux内核标准的GPU驱动。

Panthor目前处于积极开发阶段,它在Linux 6.10版本中引入。在最新的Linux内核和Mesa版本中,它已经提供了基本的功能(2D/3D 加速),并且性能和改进正在快速推进。

1.3 区别

我们来详细解释一下PanthorPanfrost这两个与ARM Mali GPU相关的开源驱动程序。

简单来说:

  • Panfrost是现有的、已经成熟的开源驱动,支持从较旧到较新的多代Mali GPUPanfrost已经非常成熟和稳定,对于MidgardBifrost架构的GPU,它提供了优秀的日常使用体验和良好的性能。对于早期的Valhall GPU,它也能提供基本功能,但更高级的功能和优化正在Panthor中实现;
  • Panthor是新一代的开源驱动,专门为未来基于ARM最新GPU架构(如Valhall和后续架构)的Mali GPU 而设计;
    • Panthor是继Panfrost之后的新一代开源GPU驱动,同样集成在Mesa中;
    • Panthor并非完全取代Panfrost,对于MidgardBifrost GPUPanfrost仍然是主要且推荐的驱动,Panthor是为新硬件准备的“接班人”。

为什么需要Panthor

  • 随着GPU架构从Bifrost演进到Valhall,硬件的工作方式和特性发生了显著变化。继续在旧的Panfrost驱动代码上修修补补来支持新硬件会变得非常低效和混乱。因此,驱动开发者决定“另起炉灶”:
  • 更清晰的代码结构:Panthor从头开始设计,代码库更干净、更模块化,便于维护和为新硬件添加支持;
  • 利用现代GPU特性:Valhall架构引入了新的着色器核心、新的指令集和新的内存管理单元(MMU)。Panthor能够更好地利用这些特性,以实现更高的性能和更低的功耗。
  • 支持新功能:例如Vulkan 1.3 API的支持是Panthor的一个关键目标。虽然Panfrost主要专注于OpenGL ES,但Panthor旨在同时提供高质量的Vulkan OpenGL ES支持。
  • 统一内存管理:Panthor引入了更现代和高效的GPU内存管理方法,这对于性能和多任务处理至关重要。

二、GPU驱动移植

RK3588搭载了Mail-G610。我们下载 Linux 6.16.12源码:https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.16.12.tar.xz

Panthor驱动源代码仓库,位于drivers/gpu/drm/panthor目录下。

参考文章:

[1] Rockchip RK3399 - Mali-T860 GPU驱动(mesa+Panfrost)

[2] RK3588关于panthor驱动的移植

[3] ARM Mali GPU Upstream software, aka Lima/Panfrost

更多推荐