一、DRM介绍
在Linux内核中,可使用fbdev的API管理图形适配器的帧缓冲区,但是它无法处理基于GPU的现代显卡的3D加速功能。DRM是Linux内核的一个子系统,最初是作为X Server DRI的内核空间组件开发的,后续也被用于其它图形栈(如Wayland)。DRM负责与现代显卡的GPU接口交互,用户程序可以使用DRM提供的API,向GPU发送命令和数据,实现类显示模式设置的操作、GPU硬件加速的3D渲染、视频解码和GPGPU(通用GPU)计算。
二、名词介绍
下表介绍了DRM框架中涉及到的部分名词:
缩写
全称
解释
DRI
Direct Rendering Infrastructure
基层直接渲染
DRM
Direct Rendering Manager
直接渲染管理器
FBDEV
Framebuffer Device
帧缓冲设备
GEM
Graphics Execution Manager
图形执行管理器
KMS
Kernel Mode Setting
内核显示模式设置
UMS
User-space Mode Setting
用户空间显示模式设置
V4L2
Video For Linux 2
linux视频设备驱动
三、DRM框架
Linux DM框架包括两部分:DRM core和DRM driver。DRM core实现了DRM的基本框架,可以注册DRM driver,同时为用户空间提供了一组ioctl。DRM driver主要实现它所支持的CPU/GPU等硬件部分驱动,提供DRM core未涵盖的或扩展(仅在此类硬件上可用)的ioctl实现。用户空间程序可以使用libdrm访问DRM框架的各种接口。
由于在实际项目中只调试过libdrm和Linux DRM,后续先介绍这两部分。下图摘抄自网络,介绍了DRM框架。