本文从如下几个部分介绍
1. DRM 概念介绍
DRM 是Direct Render Manager的缩写:
- Linux 显示子系统结构框架
- 向上提供标准API给到应用使用
- 管理GPU和Display模块
- 相较于原来的framebuffer结构,DRM将更多的硬件模块抽象并管理起来,所以更加的灵活方便;
包含如下模块:
- GEM(Graphics Execution Manager) 用于管理显示buffer的申请和释放
- DUMB:只支持连续的物理内存,基于Linux底层的CMA内存管理实现,多用于小分辨率的场景
- PRIME:可以支持连续 & 非连续内存,基于DMA-BU机制,可以实现buffer共享,多用于大内存复杂场景
- FENCE:buffer同步机制,基于dma_fence实现,解决buffer控制不同步而出现的撕裂、抖帧、回帧等现象
- KMS (Kernel Mode Sstting)用于设置显示相关配置,显示画面
- 硬件模块划分
- CRTC:配置timing、resolution等参数
- ENCODER:将data数据转换为输出数据格式的模块
- Connector:连接器,显示数据传输模块,比如LVDS TX / MIPI DSI / HDMI
- Panels:物理屏幕,同时也包含硬件模块中Overlay的图层; <
- 硬件模块划分