谷动谷力

 找回密码
 立即注册
查看: 1468|回复: 0
打印 上一主题 下一主题
收起左侧

【linux内核详解】DRM架构介绍(一)

[复制链接]
跳转到指定楼层
楼主
发表于 2022-11-28 11:19:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
【linux内核详解】DRM架构介绍(一)

1、 DRM简介(Direct Rendering Manager)

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架构优势

1.3]图1.1 DRM图形显示框架总览
图片来源:[url=https://en.wikipedia.org/wiki/Direct_Rendering_Manager#/media/FileRM_architecture.svg]https://en.wikipedia.org/wiki/Di ... RM_architecture.svg[/url]

1.4 DRM图形显示框架涉及元素

本章节介绍DRM框架中的一些重点模块的功能与在显示链路中的作用,下图为APP调用DRM到屏幕显示的流程框图。
下表对DRM中KMS和GEM两个模型的不同组件进行概述性说明,辅以高通平台代码层级的对应关系说明,以加深架构与流程之间的对应联系。




2 、DRM驱动框架

2.1 DRM驱动对象介绍

PS:drm_panel不属于object范畴,只是为了降低LCD驱动与encoder驱动间的耦合,是一堆回调函数集合。
2.2]DRM的objects并不难理解,重要的是如何将实际的硬件与这些object进行关联,下面会以MIPI DSI接口为例进行介绍软件架构与DRM object的对应关系。

图2.3 硬件与DRM Objects对应图

其中组件说明:


3 、DRM简单示例

下面会以模式设置案例,对DRM架构的流程进行解析。modeset主要流程如下:
3.1]DRM框架成功加载后,会创建一个设备文件/dev/dri/card0,上层用户应用可以通过该文件节点,获取显卡的各种操作。


3.2 获取显卡资源句柄

3.3]显示完成后,GUI会一直运行,一般不必实施资源清理工作。


本章小结

此外,DRM架构符合功能日益强大的现代显示设备,但仍有很多老的设备以及软件需要FB支持,在目前DRM框架中,会存在模拟FB设备的代码,参见drivers/gpu/drm/xxx/drv.c文件,会在设备目录下出现:/dev/fb0 。

Reference
Linux GPU Driver Developer’s Guide
Kernel Mode Setting (KMS)



更多图片 小图 大图
组图打开中,请稍候......
+10
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-5-19 15:49 , Processed in 0.092565 second(s), 42 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表