Firefly开源社区

标题: 在 RK3399 上运行开源的 GPU 驱动 [打印本页]

作者: andyshrk    时间: 2019-12-27 17:40
标题: 在 RK3399 上运行开源的 GPU 驱动
Run panfrost on rk3399GPU
偶尔会听到有嵌入式 Linux 玩家抱怨自己的开发板:图形界面不够流畅,拖动窗口有卡顿感。
造成这种情况一般由两个原因:
第一个原因基本是无解的,如果你选的 SOC上面没有带 GPU,唯一的办法就是尽量去跑轻量级的图形界面,如果想跑 Debian、Ubuntu 这种发行版上默认搭配的 Gnome 或者 KDE,这种没有 GPU 支持,所有的图像合成渲染都要通过 CPU 来运算,是很难跑流畅的。所以如果你对图形显示功能比较看重,在选开发板的时候一定要查阅与之搭配的主控 SOC 是否带有 GPU。
也有很多人被卡在了第二个关卡,SOC 上搭配了强劲的 GPU、比如 RK3399,S912,他们都搭载了 Arm mali GPU,但是 mainline 内核却缺少相应的驱动支持 —— GPU 驱动一般分为两部分:一小部分在 Linux 内核中,另外一大部分在 userspace,在 usercapce 的部分向下操作内核中的驱动,向上对应用层提供标准的 OpenGL 接口,这样各种图形显示相关的应用才能通过标准的 OpenGL API 进行图形渲染加速。
但是 mali GPU IP 提供商 Arm 公司只开放了内核部分驱动,而且这部分驱动还没有按照 linux kernel 的规范以 Drm 的框架去实现,所以它无法被 linux mainline 接受,还有一个更重要的部分,usersapce 部分,Arm 没有开源,只是以库的形式提供给购买了 mali GPU 授权的 SOC 厂商,比如 Rockchip,Amlogic。而且这套代码主要是为 Android 系统设计的,对 Debian、Ubuntu 这种系统的兼容性也不好。
看到这里,也许你就想骂 Arm 了,其实也不能完全怪他们,因为这并不是 Arm 独创的玩法,其他的 GPU 供应商也都这样玩,比如 Nvidia、Vivante、Imagination。大神 Linus 为这事还对 Nvidia 竖过中指呢,怒吼:“Nvidia,F*K you!”
面对这种状况,很多人为了能够利用 GPU 加速,就只能使用 SOC 原厂提供的内核,和他们定制的系统,这种内核和系统一般都比较老。
如果想跑 mainline 的内核,基本就没法使用 GPU 加速了,这也是为什么我们目前看到的大部分开发板如果搭载了 mainline 内核,基本都不会有 GPU 加速功能,或者直接就不开图形显示功能。
但是也有一部分黑客们不满于这种封锁,他们勇于探索,积极尝试,逆向了 Arm 发布的二进制库,然后重写了针对 Arm mali gpu 的开源驱动,最终在 Linux 5.2 发布的时候合并到了 mainline 中: 针对 Mali-400/Mali-450 的驱动叫做 lima,针对 Mali-T6xx / Mali-T7xx / Mali-T8xx GPU 和  GXX 系列的叫做 panfrost。Usersacpe 部分的开源库叫做 mesa,对 mali gpu 的支持从 mesa 19.2 开始。
这篇文章主要讲如何在运行 mainline linux kernel 的 RK3399 开发板上开启  GPU 加速:RK3399 集成了 Mali-T860 GPU,所以我们可以利用 linux kernel 的 Panfrost 驱动 + userspace 的 mesa 来解锁 3D 图形加速功能。
启动 Panfrost GPU 驱动
       到这里所有 GPU 相关的软件都安装完了,重启系统,登录图形桌面,就可以把 GPU 用起来了。
运行  Glmark2 测试
Glmark2 是一款比较出名的 GPU benchmark 测试程序,支持 OpenGL 2.0 和 OpenGL ES 2.0。在 Ubuntu 系统上可以直接通过 apt install 命令安装,在 Debian 系统上需要通过源码编译:
apt install libjpeg62-turbo-dev libpng-dev
git clone https://github.com/glmark2/glmark2.git
cd glmark2/
./waf configure --with-flavors=drm-gl,drm-glesv2,wayland-gl,wayland-glesv2
./waf
./waf install
运行 glmark2-es-wayland 命令即可进行测试。
参考资料
《MaliGraphics》https://wiki.debian.org/MaliGraphics
《ARM Mali GPU》https://en.opensuse.org/ARM_Mali_GPU
本文首发于公众号:HackforFun




作者: miaork3399    时间: 2021-8-11 11:48
能不能说的更详细一点呢? 就比如 5.4.2 配置内核的这个页面。

从空白的虚拟机,怎么才能看到您的页面呢

小白求教
作者: RK3399_ZF    时间: 2021-11-5 16:10
学习学习,感谢分享




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1