Forked From Mesa - The 3D Graphics Library
一个适用于 Android 容器(PRoot、Chroot、LXC、Droidspaces 等)的 Mesa 构建,支持 Adreno GPU 的硬件加速。
- Mesa 26.0.0 及以上版本的 Freedreno 和 Turnip 驱动支持 Adreno 8xx GPU。
- 在多个主流的 Linux 发行版的 ARM64 Docker 容器下分别编译,兼容性更好,以 Android 为宿主机的 PRoot、Chroot、LXC、Droidspaces 容器均可使用本项目编译的 Mesa 驱动。
- 对于部分 Adreno 6xx/7xx/8xx GPU,OpenGL、OpenGL ES、Vulkan 均可使用 Freedreno 驱动,不再需要使用 Zink 进行图形 API 调用转换,极大地提高了 GPU 的利用效率。
- 只编译与绝大部分 Android 设备相关的驱动,减小包体体积。
这里只展示了经我和其他人实测后确认支持的 GPU 型号,不代表其他的 GPU 型号不支持。你可以在 freedreno_devices.py 文件中搜索你设备的 GPU 型号(例如,Adreno 725 可搜索725),若该型号有完整的设备定义,则它很可能受支持。欢迎在 Issues 中分享驱动在你的设备上的运行情况,这将帮助我们完善下面的这张表。
| GPU | OpenGL | OpenGL ES | Vulkan |
|---|---|---|---|
| Adreno 660 | ✔️支持 | ✔️支持 | ✔️支持 |
| Adreno 710/720/730/735/740/750 | ✔️支持 | ✔️支持 | ✔️支持 |
| Adreno 810/829/830/840 | ✔️支持 | ✔️支持 | ✔️支持 |
实验性支持(by whitebelyash):Adreno 825
本项目的 Releases 有两种形式的安装包,一种可以使用 Linux 发行版的软件包管理器安装,另一种只能直接解压来安装。推荐使用第一种安装包,若需要最新的 Mesa 特性(如 Adreno 8xx 的支持),则可以使用第二种。
若常规的 Release (标题不带turnip-前缀)的 Turnip 驱动不能正常运行,可以使用未打补丁的 Turnip 驱动(标题带turnip-前缀),直接覆盖安装即可。
PS: 本项目提到的“未打补丁”指的是没有应用 xMeM 的原始补丁,依然会应用一些必要的补丁(如更多的 GPU 支持)。
根据使用的 Linux 发行版,前往 Releases 下载某个对应的 Release 的所有软件包,按照 Release 说明中的安装说明进行安装。以下为一些主流的 Linux 发行版对应的最新 Release:
| Linux 发行版 | 最新 Release | 未打补丁的 Turnip 驱动 |
|---|---|---|
| Debian 13 | 25.0.7-2+deb13u1 | turnip-25.0.7-2+deb13u1 |
| Ubuntu 24.04 LTS | 25.0.7-0ubuntu0.24.04.2 | turnip-25.0.7-0ubuntu0.24.04.2 |
| Fedora 43 | 25.2.7-4.fc43 | turnip-25.2.7-4.fc43 |
| Arch Linux | 26.2.0-2 | turnip-26.2.0-2 |
Note
Releases 中.tar.gz格式的安装包只能覆盖原来的 Mesa 驱动,卸载时需要手动删除解压得到的文件,仅供测试使用。
目前“直接解压”方式支持以下 Linux 发行版:
| Linux 发行版 | 安装包文件名后缀 |
|---|---|
| Debian 13 | debian_trixie_arm64 |
| Ubuntu 24.04 LTS | ubuntu_noble_arm64 |
| Ubuntu 25.10 | ubuntu_questing_arm64 |
| Ubuntu 26.04 LTS | ubuntu_resolute_arm64 |
| Fedora 43 | fedora_43_arm64 |
| Arch Linux | archlinux_arm64 |
| Void Linux | void_arm64 |
- 前往 Releases 下载
.tar.gz格式的安装包。请注意文件名中的 Linux 发行版后缀,如debian_trixie_arm64,只能安装发行版匹配的安装包。对于 Adreno 7xx,一般先解压标准安装包(包含 Freedreno),再解压未打补丁的 Turnip 安装包。两者最新的 Release 如下:
| 标准安装包 | 未打补丁的 Turnip 安装包 |
|---|---|
| 26.2.0-devel-20260511 | turnip-26.2.0-devel-20260511 |
Note
对于 Adreno 8XX (尤其是 830 & 840),现在应该不再需要安装未打补丁的 Turnip 驱动了。标准安装包中打了补丁的 Turnip 驱动应该能正常运行。
若需要尽可能新的 Mesa 上游特性,可以使用Turnip 每周构建:turnip-weekly
turnip-weekly可以与标准安装包(Release 标题不带turnip-前缀)搭配使用,也可以单独使用 (通常兼容性更好)。单独使用时,需要将环境变量MESA_LOADER_DRIVER_OVERRIDE的值由kgsl改为zink。
Note
turnip-weekly由 GitHub Actions 每周定时拉取上游主线代码进行构建,且不经测试直接发布,所以可能会出现各种问题。这些问题通常是由于上游还未开发完成某个特性,需要等待上游将该特性开发完毕才能解决。所以当使用turnip-weekly遇到问题时,可以更换为其他版本的驱动,或者等待下周的构建。
- 直接将安装包解压到根目录。
sudo tar -zxvf mesa-for-android-container_26.0.0-devel-xxxxxxxx_debian_trixie_arm64.tar.gz -C /
sudo tar -zxvf turnip_26.0.0-devel-xxxxxxxx_debian_trixie_arm64.tar.gz -C /- 刷新动态链接器缓存。
sudo ldconfig卸载可参考以下命令:
# 复制这条命令输出的文件列表
tar tf mesa-for-android-container_26.0.0-devel-xxxxxxxx_debian_trixie_arm64.tar.gz | grep -v '/$' | tr '\n' ' ' ; echo
cd /
# 替换 <file-list> 为实际的文件列表
sudo rm <file-list>
# 重新安装发行版维护的 Mesa 驱动
# Debian 或 Ubuntu:
sudo apt update
sudo apt install --reinstall libegl-mesa0 libgbm1 libgl1-mesa-dri libglx-mesa0 mesa-libgallium mesa-vulkan-drivers
# Fedora:
sudo dnf reinstall mesa-filesystem mesa-libglapi mesa-libgbm mesa-libEGL mesa-libGL mesa-vulkan-drivers mesa-dri-drivers mesa-libOpenCL
# Arch Linux:
sudo pacman -S mesa mesa-docs opencl-mesa vulkan-freedreno vulkan-mesa-implicit-layers vulkan-mesa-layers在运行特定程序时指定环境变量MESA_LOADER_DRIVER_OVERRIDE和TU_DEBUG,如:
MESA_LOADER_DRIVER_OVERRIDE=kgsl TU_DEBUG=noconform glmark2或者将其添加到/etc/environment文件中以便在开启容器时自动加载:
MESA_LOADER_DRIVER_OVERRIDE=kgsl
TU_DEBUG=noconform
如果你是开发者,想要构建本项目的驱动或贡献代码,请参阅开发文档。
详细的测试结果:benchmark-result
| 设备 | 型号 | SoC | GPU | glmark2 | glmark2-es2 | vkmark |
|---|---|---|---|---|---|---|
| Redmi K40 Pro | M2012K11G | 高通骁龙 888 | Adreno 660 | 842 | 771 | 1170 |
| Xiaomi Pad 6 Pro | 23046RP50C | 高通骁龙 8+ Gen 1 | Adreno 730 | 1169 | 1143 | 263 |
| REDMI K80 Pro | 24122RKC7C | 高通骁龙 8 Elite | Adreno 830 | 3081 | 3083 | 308 |
| Xiaomi 17 Pro Max | 2509FPN0BC | 高通骁龙 8 Elite Gen 5 | Adreno 840 | 2947 | 2901 | 未测试 |
| OnePlus 15 | PLK110 | 高通骁龙 8 Elite Gen 5 | Adreno 840 | 3574 | 3621 | 未测试 |
PS: Xiaomi 17 Pro Max 执行基准测试时连接了电源,性能有折损,正常情况下实际分数会更高。
- Lucas Fryzek:Mesa Freedreno 驱动的 KGSL 后端代码的作者。
- xMeM:将 Freedreno 驱动的 KGSL 后端移植到了 Termux:X11。
- Robert Kirkman:整合并完善了 xMeM 的补丁。
- Rob Clark:为 Adreno Gen8 架构(包含 Adreno 840)引入了 Freedreno (包含 Turnip)支持。
- whitebelyash:为 Adreno 825 添加实验性支持。
- Termux 维护团队及贡献者:为 Mesa 驱动在 Termux 上的正常运行开发了一系列的补丁。