Display
介绍spacemit平台Display模块的功能和使用方法。
模块介绍
spacemit平台Display模块使用DRM框架,DRM全称是Direct Rendering Manager,是Linux系统目前主流的显示框架,适应当前显示硬件的特性。
功能介绍
用户空间Libdrm
DRM框架在用户空间提供的Lib,用户或应用程序在用户空间调用libdrm提供的库函数, 即可访问到显示的资源,并对显示资源进行管理和使用。
内核空间DRM driver
DRM driver提供了一系列的 IOCTL 接口,可以分成两类:Graphics Execution Manager (GEM)、Kernel Mode-Setting (KMS)。
GEM
GEM 主要是对 FrameBuffer 的管理,如显存的申请释放 (Framebuffer managing) ,显存共享机制 (Memory sharing objects), 及显存同步机制 (Memory synchronization);
KMS
KMS 主要负责管理显示模式的设置和图像输出 。KMS模型由组件Framebuffer,CRTC,Planes,Encoder,Connector组成。
Framebuffer
一块内存区域,驱动和应用层可访问,单个图层的显示内容。
CRTC
显示控制器,负责把要显示的图像,转化为底层硬件层面上的具体时序要求,还负责着帧切换、电源控制、色彩调整等等。
Plane
图层,每个图像拥有一个Planes,Planes的属性控制着图像的显示区域、图像翻转、色彩混合方式等, CRTC的显示图像实际上是Framebuffer和Planes的组合,得到多个图像的混合显示或单独显示。 图层有以下三种类型:
- 主图层(primary plane),用于显示背景或者图像内容;
- 叠加图层(overlay plane),通常用于叠加,比如视频图层;
- 光标图层(cursor),用于显示鼠标。