Mesa与OpenGL驱动程序有何不同?

23

说 Mesa 是 OpenGL 的一个实现,这究竟意味着什么?我的 Nvidia 显卡的驱动程序不是已经实现了所有的 OpenGL 函数吗?因此,既然我的 Nvidia 显卡驱动程序正在接受 Opengl 调用并将它们传递给硬件,那 Mesa 究竟是做什么的呢?有人能澄清 Mesa 与驱动程序之间的区别吗?

3个回答

28
有人能解释一下 Mesa 和驱动程序之间的区别吗?
Mesa 提供基于 DRI2/DRM 架构的开源 GPU 驱动程序的客户端 OpenGL 接口,换句话说:它也是驱动程序的一部分。
如果你安装了来自 NVidia 或 AMD 的专有驱动程序,则不需要 Mesa。如果您想使用开源驱动程序(nouveau、radeon、radeonhd、intel),则需要 Mesa。

14
我相信LinuxQuestions.org论坛成员geeman2.0对这个问题提供了很好的解释:
OpenGL和Mesa并不是两个独立的选择,而是Mesa是OpenGL的一种特定类型。
OpenGL只是一个接口,定义了绘制3D图形所需的标准函数集。它并不涉及实际使这些函数发生的代码,它只指定函数的名称和它们应该做什么。
OpenGL实现提供了运行OpenGL标准指定方法的实际代码。如果没有安装实现,您无法运行任何OpenGL程序。
Mesa只是众多OpenGL实现之一,也是包含在Linux发行版中最标准的实现之一。它在软件中完成所有工作,这就是为什么它很慢的原因。
当您为花哨的图形卡安装Nvidia或ATI驱动程序时,这些驱动程序会提供在图形卡上运行的新OpenGL实现。这个实现将取代Mesa实现,但它仍然是一个OpenGL实现。也就是说,Mesa / ATI / NVidia驱动程序都实现了相同的函数集,只是以不同的方式实现,并且它们都是OpenGL。

Source


6
“它所有的工作都是在软件中完成,这就是为什么它很慢。”并不完全正确。 Mesa 提供了一套软件实现以及使用硬件加速(GPU 和/或 SSE 等)的实现。 - Damian Dixon

0
说 Mesa 是 OpenGL 的实现,这到底是什么意思?
首先,OpenGL 是由 Khronos 和显卡制造商(如 Nvidia、ATI、Intel 等)创建的 API 规范,就像硬件能够执行哪些功能的协议一样。
Mesa 是一个用于 3D 计算机图形的软件库,为多个平台提供通用的符合 Khronos 标准的 OpenGL 实现。因此,例如在 Linux 上运行时,您可能需要安装 Mesa 才能生成任何类型的图形。对于 Microsoft Windows,已经有一个实现安装好了。
我的 Nvidia 显卡驱动程序不是已经实现了所有的 OpenGL 函数吗?
是的,您的 Nvidia 显卡驱动程序实现了 OpenGL 函数。
那么,既然我的 Nvidia 显卡驱动程序正在接收 Opengl 调用并将其传递给硬件,Mesa 到底是做什么的呢?

你的程序与 Mesa 进行通信,Mesa 再与你的显卡驱动程序通信,驱动程序再与实际的 GPU 通信,GPU 将信号发送到显示器上,最终呈现出你所绘制的图像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接