带有 NVIDIA 驱动程序 (linux) 的 Mesa 标头

Posted

技术标签:

【中文标题】带有 NVIDIA 驱动程序 (linux) 的 Mesa 标头【英文标题】:Mesa headers with NVIDIA drivers (linux) 【发布时间】:2015-02-13 17:15:46 【问题描述】:

我正在努力理解这一切

我安装了 nvidia 驱动程序 (343.36)。但是,当我通过smxi 安装它时,它没有安装opengl 头文件(gl.h 和公司)。我听说 mesa-common-dev 包含这些文件,但 mesa 是 DRI 驱动程序的一部分。将 mesa 标头与 nvidia 驱动程序一起使用是安全的,还是它们是两种不同的东西?

GLEW 如何融入这一切?我知道它会在运行时加载 opengl 函数。但是我必须使用特殊的 nvidia 版本的 glew 吗?

编译好的软件呢?它将使用 NVIDIA 卡和标头进行编译,如果我在带有 ATI 卡的计算机上启动该程序,该软件可以工作吗?它会被硬件加速吗?

【问题讨论】:

【参考方案1】:

将 mesa 头文件与 nvidia 驱动程序一起使用是安全的,还是它们是两种不同的东西?

应该是的。标头只是指定存在哪些函数以及它们接受/返回的类型,这不会因实现而异(否则您必须为每个单独的 OpenGL 实现制作程序版本,这是不可行的)。但是,请确保 gl.h 文件不只是隐藏在 /usr/include 的某个子文件夹中。

GLEW 如何融入这一切?

GLEW 构建在 OpenGL 之上,如前所述,无论您使用什么实现,它都具有相同的 API。 GLEW 没有“nvidia 版本”(但是,获取扩展的功能取决于您使用的操作系统。不过,GLEW 会为您解决这个问题)。

编译后的软件呢?

头文件只在编译时使用;一旦你有了二进制文件,就不再需要它们来运行程序(事实上,你必须安装 -dev 版本的库的原因是为了获取头文件。)

【讨论】:

“请确保 gl.h 文件不只是隐藏在 /usr/include 的某个子文件夹中。”,是的,我仔细检查了 locatefind . | grep gl。感谢您的澄清

以上是关于带有 NVIDIA 驱动程序 (linux) 的 Mesa 标头的主要内容,如果未能解决你的问题,请参考以下文章

X11 和 nVidia 驱动程序的奇怪 EGL 行为

Linux - 图形驱动程序和 Mesa 之间的关系

无法在带有 Tesla K80 GPU 的各种 GCP Ubuntu VM 上安装 NVIDIA 驱动程序

Linux 内核驱动程序构建 (NVidia) 的未定义符号

如何使用 NVIDIA 驱动程序/CUDA(支持 tensorflow-gpu)和带有 pip 的 Python3 为图像制作 Dockerfile?

NVidia 驱动程序停止在带有 Ubuntu 16.04 和 Tesla K80 GPU 的 AWS EC2 实例上工作