【转】DRM (二)基本概念

【转】DRM (二)基本概念,第1张

如下是DRM Driver 所依赖的 Component Framework。

framebuffer是驱动和应用层都能访问的一块内存区域。

可以把它理解为一块画布。画画之前需要将它格式化,指定是画油画,还是国画(色彩模式,比如 RGB24,YUV 等),画布需要多大(分辨率)。

直译为阴极摄像管上下文。它读取当前扫描缓冲区的像素数据,借助于PLL电路,生成视频模式定时信号。

简单来说,它就是显示输出的上下文,对内连接 Framebuffer ,对外连接 Encoder。

可以把它理解为扫描仪。它扫描画布(framebuffer)上的内容,叠加 planes 的内容,传给 encoder。

直译为 编码器。它将内存的像素编码转换为显示器所需要的信号。

可以想象成,它将你的画在不同类型、型号的显示设备上显示,将其转换成不同的电信号,比如 DVID、VGA、YPbPr、CVBS、Mipi、eDP 等。

直译为 连接器。它常常对应于物理连接器 (VGA、DVI、FPD-Link、HDMI、DisplayPort、S-Video …) ,连接到一个显示输出设备 (monitor、laptop panel …) 。

与输出设备相关的信息(如连接状态、EDID数据、DPMS状态或支持的视频模式),也存储在 Connector 内。

直译为 平面。Plane和 framebuffer 一样是内存地址。

它的作用是干什么呢?想象这样一个场景,笔者正在很不专心地一边看动作大片,一边写文章。动作大片每一帧的变化都很大,需要全幅更新。写文章则可能半天挤不出一个字,基本上不需要更新。这是显卡使用的两个极端。一个是全幅高速更新的 Video Mode,一个是文字交互这种小范围更新的 Graphics Mode。此时轮到 Planes 出马,它给 Video 刷新提供了高速通道,使 Video 单独为一个图层,可以叠加在 Graphic 上面或下面,并具有缩放等功能。

Planes可以有多个。最后扫描仪(CRTC)扫描的画,实际上是framebuffer 和 若干planes 的组合(Blending)。

厂商可能会对planes的类型、用途做出规范。比如,

DRM_PLANE_TYPE_PRIMARY: 一定要有,由于显示背景或者图像内容

DRM_PLANE_TYPE_OVERLAY: 用于显示Overlay

DRM_PLANE_TYPE_CURSOR: 用于显示鼠标

Linux DRM(二)基本概念和特性

Display中的DRM模块介绍

DRM/KMS 基本组件介绍

DRM,英文全称Digital Rights Management, 可以翻译为:数字版权管理。 由于数字化信息的特点决定了必须有另一种独特的技术,来加强保护这些数字化的音视频节目内容的版权,该技术就是数字权限管理技术---DRM(digital right management)。

DRM的位置:

1、因为Linux内核内部接口和数据结构随时可能改变,因此DRI内核模块对于特殊内核版本必须特别编译。DRI【Direct Rendering Infrastructure 可翻译为:直接着色基础结构(基层直接渲染);DRI是一个安全且有效率的直接对显示硬件存取的方法。它包含对X server,一些client函数库、以及对内核的变更;DRI的一个主要目的就是提供高效能的OpenGL支持】内核模块防止目录为/lib/modules/.../kernel/drivers/gpu/drm,一般情况下,不管DRI模是否需要,X服务都自动加载.[1]

2、DRI:Direct Rendering Infrastructure 可翻译为:直接着色基础结构(基层直接渲染);DRI是一个安全且有效率的直接对显示硬件存取的方法。它包含对X server,一些client函数库、以及对内核的变更;DRI的一个主要目的就是提供高效能的OpenGL支持。

DRM以如下三种主要方式支持DRI

(1)DRM提供图形硬件的同步访问

(2)DRM强制使用DRI安全规则访问图形硬件

(3)DRM提供通用的DMA引擎

1. 将关键的图形卡初始化放在内核,如上传固件,设置DMA区域

2. 在多个用户态组件间共享渲染硬件,调度访问

3. 控制用户态程序对DMA的使用,以防读写了不该动的数据,

4. 通过提供显示内存alloc,管理图形卡内存

5. 实现modesetting,FB放在了DRM内

modsetting是设置图形卡上的显示模式,从VGA中断或VESA调用,到直接 *** 作图形卡寄存器;具体的比如 *** 作Crtc(管理读FB内存并转到Encoder)、Encoder(编码像素数据到Connector)、Connector(卡上的物理输出,DVI啥的)

libdrm是用户态与DRM内核模块的接口,DRM管理一切图形活动,提供基本图形功能:modsetting、FB驱动、内存管理。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7245733.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-03
下一篇2023-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存