DRM,英文全称 Direct Rendering Manager, 即 直接渲染管理器。
DRM是linux内核的一个子系统,提供一组API,用户空间程序,可以通过它,发送画面数据到GPU或者专用图形处理硬件,也可以使用它执行诸如配置分辨率,刷新率之类的设置操作。原本是设计提供PC设备支持复杂的图形设。
在DRM之前Linux内核已经有一个叫FBDEV的API,用管理图形适配器的帧缓存区,但不能用于满足基于3D加速的现代基于GPU的视频硬件的需求。
4.基本组件
DRM主要由如下部分组成:
KMS(Kernel Mode Setting): 主要是配置信息管理,如改变分辨率,刷新率,位深等。
DRI(Direct Rendering Infrastructure): 可以通过它直接访问一些硬件接口
GEM(Graphics Execution Manager): 主要负责内存管理,CPU, GPU对内存的访问控制由它来完成。
DRM Driver in kernel side: 访问硬件
其中KMS由frame buffer, CRTC, Encoder, Connector等组件组成
CRTC:CRT controller,目前主要用于显示控制,如显示时序,分辨率,刷新率等控制,还要承担将framebuffer内容送到display,更新framebuffer等。
Encoder
负责将数据转换成合适的格式,送给connector,比如HDMI需要TMDS信息, encoder就将数据转成HDMI需