DRM是Linux 内核的一个子系统,负责与现代显卡的GPU进行交互。DRM 公开了一个API (libdrm),用户空间程序可以使用该API 向 GPU 发送命令和数据并执行诸如配置显示器模式设置之类的操作。DRM 最初是作为X 服务器直接渲染基础架构的内核空间组件开发的,但从那时起,它已被其他图形堆栈替代方案(如Wayland)以及独立应用程序和库(如SDL2和Kodi)使用。
当没有DRM的情况下时
当有DRM的情况下时
DRM 中间层主要的作用:
1、允许多个程序同时访问 3D 显卡,避免冲突
2、一台计算机中安装两个 GPU的切换(一个独立 GPU 和一个集成 GPU)
其中,libdrm方便用户空间程序与 DRM 子系统的接口。此库只是一个包装器, 基于内核DRM,尤其对ioctl命令进行包裹,向上层显示框架提供更易使用的API,它为 DRM API 的每个 ioctl 提供了一个用C编写的函数,以及常量、结构和其他辅助元素。操作文件的文件一般是 /dev/dri/cardX。