转自:

http://manpages.ubuntu.com/manpages/utopic/man7/drm-kms.7.html

根据自己的理解来转述一下:

摘要:

DRM 是linux 下的图形渲染架构(Direct Render Manager) ,  具体的说是显卡驱动的一种架构(驱动如何玩? 把功能封装成 open/close/ioctl 等标准接口,应用程序调用这些接口来驱动设备)。

作为显卡,最基本的功能就是把用户的绘图输出到显示屏上,DRM 如何去实现呢,先看看DRM 把“这件事”给你概括的几个基本要素:

画布(FrameBuffer) ,  绘图现场(CRTC) , 输出转换器(Encoder) ,  连接器(Connector)  ,  然后就到显示屏了

1  画布( FrameBuffer )

对计算机来说,FrameBuffer 就是一块驱动和应用层都能访问的内存,当然画图之前要有一定的格式化,比方说我可以规定什么样的色彩模式(RGB24 , I420 , YUUV 等等), 分辨率是多大,还有啥参数,那就要到绘图现场去看了 :p

2  绘图现场(CRTC)

简写翻译过来是阴级摄像管上下文,在DRM 里 CRTC 就表示显示输出的上下文了,首先 CRTC 内指一个 FrameBuffer 地址, 外连一个Encoder。 它们俩之间如何沟通? 这就是显示模式(ModeSet)要做的事情,ModeSet 包括了像前面提到的色彩模式 , 还有说显示的时序(timings , ModeLines 等都代表了这个意西)等, 通常时序可以按以下来表达 

PCLK  HFP HBP  HSW X_RES  VFP VBP  VSW Y_RES

像素时钟  水平前回扫 水平后回扫  水平同步头 水平有效长度  垂直前回扫 垂直后回扫  垂直同步头 垂直有效长度

一个CRTC 可以连接多个 Encoder , 干啥用,实现复制屏幕功能。

3  输出转换器(Encoder )

想想 CRT 这种土疙瘩就够复杂了,我们的显卡很牛奔的可以连接各种不同的设备,显然输出需要不同的信号转换器,将内存的像素转换成显示器需要的信号(DVID , VGA , YPbPr , CVBS 等等……)

4 连接器 (Connector )

不是指物理线,回到DRM 这是一个抽象的数据结构 ,代表连接的显示设备,从这里我们可以得到设备的EDID , DPMS 连接状态等.

5 显示面(Planner)

咦,怎么多出来一个。我也很呐闷,以上的东东不够地干活? 其实很多创新往往源于人对现实界的不满足。你又要看文字学习,又要看电影打游戏, 还有厉害的可以一边聊天一边看电影。 这里对立出来两个概念,像文字交互这种小范围更新的Graphics 模式,和全幅更新速度奇快的 Video 模式,这两种模式将显卡的使用拉上了两个极端。

于是 Planner 的概念就发挥了很好的作用,它给视频刷新提供了一条绿色通道,偶不和图形搞在一起了,偶是一个新的图层(或overlay),可以叠加在Graphic之上或之下,偶还可以缩放…

文档上说 Planner 也在 FrameBuffer 上,这个没关系,这里我们看出来 CRTC 里要显示的东东应该是一种组合(blending)了。 

看懂了概念,下一篇来分析具体的数据结构和接口。

参考文档:

http://manpages.ubuntu.com/manpages/utopic/man7/drm-kms.7.html

http://events.linuxfoundation.org/sites/events/files/lcjpcojp13_pinchart.pdf

http://landley.net/kdocs/htmldocs/drm.html

http://events.linuxfoundation.org/sites/events/files/slides/brezillon-drm-kms.pdf

http://elinux.org/images/7/71/Elce11_dae.pdf

