0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

了解DRM架构的形成、功能流程实现

Linux阅码场 来源:内核工匠 作者:Allen Zhang 2022-11-28 09:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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允许多个程序同时使用视频硬件资源,管理多个程序的资源请求、访问,综上所述DRM更能适应日益更新的显示硬件,DRM优势主要体现:

DRM原生支持多图层合成,FB原生不支持多层合成。

FB不支持VSYNC、DMA-BUF、异步更新和fence机制,但DRM原生都支持。

DRM统一管理GPU和Display驱动,让软件升级、维护和管理更加方便。

10e71bfa-6eb2-11ed-8abf-dac502259ad0.png

1.3 DRM图形显示框架

DRM检测到的每个GPU都作为DRM设备,并为之创建一个设备文件/dev/dri/cardX与之连接,从整体架构上来看主要分为3个主要部分:

libdrm (接口库)

对底层接口进行封装,向上层提供通用的API接口,主要是对各种IOCTL接口进行封装,便于重用与代码共享。

KMS (Kernel Mode Setting)

正常工作时,需要设置显卡或者图形适配器的模式,主要体现在以下两个方面:

更新画面:显示buffer的切换,多图层的合成方式控制,以及每个图层的显示位置。

设置显示参数:包括分辨率、刷新率、电源状态(休眠唤醒)等。

GEM (Graphics Execution Manager)

提供内存管理方法,主要负责显示buffer的分配和释放。

10fa189a-6eb2-11ed-8abf-dac502259ad0.png

图1.1 DRM图形显示框架总览

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

本章节介绍DRM框架中的一些重点模块的功能与在显示链路中的作用,下图为APP调用DRM到屏幕显示的流程框图。

110cbc5c-6eb2-11ed-8abf-dac502259ad0.png

图1.2 DRM图形显示框架框图

下表对DRM中KMS和GEM两个模型的不同组件进行概述性说明,辅以高通平台代码层级的对应关系说明,以加深架构与流程之间的对应联系。

112339aa-6eb2-11ed-8abf-dac502259ad0.png

2 、DRM驱动框架

2.1 DRM驱动对象介绍

DRM内部的Objects是组成DRM框架的核心,下图中蓝色部分为物理硬件的抽象,棕色部分则为软件的抽象,其中GEM结构体为:drm_gem_object,其余部分位于结构体drm_mode_object中.

PS:drm_panel不属于object范畴,只是为了降低LCD驱动与encoder驱动间的耦合,是一堆回调函数集合。

113469c8-6eb2-11ed-8abf-dac502259ad0.png

图2.1 DRM核心组件介绍

2.2 DRM抽象硬件如何关联DRM Object

DRM的objects并不难理解,重要的是如何将实际的硬件与这些object进行关联,下面会以MIPI DSI接口为例进行介绍软件架构与DRM object的对应关系。

114ae324-6eb2-11ed-8abf-dac502259ad0.png

图2.2 典型MIPI DSI接口硬件连接图

1159d8f2-6eb2-11ed-8abf-dac502259ad0.png

图2.3 硬件与DRM Objects对应图

其中组件说明:

1168b0c0-6eb2-11ed-8abf-dac502259ad0.png

3 、DRM简单示例

DRM代码非常庞大,显卡逻辑也非常复杂,在学习DRM架构时,需要通过实践对DRM的流程进行理解,以达到事半功倍的效果。

下面会以模式设置案例,对DRM架构的流程进行解析。modeset主要流程如下:

1189c012-6eb2-11ed-8abf-dac502259ad0.png

图3.1 DRM Modeset流程总览

3.1 打开DRM设备文件

DRM框架成功加载后,会创建一个设备文件/dev/dri/card0,上层用户应用可以通过该文件节点,获取显卡的各种操作。

119f06ac-6eb2-11ed-8abf-dac502259ad0.png

3.2 获取显卡资源句柄

