linux drm 架构
2015-05-31 16:54
507 查看
转自:
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
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
相关文章推荐
- 设计模式、框架与架构小结
- PHP网站实现地址URL重定向
- 网站搭建
- java架构解密——深入再造AOP
- 研究android系统架构层次
- java架构解密——AOP之动态代理实现
- Server 2012之利用NLB实现WEB站点的的高可用 推荐
- 利用Github建立你的个人网站
- 利用Github建立你的个人网站
- 微服务实战(一):微服务架构的优势与不足
- zabbix架构
- 程序提高的几个网站
- 加快网站速度的九个方法
- Yahoo!网站性能最佳体验的34条黄金守则
- 网站设置中的各个功能
- 练习写代码的网站
- MVC架构搭建
- 嵌入式软件开发培训笔记——ARM架构Linux系统下交叉编译环境搭建、NFS、TFTP服务配置及Nandflash的读写
- 推荐:总能找到一个你觉得最好的免费电子书下载网站
- 三层架构与MVC