一、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(还没有找到特例,甚至Ch