- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[建筑]Mesa 是OpenGL规范的开源实现_让显卡的3D加速特性透过此得到
Gallium3D架构文档
Mesa 是OpenGL规范的开源实现,让显卡的3D加速特性透过此得到施展。从Mesa7.5开始Mesa引入了Gallium3D架构。
开发Mesa7.5之前的版本的驱动比较复杂,每个显卡厂商的3D驱动都有各自不同的应用后端,通过此调用Mesa的API来实现3D加速。Intel、AMD和NVIDIA这三大厂商的显卡都具备各自不同的应用后端,造成了开发和维护困难。
而Mesa 7.5最新引入的Gallium3D则是相当先进的一项技术,即使目前为止还未完全成熟。Callium3D提供一套统一的API,这套API将标准的硬件特性(而非软件特性)暴露出来(如shader units),也就是说,Callium3D直接与统一的硬件级特性打交道,而非充当一个纯软件层。
因此,这些API使得OpenGL 1.x/2.x,OpenGL 3.x,OpenVG,GPGPU架构甚至 Direct3D 的实现,都只需要通过一个单独的后端即可。而无须各个厂商自行开发各自不同的后端。
从DRI演进到Gallium3D DRI
在Gallium3D之前,Mesa为了实现硬件加速,其DRI体系结构如下:
图 Mesa DRI(非Gallium3D)
作者认为,这个模型有下面的缺点:
Mesa和驱动之间的Leaky interface;
驱动体系庞大而且越来越复杂;
API OS相关的东西也写在驱动里面了;
Mesa DRI的模型导致DRI 驱动层过于庞大。而DRI驱动通常是硬件相关的,这就导致为了适用新的设备,开发工作较大。所以有人觉得有必要在DRI驱动这一层,提炼一些硬件无关的东西出来。于是DRI Driver初步被划分为三层:
图 DRI 驱动分层(非Gallium3D)
这个模型的特点是:
将API,OS,HW分开;
创建了新的接口;
分割驱动;(和第一条差不多了)
现在将DRI驱动分层的想法付诸实施,就得到了下面的模型:
图 DRI 驱动分层(Gallium3D)
这个模型带来了下述特点:
增加了State tracker, HW Driver, Winsys三个模块;
TG-Gallium驱动栈
Gallium3D的特点
驱动模型:
由GL3(OpenGL 3.0?),NV_GPU4, i965等软硬件抽象出来的接口;
常态状态对象;
简单绘图接口;如DrawArrays, DrawElements;
字节码形式的统一Shade语言;
Render目标作为私有缓冲;
可以将硬件驱动运行在新的接口,如GL3,GLES等;
可以将硬件驱动运行在新的窗口系统;
硬件驱动:
比DRI驱动简单很多;
接口:
-Create/Bind/Delete状态对象;
-Draw,1-2个入口;
-缓冲管理;
-Flush
每个Gallium驱动定义它自己的OS层(Winsys)接口;
通过重新实现WInsys层可以Re-target驱动;如miniglx,EGL;
Mesa State Tracker
实现了当前的Mesa驱动模型;
使用了新的硬件驱动接口
硬件无关,可重用;
将GL状态转化为常类型对象;
处理了所有费解的GL概念:
-所有不同的GL绘制路径;
-像素路径操作,DrawPixels, Bitmap, CopyT exSubImage
-GL纹理语义;
-纹理环境,GL1.5 shader, GLSL
O/S Dependencies
每一个Gallium驱动会定义其OS层Winsys接口;
通过切换Winsys层可以retarget驱动;
Winsys Layer
实现了两个接口:
DRI驱动接口:CreateDevice, CreateContext,SwapBuffers (**)
硬件驱动的Winsys接口:缓冲管理,命令提交;
封装了下述内容:
DRI lock和cliprects
Swapbuffers, page flipping.
通用的操作系统相关内容;
Gallium3D的参考实现
Mesa提供了Gallium3D驱动的软件参考实现Softpipe:
图 Gallium3D驱动的参考实现Softpipe
Mesa同时还提供了Gallium3D驱动的i915参考实现Softpipe:
图 Gallium3D驱动的参考实现i915
Gallium3D的使用
1. 各模块简介及功能
在目前最新的gallium版本中(Mesa-7.8.2),gallium目录下主要有以下子目录:auxiliary,drivers,include,state_trackers。
include是gallium提供给前端的接口,定义了一些gallium中重要的概念比如context,screen等以及各种st
文档评论(0)