qt linux输入子系统_Linux 图形栈一览:基于 DRM 和 Wayland

本文详细介绍了Linux图形栈,重点解析了DRM子系统和Wayland协议在图形处理中的作用。从Linux内核的DRM到用户空间的应用,包括普通GUI App和多媒体App的渲染过程,阐述了Compositor如何使用DRM接口将应用的surface合成为帧,并显示在Frame Buffer上。同时,文章提到了PipeWire在音频/视频IO中的角色,以及统一渲染的概念和潜在优势。
摘要由CSDN通过智能技术生成

欢迎点击上方蓝色“泰晓科技”关注我们ae734aeea86ba86d1dca28b01ed93edc.png

原创作者:陈杰

本文图示了基于 DRM 还有 Wayland 的 Linux 图形栈。在这个图形栈中,App 将画好的 surface,通过 Wayland 协议提交给 Compositor。Compositor 将来自各个应用的 surface(s) 合成为一帧,通过 DRM 接口最终画在 Frame Buffer,如下图所示:

b9e47cab591862face2bc43dda52b7bb.png

图 1:Linux 图形栈概览:Wayland 协议, Compositor 和 DRM 子系统

本文接下来自下而上,先介绍 Linux Kernel 的 DRM 子系统,而后步入 Userspace 来介绍:代入两个代表性的 GUI App,情景分析其渲染过程。

通常,GUI App 是通过图形控件库来布局和放置控件。对这类普通 GUI App 渲染过程分析,是为情景分析的第一章节。

随后分析了多媒体 App:它是进一步细分的一个情景,即 App 界面一部分内容,是多媒体。

伴随情景的细分,渲染过程会经由特定的一些软件栈,故而“花开两朵,各表一枝”。

1. 背景:DRM —— buffer management、Frame Buffer / plane、Kernel Mode Setting

Linux DRM 子系统,主要提供了以下功能:

  • 操作 Frame Buffer / Plane 接口

  • Buffer 管理

  • 模式设定(分辨率、色深、刷新率等)

65221b8723c64a6366139a9b91aa0577.png图 2:Linux DRM 中的概念:Frame Buffer,Plane,CRTC,Encoder 以及 Connector

简单地理解, DRM 功能上相当于 HW Composer + gralloc,只不过 “接口” 是 Linux Kernel 导出的,而不是 HAL。

换句话说,HW Composer 和 gralloc 可以映射到 DRM 实现。事实上,一些平台的 Android BSP 正是这样做的。

下图对比了两者:<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值