Mesa & Gullium3D 介绍

栏目: 后端 · 发布时间: 7年前

内容简介:Mesa (或Mesa3D)是一个 OpenGL/Vulkan 的实现,以及为所有开源图形驱动提供各种 GL 的入口点, 它是一个项目的名字。由它编译出来的库是下面这些:或者这些文件:

一、Mesa 介绍

Mesa (或Mesa3D)是一个 OpenGL/Vulkan 的实现,以及为所有开源图形驱动提供各种 GL 的入口点, 它是一个项目的名字。由它编译出来的库是下面这些:

Mesa & Gullium3D 介绍

或者这些文件:

Mesa & Gullium3D 介绍

其中需要注意的是这几个文件:libGL.so,libEGL.so,libGLESv2.so,根据名字很显然,他们分别实现了对应的API。

Mesa有两个作用:

  1. 对接各种GPU硬件,将应用层对GL API的调用转换到对硬件GPU的调用上;
  2. 各种 GL API 的纯软实现,当没有可用的硬件时,它可以提供传软件的 GL API 的实现;

它可以用于Linux,Windows,Mac等系统平台。在Windows上运行时它提供OpenGL API over DirectX的转换。

它实现了 OpenGL,Vulkan以及其他的图形API。Mesa把这些API调用转换到相应驱动程序(其实并不是真正的驱动程序,是用户态的DRI驱动程序)调用上。AMD和Intel都提供他们对Mesa支持的驱动程序,Nvidia官方没有提供开源的支持Mesa的驱动程序,只提供了商用的驱动程序,因此开源界开发了 Nouveau 作为支持Nvidia显卡的开源版本的支持Mesa的驱动程序。

在Ubuntu上它由libglvnd-dev包提供(vnd=Vendor neutral GL dispatch library),大部分带图形界面的 Linux 发行版会内置Mesa(还没有找到特例,甚至ChromeOS系统都内置Mesa)。

具体来讲它实现了包括但不限于这些API: OpenGL,Vulkan,OpenVG,OpenGL ES,EGL,GLX。对每种API的支持情况如下:

Mesa & Gullium3D 介绍

二、Mesa对SL的支持情况

SL指 Shading Language,着色器语言,是用来写那些跑在GPU上的程序的语言,常见的有微软的 HLSL,以及OpenGL的 GLSL。他们需要先转换成IR(类似汇编指令)指令才能跑在GPU上,就像不同的CPU架构会有不同的指令集一样,各个GPU厂家也都开发了不同的GPU指令集。NIR是Mesa支持的用来统一各种IR的指令集。Intel对它的支持是最完善的。

Mesa中的IR架构:

Mesa & Gullium3D 介绍

三、Gallium3D

Gallium3D 是Mesa提出的用于简化GPU驱动开发的框架。

下面是Mesa结构图,展示了mesa如何通过libGL库跟内核打交道,以及展示了新旧两种用户态设备驱动程序的实现方式。

Mesa & Gullium3D 介绍

左边的驱动实现方式非常简单直接,DeviceDriver部分直接是和硬件相关的,一般由硬件厂商开发,这个方案的mesa就相当于一个OpenGL的转换器,把上层应用对OpenGL的调用转换到对特定硬件的调用上,缺点是设备厂商需要针对不同的操作系统,不同的GL API开发不同的驱动。

右边的方案是Gallium3D的方案,特点是添加了分层,它把DeviceDriver部分的上下都给抽象了出来,OS WInSys部分抽象了当前的操作系统使得同一个DeviceDriver可以用于不同的操作系统,API State Tracker部分抽象了上层的不同的GL接口,使得同一个DeviceDriver可以支持不同的GL接口。整体大大降低了DeviceDriver的开发和适配难度。

下图展示了基于Gallium3D的驱动实现方案的详细信息,可以看到各种GL API都可以通过不同的State Tracker来统一和不同的硬件驱动交互,并且不同的硬件驱动也可以通过WinSys和不同的系统对接。

Mesa & Gullium3D 介绍

四、极客发烧友动手指南

如果你想从0到1手工搭建出来GUI图形栈,你需要知道一个厂家是如何支持Linux图形栈的,以及如何使用各个厂家的驱动程序,可以去他们的官网上查找,比如Intel集成显卡的相关驱动以及固件可以在01.org/zh/linuxgra… 下载。

其他厂商的驱动:

Hardware drivers include:

  • Intel i965, i945, i915. SeeIntel's website
  • AMD Radeon series. SeeRadeonFeature
  • NVIDIA GPUs. SeeNouveau Wiki
  • VMware virtual GPU

Software drivers include:

  • llvmpipe - uses LLVM for x86 JIT code generation and is multi-threaded
  • softpipe - a reference Gallium driver
  • swrast - the legacy/original Mesa software rasterizer

Additional driver information:

  • DRI hardware drivers for the X Window System
  • Xlib / swrast driver for the X Window System and Unix-like operating systems
  • Microsoft Windows
  • VMware guest OS driver

参考链接:

en.wikipedia.org/wiki/Mesa_(…

mesa3d.org/systems.htm…

01.org/zh/linuxgra…

en.wikipedia.org/wiki/Free_a…

www.freedesktop.org/software/ga…

www.freedesktop.org/wiki/Softwa…

www.mesa3d.org/relnotes/18…

packages.debian.org/sid/libglvn…

www.linuxfromscratch.org/blfs/view/s…


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Don't Make Me Think

Don't Make Me Think

Steve Krug / New Riders Press / 18 August, 2005 / $35.00

Five years and more than 100,000 copies after it was first published, it's hard to imagine anyone working in Web design who hasn't read Steve Krug's "instant classic" on Web usability, but people are ......一起来看看 《Don't Make Me Think》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具