1、 DRM简介(Direct Rendering Manager)
传统linux显示设备驱动开发时,通常使用FB驱动架构,随着显卡性能升级:显示覆盖(菜单层级)、GPU加速、硬件光标,传统FB架构无法很好支持,此外,对于多应用的访问冲突也无法很好控制。在这样的背景下,DRM应用而生。
DRM是linux内核中负责与显卡交互的管理架构,用户空间很方便的利用DRM提供的API,实现3D渲染、视频解码和GPU计算等工作。
1.1 DRM发展历史
- 1999年,Precision Insight公司首次为 XFree86 4.0 Server 开发 DRI 显示框架,用于更好的适配 3DFX 公司显卡,初版DRM代码产出后,接下来的几年时间里,DRM 所支持的显卡列表不断被扩充。
- 2008年10月,Linux kernel 2.6.27 进行了一次重大的源码重组:DRM 的整套源码被放到了/drivers/gpu/drm/目录下,不同的GPU厂商代码也被放到了各自子目录下。
- 2014年6月,Atomic API 被添加到Linux 3.16,许多驱动也都转而使用这些新的 API。
- 2018年,又有10个基于 atomic 框架的 DRM 新增驱动被添加到Linux kernel。
1.2 DRM架构对比FB架构优势
DRM是目前Linux的主流图形显示框架,相比于传统FB架构,DRM允许多个程序同时使用视频硬件资源,管理多个程序的资源请求、访问,综上