2 分钟阅读 次阅读

一、Mali GPU 驱动全景

ARM Mali GPU 的驱动程序分为两大阵营:ARM 官方闭源驱动社区开源驱动。两者实现方式、架构差异巨大,适用于不同场景。

Mali GPU 驱动生态
│
├── ARM 官方闭源驱动 (DDK)
│   ├── rXpX 版本(旧版命名)
│   └── Bifrost/Valhall DDK(新版命名)
│
└── 社区开源驱动
    ├── Lima       → Utgard 架构 (Mali-400/450)
    ├── Panfrost   → Midgard + Bifrost 架构
    └── Panthor    → Valhall + 5th Gen 架构

二、ARM 官方闭源驱动 (DDK)

2.1 概述

ARM 向芯片厂商分发 GPU DDK(Driver Development Kit),芯片厂商(Rockchip、MediaTek 等)集成到 BSP 后下发给设备厂商。最终用户拿到的就是一个闭源的内核模块 mali.ko + 用户空间的 libGLES_mali.so / libMali.so

2.2 版本命名

时期 命名格式 适用范围 示例
旧版 rXpX Utgard、早期 Midgard r6p0, r12p0, r28p0
新版 对应 GPU 架构名 Midgard/Bifrost/Valhall Bifrost DDK, Valhall DDK

Rockchip SDK 常见闭源驱动版本:r12p0~r18p0(适用 Mali-T860/T760),后续逐步更新至 G 系列对应版本。

2.3 架构组成

┌─────────────────────────────────────────┐
│          用户空间 (Userspace)             │
│  libGLESv1_CM.so, libGLESv2.so           │
│  libEGL.so, libOpenCL.so                 │
│  libMali.so (厂商整合库)                  │
│  gralloc, hwcomposer *.so (Android)      │
├─────────────────────────────────────────┤
│          内核空间 (Kernel)                │
│  mali.ko (mali_kbase.ko 或 mali.ko)     │
│  与 Linux DRM/KMS 不直接交互             │
└─────────────────────────────────────────┘

2.4 特点

优点 缺点
性能最优,ARM 官方优化 代码不开放,无法自行调试修改
OpenGL ES / Vulkan / OpenCL 功能完整 内核模块与主线 Linux 脱节,内核升级困难
芯片厂商提供技术支持 不同内核版本需要对应 DDK 版本
稳定性经过验证 安全漏洞无法自行修复

三、社区开源驱动

3.1 Lima — Utgard 架构开源驱动

项目 详情
适用 GPU Mali-200, Mali-400, Mali-450, Mali-470
维护方 社区 + Mesa 项目
主线状态 内核模块已合入 Linux 主线(drivers/gpu/drm/lima/
Mesa 支持 OpenGL ES 2.0 完整实现
现状 成熟稳定,已替代闭源驱动

对于 RK3066、全志 A20 等老平台,Lima 是唯一实际可用的主线驱动方案。

3.2 Panfrost — Midgard + Bifrost 开源驱动 ⭐

项目 详情
适用 GPU Mali-T6xx~T8xx(Midgard)、Mali-G31/G52/G71/G72/G76(Bifrost)
维护方 Collabora 主导,社区贡献
主线状态 内核模块已合入 Linux 主线(drivers/gpu/drm/panfrost/
Mesa 支持 OpenGL ES 2.0/3.0/3.1,OpenGL 3.3+
RK 平台适配 RK3568 (Mali-G52) 可用

Panfrost 架构

Panfrost 由两部分组成:
┌────────────────────────────────┐
│  内核模块: panfrost.ko          │  ← 标准 DRM 驱动,合入主线
│  位于 drivers/gpu/drm/panfrost/ │
├────────────────────────────────┤
│  用户空间: Mesa Panfrost        │  ← Gallium3D 驱动
│  位于 src/gallium/drivers/panfrost/ │
└────────────────────────────────┘

关键特点

  • 遵循 Linux DRM/KMS 框架,可与 Wayland/DRM 应用无缝集成
  • 不需要特定内核版本,随主线 Linux 更新
  • 性能逐步逼近闭源驱动(部分场景差距约 10~20%)

3.3 Panthor — Valhall + 5th Gen 开源驱动 🔥

项目 详情
适用 GPU Mali-G57/G68/G77/G78/G610/G710/G715(Valhall)、Immortalis/Mali-G720/G620(5th Gen)
维护方 Collabora + ARM 官方参与
主线状态 内核模块已合入 Linux 6.9+(drivers/gpu/drm/panthor/
Mesa 支持 OpenGL ES 2.0/3.0/3.1/3.2,Vulkan 1.0+(honeykrisp)
RK 平台适配 RK3588 (Mali-G610) 可用

为什么需要 Panthor(而非 Panfrost 续命)?

对比 Panfrost Panthor
目标架构 Midgard + Bifrost Valhall + 5th Gen
调度模型 Job Manager CSF(Command Stream Frontend)
FW 交互 传统 FW 接口 全新 FW 协议(CSF Firmware)
VirtIO 支持 原生支持 GPU 虚拟化
用户态驱动 直接操作 IOCTL 通过 Kernel 驱动 → FW 调度

Valhall 架构引入了 CSF 固件调度模型,与 Bifrost 的 Job Manager 完全不同,因此需要从头设计的 Panthor 而不是在 Panfrost 上修修补补。

Panthor 的命名:Panthor 取自《指环王》中的 潘托尔(Panthor)——与 Panfrost(潘霜)、Lima(利马)一样,延续了 Mali 开源驱动以《指环王》角色命名的传统。


四、驱动对比总览

驱动 类型 适用架构 适用 RK 芯片 主线内核 Mesa 支持 成熟度
Lima 开源 Utgard RK3066 等老平台 ✅ 已合入 GLES 2.0 成熟
Panfrost 开源 Midgard + Bifrost RK3568 (G52) ✅ ✅ 已合入 GLES 3.1 成熟
Panthor 开源 Valhall + 5th Gen RK3588 (G610) ✅ ✅ 6.9+ GLES 3.2 / Vulkan 快速发展中
ARM DDK 闭源 全系列 全系列 RK ❌ 需 BSP 内核 GLES/Vulkan/OCL 成熟

五、Rockchip 平台选型建议

RK3568 (Mali-G52, Bifrost)
    ├── 主线内核 + Panfrost     ← 推荐(开源、主线化)
    ├── BSP 内核 + 闭源 DDK      ← 传统方案(功能全、需旧内核)
    └── Panthor ❌              ← Bifrost 架构不支持 Panthor

RK3588 (Mali-G610, Valhall)
    ├── Linux 6.9+ + Panthor    ← 未来趋势(ARM 官方也在参与!)
    ├── BSP 内核 + 闭源 DDK      ← 当前主流(功能最全)
    └── Panfrost ❌             ← Valhall 架构不支持 Panfrost

关键趋势:ARM 官方已开始参与 Panthor 开发并开放 GPU 固件,未来主线内核 + Panthor 将成为 Mali GPU 的推荐方案,逐步减少对闭源 DDK 的依赖。


六、其他相关开源项目

项目 说明
Mesa honeykrisp Panthor 对应的 Vulkan 开源驱动(Mesa 内)
libdrm Panfrost/Panthor 依赖的 DRM 用户态库
kbase ARM 闭源 DDK 内核模块的代码名(mali_kbase.ko
RKDrm Rockchip 闭源 kernel 使用的特定 DRM 分支
mali-csf-firmware Panthor 需要的 CSF 固件二进制包

七、参考链接

留下评论