1、 DRM简介(Direct Rendering Manager)
传统linux显示设备驱动开发时,通常使用FB驱动架构,随着显卡性能升级:显示覆盖(菜单层级)、GPU加速、硬件光标,传统FB架构无法很好支持,此外,对于多应用的访问冲突也无法很好控制。在这样的背景下,DRM应用而生。
DRM是linux内核中负责与显卡交互的管理架构,用户空间很方便的利用DRM提供的API,实现3D渲染、视频解码和GPU计算等工作。DRM是DRI(Direct Rendering Infrastructure)框架中的一个部分。
DRI并不是一个软件模块。相反DRI是由一系列的软件模块组成。引入DRI的目的是为了3D图形加速,DRI是一个软件架构,用来协调linux kernel,X windows系统,3D图形硬件以及OpenGL渲染引擎之间的工作。
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允许多个程序同时使用视频硬件资源,管理多个程序的资源请求、访问,综上所述DRM更能适应日益更新的显示硬件,DRM优势主要体现:
DRM原生支持多图层合成,FB原生不支持多层合成。
FB不支持VSYNC、DMA-BUF、异步更新和fence机制,但DRM原生都支持。
DRM统一管理GPU和Display

DRM是Linux内核中的显示设备管理架构,旨在解决传统FB架构在多应用访问和高级显示功能上的局限。它支持多图层合成、VSYNC、DMA-BUF和fence机制,通过KMS进行模式设置,并由libdrm提供接口库。GEM负责内存管理。自1999年以来,DRM不断发展,支持更多GPU,并引入AtomicAPI,增强了驱动的管理和性能。
最低0.47元/天 解锁文章
6282

被折叠的 条评论
为什么被折叠?



