• 注册
当前位置:1313e > 默认分类 >正文

Mesa Gullium3D 介绍

一、Mesa 介绍

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


或者这些文件:


其中需要注意的是这几个文件: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对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 website
  • AMD Radeon series. See RadeonFeature
  • NVIDIA GPUs. See Nouveau 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…


转载于:https://juejin.im/post/5cd40e35f265da039f0f2b3c

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录