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, OpenGL 3
x, OpenVG, GPGPU 架构甚至 Direct3D 的实现,都只需要通过一个单独的后端即可
而无须各个厂商自行开发各自不同的后端
一、从DRI 演进到Gallium3D DRI 在 Gallium3D 之前,Mesa 为了实现硬件加速,其DRI 体系结构如下: 图 Mesa DRI(非 Gallium3D) 作者认为,这个模型有下面的缺点: 1
Mesa 和驱动之间的Leaky interface; 2
驱动体系庞大而且越来越复杂; 3
API OS 相关的东西也写在驱动里面了; Mesa DRI 的模型导致DRI 驱动层过于庞大
而DRI 驱动通常是硬件相关的,这就导致为了适用新的设备,开发工作较大
所以有人觉得有必要在DRI 驱动这一层,提炼一些硬件无关的东西出来
于是DRI Driver 初步被划分为三层: 图 DRI 驱动分层(非 Gallium3D) 这