Linux图形子系统之DRM显示框架
引言
与其他子系统一样,linux抽象出了DRM作为其图形子系统。其中包括显示和渲染,本文主要讲解显示部分。
1 相关概念
如图所属,drm将显示部分抽象出了framebuffer、plane、crtc、encoder、connector五部分。
- 在同一时刻,一个framebuffer与一个plane动态绑定;
- 在同一时刻,通常一个或多个plane与一个crtc静态绑定;
- 在同一时刻,一个crtc与多个encoder动态绑定;
- 在同一时刻,通常一个encoder与一个connector静态绑定;
图中蓝色组件是与硬件相关的抽象;红色的组件是软件抽象。
1.1 framebuffer
framebuffer是需要显示的图像数据,对应一幅图像。
1.2 plane
plane对应衣服图像的前端处理单元,由于一次显示可能是多个图像的组合,所以一般是多个plane对应一个crtc。
1.3 crtc
crtc负责将plane的图像数据合成等工作。
1.4 encoder
encoder负责将crtc的图像数据转成显示器可以显示的时序数据。
1.5 connector
connector对应于电脑的显示器接口,例如HDMI或DP等。