我正在开发一个 OpenGL 应用程序,我看到一些奇怪的事情发生。我正在测试的机器配备了 NVidia Quadro FX 4600,并且运行 RHEL WS 4.3 x86_64(内核 2.6.9-34.ELsmp)。

我已经使用调试器单步调试了该应用程序,我注意到它挂在从 OpenGL API 接收信息的 OpenGL 调用上:IE。- glGetError、glIsEnabled 等每次挂断,系统都会有3-4秒无响应。

另一件有趣的事情是,如果相同的代码在 RHEL 4.5(内核 2.6.9-67.ELsmp)上运行,它运行得完全正常。相同的代码在 Windows XP 上也可以完美运行。所有机器都使用完全相同的硬件:

  • PNY nVidia Quadro FX4600 768mb PCI Express
  • 双英特尔至强 DP 四核 E5345 2.33hz
  • 4096 MB 667 MHz 全缓冲 DDR2
  • Super Micro X7DAL-E Intel 5000X 芯片组双至强主板
  • Enermax Liberty 620 瓦电源

我已经升级到最新的 64 位驱动程序:版本 177.82,发布日期:和2008年11月12日的结果是一模一样的。

有谁知道什么可能导致系统挂起这些 OpenGL 调用?

有帮助吗?

解决方案

看来这是 Linux 上不太完美的 NVidia 驱动程序的问题。升级到较新的内核似乎会有所帮助。如果我被迫使用这个过时的内核,我尝试过的一些方法似乎有帮助。

定义 __GL_YIELD 环境变量为 "NOTHING" 在启动 X 之前似乎可以提高这个旧内核的稳定性。http://us.download.nvidia.com/XFree86/Linux-x86_64/177.82/README/chapter-11.html

我还尝试禁用三重缓冲和翻转。

我还发现 这些论坛 对于 Linux/NVidia 问题非常有帮助。只需搜索“linux crash”

其他提示

您可以使用系统分析器(例如 系统教授 或者 O型材. 。使用这些调用的其他 OpenGL 应用程序是否表现出类似的行为?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top