打开DRM设备文件后,通过以下函数获取显卡的资源句柄,进而进行显卡资源的操作。

11a93668-6eb2-11ed-8abf-dac502259ad0.png

3.3 获取connectorId

获取了drmModeRes后,获取它的连接对象。

11b545ca-6eb2-11ed-8abf-dac502259ad0.png

3.4 创建FrameBuffer

创建FrameBuffer后,然后映射一片内存,对这块内存进行像素数据填充。

11c13d8a-6eb2-11ed-8abf-dac502259ad0.png

3.5 设置Crtc模式

FB创建成功并进行清0操作,可以在里面填充任何数据,然后设置CRTC后,FB的内容就可以显示在屏幕。

CRTC模式设置函数:drmModeSetCrtc(),参数为:fd、crtc句柄、FB句柄、XY坐标等。

11ce38dc-6eb2-11ed-8abf-dac502259ad0.png

3.6 资源清理工作(非必需)

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

11d5fc52-6eb2-11ed-8abf-dac502259ad0.png

本章小结

本文介绍了DRM架构的发展历史、驱动框架以及简单示例,旨在帮助读者了解DRM架构的形成、功能流程实现,DRM代码庞大且复杂,想要深入理解它的内涵,最好的办法就是根据实际需求来进行代码流程梳理,后续章节也会对该部分进行展开讲解。

此外,DRM架构符合功能日益强大的现代显示设备,但仍有很多老的设备以及软件需要FB支持,在目前DRM框架中,会存在模拟FB设备的代码。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    217950
  • API
    API
    +关注

    关注

    2

    文章

    2147

    浏览量

    66222
  • DRM
    DRM
    +关注

    关注

    0

    文章

    48

    浏览量

    15568

