Mesa & Gullium3D 介绍

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

来源: juejin.im

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

本文转载自:https://juejin.im/post/5cd40e35f265da039f0f2b3c,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有。

一、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…


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

关注码农网公众号

关注我们,获取更多IT资讯^_^


为你推荐:

查看所有标签

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

媒介融合

媒介融合

[丹]延森 / 刘君 / 复旦大学出版社 / 2012-9 / 32.00元

“媒介融合”是什么,如何来认识,本书提供的视角令人赞叹。 作为丹麦知名教授,延森具有欧陆学者的气质:思辨、批判。在延森看来,媒介融合带来了研究上的转向——从作为技术的媒介转向作为实践的传播,后者的一个中心命题是 特定的媒介与传播实践将对社会组织(从微观到宏观)产生何种影响? 解决上述问题,首先需要解决交流与传播观念的理论规范问题,本书就是阶段性的成果:基于对交流/传播观念史的考察,建构......一起来看看 《媒介融合》 这本书的介绍吧!

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

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具