Mesa & Gullium3D 介绍 您所在的位置:网站首页 turnip怎么读的 Mesa & Gullium3D 介绍

Mesa & Gullium3D 介绍

#Mesa & Gullium3D 介绍| 来源: 网络整理| 查看: 265

一、Mesa 介绍

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

或者这些文件:

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

Mesa有两个作用:

对接各种GPU硬件,将应用层对GL API的调用转换到对硬件GPU的调用上;各种 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对SL的支持情况

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

Mesa中的IR架构:

三、Gallium3D

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

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

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

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

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

四、极客发烧友动手指南

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

其他厂商的驱动:

Hardware drivers include:

Intel i965, i945, i915. See Intel's websiteAMD Radeon series. See RadeonFeatureNVIDIA GPUs. See Nouveau WikiVMware virtual GPU

Software drivers include:

llvmpipe - uses LLVM for x86 JIT code generation and is multi-threadedsoftpipe - a reference Gallium driverswrast - the legacy/original Mesa software rasterizer

Additional driver information:

DRI hardware drivers for the X Window SystemXlib / swrast driver for the X Window System and Unix-like operating systemsMicrosoft WindowsVMware 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…



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有