原文标题:DRM架构介绍(一)

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RDMA设计5:RoCE V2 IP架构

    ,系统控制模块设计了对应的功能控制单元及相应的寄存器,并将这些寄存器抽象为 AXI-Lite 从机端接口,使得本数据传输系统可以简易地集成进用户环境。同时通过 AXI-Lite 接口,用户可以高效的与本数据传输系统进行交互,实现对系统
    发表于 11-25 10:34

    RK 平台 Vendor Storage 开发指南:基础知识、流程与实用技巧

    备可靠性校验、掉电恢复等关键特性,是保障设备身份标识、功能授权等核心信息安全的重要组件。本文将从基础知识、开发流程、使用途径三方面,为开发者梳理完整的开发逻辑。 一、核心基础知识:了解 Vendor Storage 是什么? 1
    的头像 发表于 11-22 07:11 95次阅读
    RK 平台 Vendor Storage 开发指南:基础知识、<b class='flag-5'>流程</b>与实用技巧

    AG32 内置的CPLD 的DMA功能如何实现

    一、在AGM 的AG32 CPLD中实现DMA(直接内存访问)功能,其核心逻辑如下: 1、系统架构•采用主从架构:MCU作为主设备,CPLD作为从设备•交互方式:MCU通过访问寄
    发表于 10-31 15:42

    DRM Kit数字版权保护服务介绍

    DRM Kit (Digital Rights Management Kit,数字版权保护服务)提供了DRM加密节目授权解密的功能,包括DRM插件管理、
    的头像 发表于 10-15 13:58 402次阅读
    <b class='flag-5'>DRM</b> Kit数字版权保护服务介绍

    闩锁效应的形成原理和测试流程

    在CMOS电路中,存在寄生的PNP和NPN晶体管,它们相互影响在VDD与GND间产生一低阻通路,形成大电流,烧坏芯片,这就是闩锁效应,简称latch-up。
    的头像 发表于 07-03 16:20 3443次阅读
    闩锁效应的<b class='flag-5'>形成</b>原理和测试<b class='flag-5'>流程</b>

    HarmonyOS实战:高德地图定位功能完整流程详解

    完整的定位功能流程,建议点赞收藏! 需求分析 要想实现一个完整的定位需求流程,就必须要做好准备工作,了解实现需求的具体步骤。 权限申请 检查
    的头像 发表于 06-09 15:23 871次阅读

    小鹏汽车斩获两项国际顶级安全认证 ISO 26262功能安全流程认证和ISO 21448预期功能安全(SOTIF)流程认证

    2025年5月,小鹏汽车顺利通过全球权威安全认证机构雅析exida 功能安全(ISO 26262)ASIL D 流程认证和 预期功能安全(ISO 21448)SOTIF 流程认证,成为
    的头像 发表于 06-07 19:00 4721次阅读
    小鹏汽车斩获两项国际顶级安全认证 ISO 26262<b class='flag-5'>功能</b>安全<b class='flag-5'>流程</b>认证和ISO 21448预期<b class='flag-5'>功能</b>安全(SOTIF)<b class='flag-5'>流程</b>认证

    GPU架构深度解析

    、游戏娱乐等领域。本文将深入探讨GPU架构的演变历程、核心组件以及其在不同应用场景中的优势。1、GPU架构的演变早期的GPU采用固定功能流水线架构,专为图形渲染任务而
    的头像 发表于 05-30 10:36 1300次阅读
    GPU<b class='flag-5'>架构</b>深度解析

    技术分享 | 如何在2k0300(LoongArch架构)处理器上跑通qt开发流程

    技术分享 | 如何在2k0300开发板(LoongArch架构)处理器上跑通qt开发流程
    的头像 发表于 05-20 11:05 652次阅读
    技术分享 | 如何在2k0300(LoongArch<b class='flag-5'>架构</b>)处理器上跑通qt开发<b class='flag-5'>流程</b>

    SN65DSI83 imx8mp上的DRM网桥连接失败的原因?

    SN65DSI83 imx8mp 上的 DRM 网桥连接失败
    发表于 04-11 07:46

    如何在i.mx8mq的android13上启用Widevine DRM

    Widevine DRM 13 级呢? 附加图片由“DRM 信息”应用程序检查。 Android 11 中支持的 Widevine Android 11 中支持的 Widevine Android 13 不支持 Widevine Android 13 不支持
    发表于 04-11 06:44

    对标ADS1148国产16位8通道AFE智能流量变送器解决方案

    对标ADS1148国产16位8通道AFE智能流量变送器解决方案
    的头像 发表于 04-08 09:58 624次阅读
    对标ADS1148国产16位8通道AFE智<b class='flag-5'>能流</b>量变送器解决方案

    能流量控制器产品说明书

    FS0021 系列智能流量控制器用于流量控制和调节,由超声波流量计、无极变速球阀、 显示屏和主控模块组成。根据用户所需流速,由超声波流量计实时反馈数据,对球阀进行快 速调节,实现按需求控制水量,有效
    发表于 02-27 13:55 4次下载

    健翔升带你了解PCB压合的原理和流程

    ,并通过大分子链的扩散和渗透,实现牢固的化学键合。   PP胶片结构特点 PP胶片结构特点 二、PCB压合的流程  PCB压合的流程主要包括以下几个关键步骤: 1.材料准备 芯板:提供机械支撑,是多层PCB的基础。 PP材料:起
    的头像 发表于 02-14 16:42 1964次阅读
    健翔升带你<b class='flag-5'>了解</b>PCB压合的原理和<b class='flag-5'>流程</b>

    芯片封测架构和芯片封测流程

    在此输入导芯片封测芯片封测是一个复杂且精细的过程,它涉及多个步骤和环节,以确保芯片的质量和性能。本文对芯片封测架构和芯片封测流程进行概述。     1 芯片封测 芯片封测,即芯片封装测试,是芯片制造
    的头像 发表于 12-31 09:15 2796次阅读
    芯片封测<b class='flag-5'>架构</b>和芯片封测<b class='flag-5'>流程</b>