当前位置: 首页 > news >正文

Rockchip 显示架构

对于 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 对现有软件兼容性并不好所有还没有正式替换使用。

_images/X_Logo.png

参考资料:

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 在效率上是有优势的。

_images/qt_logo.jpeg

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 版本上搭建。
_images/wayland_logo.png

建议使用 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

相关文章:

  • python基础:数据类型转换、运算符(算术运算符、比较运算符、逻辑运算符、三元运算符、位运算符)
  • 【力扣hot100题】(084)零钱兑换
  • Ubuntu24.04装机安装指南
  • Elasticsearch生态
  • C++ 编程指南34 - C++ 中 ABI 不兼容的典型情形
  • cursor+高德MCP:制作一份旅游攻略
  • NModbus 库在 C# 中的使用
  • 深入理解linux操作系统---第4讲 用户、组和密码管理
  • Dify + Stable Diffusion实现文生图工作流【两种方式】
  • ffmpeg 切割视频失败 ffmpeg 命令参数 -vbsf 在新版本中已经被弃用,需要使用 -bsf:v 替代
  • SD+融合ControlNet,扩散模型V1.5+约束条件边缘图+颜色图实现服装图像生成:定量对比试验结果+分析
  • 【测试】-- 测试分类
  • pg_rman备份pg数据库(在备库执行)
  • 权限管控与数据安全:衡石ChatBot在钉钉中的合规部署指南
  • 基于Cline和OpenRouter模型进行MCP实战
  • 通过平台大数据智能引擎及工具,构建设备管理、运行工况监测、故障诊断等应用模型的智慧快消开源了
  • 常见的HTTP状态码有哪些
  • GDB 调试命令详解:高效掌握常用调试技巧
  • 构件与中间件技术:概念、复用、分类及标准全解析
  • IS-IS度量值
  • 绍兴柯桥:用一块布托起中国制造的新经纬
  • 司法部谈民营经济促进法:对违规异地执法问题作出禁止性规定
  • 超燃!走过莫斯科街头的“中国排面”
  • 宁波市人大常委会审议生育工作报告,委员建议学前教育免费
  • 重庆动物园大熊猫被游客扔玻璃瓶,相同地方曾被扔可乐瓶
  • 十四届全国政协原常委、民族和宗教委员会原副主任苟仲文被提起公诉