【转】DRM (二)基本概念

2020-10-22  本文已影响0人  RonZheng2010

1. DRM Component Framework

如下是DRM Driver 所依赖的 Component Framework。

2. DRM Framebuffer

framebuffer是驱动和应用层都能访问的一块内存区域。

可以把它理解为一块画布。画画之前需要将它格式化,指定是画油画,还是国画(色彩模式,比如 RGB24,YUV 等),画布需要多大(分辨率)。

3. CRTC (CRT Context)

直译为阴极摄像管上下文。它读取当前扫描缓冲区的像素数据,借助于PLL电路,生成视频模式定时信号。

简单来说,它就是显示输出的上下文,对内连接 Framebuffer ,对外连接 Encoder。

可以把它理解为扫描仪。它扫描画布(framebuffer)上的内容,叠加 planes 的内容,传给 encoder。

4. Encoder

直译为 编码器。它将内存的像素编码转换为显示器所需要的信号。

可以想象成,它将你的画在不同类型、型号的显示设备上显示,将其转换成不同的电信号,比如 DVID、VGA、YPbPr、CVBS、Mipi、eDP 等。

5. Connector

直译为 连接器。它常常对应于物理连接器 (VGA、DVI、FPD-Link、HDMI、DisplayPort、S-Video …) ,连接到一个显示输出设备 (monitor、laptop panel …) 。

与输出设备相关的信息(如连接状态、EDID数据、DPMS状态或支持的视频模式),也存储在 Connector 内。

6. Planes

直译为 平面。Plane和 framebuffer 一样是内存地址。

它的作用是干什么呢?想象这样一个场景,笔者正在很不专心地一边看动作大片,一边写文章。动作大片每一帧的变化都很大,需要全幅更新。写文章则可能半天挤不出一个字,基本上不需要更新。这是显卡使用的两个极端。一个是全幅高速更新的 Video Mode,一个是文字交互这种小范围更新的 Graphics Mode。此时轮到 Planes 出马,它给 Video 刷新提供了高速通道,使 Video 单独为一个图层,可以叠加在 Graphic 上面或下面,并具有缩放等功能。

Planes可以有多个。最后扫描仪(CRTC)扫描的画,实际上是framebuffer 和 若干planes 的组合(Blending)。

厂商可能会对planes的类型、用途做出规范。比如,
DRM_PLANE_TYPE_PRIMARY: 一定要有,由于显示背景或者图像内容
DRM_PLANE_TYPE_OVERLAY: 用于显示Overlay
DRM_PLANE_TYPE_CURSOR: 用于显示鼠标

参考资料

Linux DRM(二)基本概念和特性
Display中的DRM模块介绍
DRM/KMS 基本组件介绍

上一篇 下一篇

猜你喜欢

热点阅读