linux drm 架构相关推荐

  1. linux drm 架构及linux drm 架构 之代码分析

    转自: http://manpages.ubuntu.com/manpages/utopic/man7/drm-kms.7.html 根据自己的理解来转述一下: 摘要: DRM 是linux 下的图形 ...

  2. 简述 Linux DRM 架构

    简述 Linux DRM Purpose Overview Architecture Components Framebuffer a. Information stored Purpose Over ...

  3. linux drm 架构 基础

    一.简介: DRM,英文全称Digital Rights Management, 可以翻译为:数字版权管理 由于数字化信息的特点决定了必须有另一种独特的技术,来加强保护这些数字化的音视频节目内容,文档 ...

  4. Linux DRM 相关知识

    目录 一.X Server 和 X Cilent 二.DRM / KMS 框架 1.‎DRM/KMS 框架专用于管理显示.图形和合成子系统.在其他 Linux 多媒体框架和应用程序的帮助下,通常使用 ...

  5. 整理一篇Linux drm显示系统的文章

    这篇文章主要是回答一位同学的提问,当然也是做一次总结,我相信关注我号的很多人也有做LCD相关的驱动或者系统开发,即使不是专门做LCD,但是在开发过程中也难免会遇到这样或者那样的问题. 所以找了几篇和d ...

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

    在<Linux DRM (一) Display Server>我们了解了 DRM 诞生的历史缘由. 本篇我们朝着 DRM 本尊再走几步,先介绍几个 DRM 的基本概念. 一.楔子 上篇文章 ...

  7. 详细分析DRM架构下获取HDMI/DP/VGA/DVI显示屏参数的实现原理

    1. 概述 对于VGA.HDMI.DisplayPort等接口的显示屏,当我们将线缆从高分辨率的屏幕拔插到一个低分辨率的屏幕时,在没有做任何的系统配置的情况下,就可以实现图像的完整显示,这里面是如何实 ...

  8. 转载:linux drm原理及应用

    参考链接 dma:https://blog.csdn.net/abc3240660/article/details/81942190#t6 Linux DRM KMS 驱动简介:https://blo ...

  9. Linux DRM Developer's Guide

    Linux DRM开发人员指南 http://landley.net/kdocs/htmldocs/drm.html Jesse Barnes Initial version Intel Corpor ...

最新文章

  1. c 异步中断服务器连接,异步连接和断开与epoll(Linux)
  2. 后端码农谈前端(CSS篇)第三课:选择器
  3. java远程下载文件到本地_java远程下载文件到本地
  4. CSS样式的插入方式
  5. Property Animator 属性动画概述与示例
  6. 实例38:python
  7. paip.字符串操作uapi java php python总结..
  8. python批量生成图_利用Python批量生成任意尺寸的图片
  9. SpringBoot整合JdbcTemplate
  10. 成都Uber优步司机奖励政策(3月28日)
  11. 为什么坐飞机时会耳痛?
  12. 免费微信小程序商城源代码,基于Uni-App,实现一码多端
  13. 八大排序算法详解(通俗易懂)
  14. java计算机毕业设计商店管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  15. 解决力扣等国外网站打不开问题
  16. 计算机及网络方面的杂志,计算机类省级期刊
  17. wamp 增加php 7.2,wamp环境下php7.2升级,WAMP本地环境升级php7+版本
  18. java安装及设置eclipse
  19. java中的迭代是什么意思_java迭代指的是什么意思
  20. C语言输出格式工整的日历——2乘6样式(详见本文)

热门文章

  1. 区块链公司谈区块链到底有什么用
  2. 微信小程序实现线上线下全渠道精准运营
  3. NLP项目流程及思考逻辑
  4. 安全合规/ISO--6--ISO 27001/27017/27018内审项清单
  5. 查找有向图中两个顶点之间是否存在路径
  6. js弹出提示信息并自动关闭
  7. uni-app 109生成个人二维码名片
  8. Excel表格太大,怎么打印在一张纸上?一个键1秒搞定!
  9. 微信分身,微信多开,微信双开
  10. SVN版本控制软件-图片含义详解