https://www.jianshu.com/p/9c89705a1c0f
Framebuffer:一块内存区域,用于存储显示的图像数据,驱动和应用层都可以访问,并且保存分辨率、色彩模式(yuv、rgb)等信息。
Crtc:显示控制,如用于display timings,resolution等配置,扫描读取Framebuffer的数据,在叠加Plane的内容传输给 Encoder。在vop(Video Output Processor)里,也就是lcdc控制器。
Plane:和Framebuffer一样是一块内存,是一块硬件图像层,一个图像层由一个或者多个plane组成。手机不同界面的叠加就是这个原理。有三种类型的plane:
DRM_PLANE_TYPE_PRIMARY: 主要图层,显示背景或者图像内容
DRM_PLANE_TYPE_OVERLAY: 用于显示叠加、缩放
DRM_PLANE_TYPE_CURSOR: 用于显示鼠标
Encoder:编码器,将接收到的数据转化成不同的信号:mipi、edp、vga等。
Connector:具体外部接口,如edp, hdmi, mipi等,连接到物理显示输出设备,存储着输出设备的相关信息,如:EDID、视频模式等。
一般的流程是用户将显示的数据填充在Framebuffer,然后通过libdrm接口通知VOP设备,(crtc)vop驱动将 Framebuffer 和 plane 的数据叠加然后转换成标准的LCDC timing时序,然后通过 Encoder 转化成具体mipi、edp、vga等信号,到Connector显示输出。
KMS框架图:
https://img-blog.csdnimg.cn/ce39e4add2314106821c53d54dbb44a2.png