1 下载xserver
从 Rockchip github git 仓库下载源代码:
1.1 rockchip-1.8分支
此分支用于 Rockchip Debian SDK,可以轻松地在 Debian 中使用它。当前的 xserver 版本与 Debian stretch 版本匹配。但是如果使用了 Debian stretch 存储库并从中使用 x 驱动程序(比如fbdev),那么它可以很好地与 Debian Jessie 一起工作。
2 性能
2.1 不使用glamor
2.2 使用glamor
随着点的线性增长,当使用 glamor 时,耗时并却没有线性增长。
2.3 检查是否使用glamor
如果显示“glamor initialized”,则表示已启用加速。
2.4 无法使用的原因
- 内核空间 gpu 驱动程序与用户空间(libmali)不兼容。
- 与 mesa-egl、mesa-gles 冲突。删除它们或确保 libmali 处于高优先级。
- 错误依赖。尝试将 libepoxy 更新到1.31。
3 如何构建xserver
3.1 在PC主机上交叉编译
建议使用 Debian 构建系统来构建 xserver,否则将很难解决依赖性问题。可以参考 Debian Package Maintainer Manuel 来了解更多信息。(更新:现在支持使用 docker 构建xserver,请参见 here)
- 安装 xserver 的所有构建依赖项。
- 安装 mali 库和开发文件。必须使用 Rockchip 的版本。
- 进入 xserver 目录。
- 使用 Debian 构建工具进行构建。
3.2 本地构建
4 如何调试xserver
需要为 xserver-core 安装一个调试包:xserver-xorg-core-dbg_1.18.4-1_armhf.deb。
另外,可能涉及 Mesa/GL 库,安装 libgl1-mesa-dri-dbg 和 libgl1-mesa-glx-dbg 可能有帮助。
在此之后,在启动 gdb 的目录中可以在 gdb.txt 文件获得 gdb 输出(这是日志命令所做的,另一个解决方案是自己复制粘贴输出)。将所有这些添加到 bug 报告中,开发人员会很感激的。如果回溯很小,您可能会错过几个调试包,见上文。
更多信息请看 here。
不截获信号
默认情况下,X 服务器将截获信号,例如截获自己的崩溃信息,并在 /var/log/Xorg.0.log 中转储堆栈跟踪。但是这个堆栈跟踪是由信号处理程序本身修改的。要禁用此信号拦截,请将其添加到 /etc/X11/xorg.conf 文件:
然后重启 X 服务器。