显示架构支持 对于 Rockchip 平台,主要有以下几种显示架构可供选择: Qt + Wayland Qt + EGLFS EGL program + X11 Wayland None 多窗口的功能需求,选择: X11 Wayland 桌面的功能需求,选择: X11 4K 视频播放 + 全屏: Qt + Wayland Qt + EGLFS X11 Wayland 4K 视频播放 + 多窗口: X11 Qt + Wayland Wayland 如果您对显示架构的技术不太理解,可以继续往下阅读。 X11 X11 是 X 显示协议的第 11 个版本。 X 协议已经延用了 30 年,X 协议的 Client/Server 结构起初是为了在以前硬件性能太弱的情况下,设备(Client 端)通过发送渲染请求给 X server(以前 X server 是运行在另一个独立的硬 件)渲染显示。 但是随着现代硬件性能不断提升,同一个硬件系统上可以同时 运行 Client 和 Server 了,但是这种远程通讯结构运用在本地机器上带来的后 果就是性能的丢失,目前在 Debian 官方已经有分支在开发 Wayland 用于替换 掉 X11,但是目前 Wayland 对现有软件兼容性并不好所有还没有正式替换使用 。 参考资料: https://en.wikipedia.org/wiki/X.Org_Server https://www.comptechdoc.org/os/linux/howlinuxworks/linux_hlxwindows.html https://dri.freedesktop.org/wiki/DDX/ https://www.freedesktop.org/wiki/Software/Glamor/ https://en.wikipedia.org/wiki/X.Org_Server Qt + EGLFS Qt + EGLFS 是 Qt 自己实现的一个 GUI 系统,不支持多窗口,但也因此少了 window composite。 Qt + EGLFS 和 dri2 的方式类似,区别就在于 Qt + EGLFS 的 font buffer 在自己用 gpu composite 后,是直接送给 DRM 显示,而 X 里是 送至 Window manager 做 composite,所以 EGLFS 在效率上是有优势的。 Qt + Wayland 在 Wayland 中, Weston 是 Wayland 显示协议中的具体实现,其对应关系就好比 Xorg (X server)和 X 的关系一样。 目前 Wayland 和 X 对比唯一缺点就是在兼容性上了,所以目 前主流的系统版本中依然大部分使用 X。 Weston 不再使用 X 的 Client/Server 的结构,而是直接由合成器接受内核事件,并传递给 Client 端 ,由 Client 端直接渲染,只向合成器发送需要更新的区域,再由合成器通知内 核安排翻页。 需要注意的是由于 Ubuntu/Debian 已经有 X11,所以 SDK 默认 是在 Buildroot 添加了 Weston 的支持,实际上如果 Ubuntu/Debian 需要安装 Weston 的话也可以在 Minimal 版本上搭建。(Firefly Ubuntu 20.04,将会默 认自带 Wayland 和 X,并且可以自由切换。) 建议使用 Buildroot/Yocto 做 Wayland 的开发。效率上 Wayland 要比 X11 好 点,主要是兼容性问题。如果不需要桌面,又要多窗口,可以尝试使用 Wayland 。 None 除了 X11 和 Wayland 之外,还有 None ,这也是嵌入式上接触比较多的。比如 MiniGUI,SDL皆是如此。 若要支持到 DRM 和 opengl 的话,就只能选择 Qt 了。 MiniGUI 是一个定位于轻量级的嵌入式图形库,对系统资源的需求完全考虑到了嵌入式 设备的硬件情况,如 MiniGUI 库所占的空间最小可以裁剪到 500K 左右。 针对 Buildroot 系统适配在硬件资源比较紧张的设备上的特性,MiniGUI 搭配 Buildroot 是再适合不过了。 参考资料: https://wayland.freedesktop.org/architecture.html https://en.wikipedia.org/wiki/Wayland