Gallium3D简介——从DRI到Gallium3D

Gallium3D简介——从DRI到Gallium3D

分类: OpenGL   1035人阅读  评论(0)  收藏  举报

目录(?)[+]

1.            Gallium3D

Gallium3D是新出来的3D模型。网上评论比较多,这里就不废话了。

本文翻译自Keith Whitwell的演讲:

TG-Gallium Driver Stack(Softpipe, Cell and Beyond), keith@tungstengraphics.com

2.            DRI演进到Gallium3D DRI

 

Gallium3D之前,Mesa为了实现硬件加速,其DRI体系结构如下:

图 Mesa DRI(Gallium3D)

作者认为,这个模型有下面的缺点:

(1) Mesa和驱动之间的Leaky interface

(2) 驱动体系庞大而且越来越复杂;

(3) API OS相关的东西也写在驱动里面了;

Mesa DRI的模型导致DRI 驱动层过于庞大。而DRI驱动通常是硬件相关的,这就导致为了适用新的设备,开发工作较大。

所以好事者觉得有必要在DRI驱动这一层,提炼一些硬件无关的东西出来。于是他们提出了一个初步的想法,就是将其划分为三层:

图 DRI 驱动分层(Gallium3D)

这个模型的特点是:

(1) API,OS,HW分开;

(2) 创建了新的接口;

(3) 分割驱动;(和第一条差不多了)

现在将DRI驱动分层的想法付诸实施,就得到了下面的模型:

图 DRI 驱动分层(Gallium3D)

这个模型带来了下述特点:

增加了State tracker, HW Driver, Winsys三个模块;

● TG-Gallium驱动栈

 

3.            Gallium3D的特点和参考实现

 

驱动模型:

GL3(OpenGL 3.0?)NV_GPU4, i965等软硬件抽象出来的接口;

常态状态对象;

简单绘图接口;如DrawArrays, DrawElements

字节码形式的统一Shade语言;

● Render目标作为私有缓冲;

可以将硬件驱动运行在新的接口,如GL3,GLES等;

可以将硬件驱动运行在新的窗口系统;

 

硬件驱动:

DRI驱动简单很多;

接口:

-Create/Bind/Delete状态对象;

-Draw1-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驱动会定义其OSWinsys接口;

● 通过切换Winsys层可以retarget驱动;

 

Winsys Layer

● 实现了两个接口:

-DRI驱动接口:CreateDevice, CreateContextSwapBuffers (**)

-硬件驱动的Winsys接口:缓冲管理,命令提交;

● 封装了下述内容:

-DRI lockcliprects

-Swapbuffers, page flipping.

-通用的操作系统相关内容;

 

Mesa提供了Gallium3D驱动的软件参考实现Softpipe

图 Gallium3D驱动的参考实现Softpipe

Mesa同时还提供了Gallium3D驱动的i915参考实现Softpipe

图 Gallium3D驱动的参考实现i915

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值