在两年前,我们介绍了如何移植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 GPU:Mali-400/Mali-450 GPU(Linux 5.2+);Panfrost驱动支持Midgard、Bifrost和Valhall Mali GPU:Mali-Gxx GPU和Mali-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驱动程序栈包括基于Midgard、Bifrost和Valhalla 微架构的ARM Mali GPU的OpenGL 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
Panthor是ARM公司推出的Mali GPU开源驱动项目,主要用于替代传统闭源驱动,支持Linux系统下的OpenGL和Vulkan图形渲染。
- 目标硬件:主要针对
Valhall以及其后续架构,例如瑞芯微、全志等国产芯片方案中集成的Mali GPU(例如Mali-G31,Mali-G52,Mali-G710等); - 驱动类型:它是一个完全开源、符合现代
Linux内核标准的GPU驱动。
Panthor目前处于积极开发阶段,它在Linux 6.10版本中引入。在最新的Linux内核和Mesa版本中,它已经提供了基本的功能(2D/3D 加速),并且性能和改进正在快速推进。
1.3 区别
我们来详细解释一下Panthor和Panfrost这两个与ARM Mali GPU相关的开源驱动程序。
简单来说:
Panfrost是现有的、已经成熟的开源驱动,支持从较旧到较新的多代Mali GPU;Panfrost已经非常成熟和稳定,对于Midgard和Bifrost架构的GPU,它提供了优秀的日常使用体验和良好的性能。对于早期的Valhall GPU,它也能提供基本功能,但更高级的功能和优化正在Panthor中实现;Panthor是新一代的开源驱动,专门为未来基于ARM最新GPU架构(如Valhall和后续架构)的Mali GPU而设计;Panthor是继Panfrost之后的新一代开源GPU驱动,同样集成在Mesa中;Panthor并非完全取代Panfrost,对于Midgard和Bifrost GPU,Panfrost仍然是主要且推荐的驱动,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目录下。
参考文章:
5848

被折叠的 条评论
为什么被折叠?



