📱 在 Termux 上使用硬件 GPU 加速的 proot 容器
VirGL 是一种用于 QEMU 虚拟机内部的虚拟 3D GPU,它允许客户操作系统使用主机 GPU 的功能来加速 3D 渲染。计划是拥有一个完全独立于主机 GPU 的客户 GPU。
– Mesa 3D 官网
Termux 最近推出了适用于安卓原生的 virglrenderer-android 软件包,可以运行安卓原生的 VirGL 渲染器给 proot 容器硬件加速。
1 | pkg i virglrenderer-android # 安装 virglrenderer-android |
安装好之后通过以下命令启动一个带有 VirGL 图形加速的 X 服务器:
1 | # Session 1 |
(三者在不同虚拟终端运行是方便直接 Ctrl+C 退出,如果不退出它们,直接关掉 Termux 的话,它们还会留在后台耗电。)
1 | ls -a $TMPDIR |
如果能看到 termux-x11
和 .virgl_test
套接字文件,就说明成功了。
通过以下命令进入 proot 容器:
1 | proot-distro login <容器名> --shared-tmp |
使用这条命令进入容器,会把 Termux 的 $TMPDIR
挂载到容器的 /tmp
,这样就可以把套接字通入容器。
1 | export DISPLAY=:0 \ |
1 | glxgears # 运行 OpenGL 测试程序 |
如果此时 Termux:X11 的显示器窗口上出现了齿轮动画,就说明 GPU 加速一切正常。🎉
GPU 加速的玩法有很多,比如配合 Box86 / Box64 和 Wine 运行一些简单的 Windows 3D 游戏等。