glGetError会挂起几秒钟

时间:2008-12-17 00:19:51

标签: performance opengl nvidia

我正在开发一个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
  • 双Intel Xeon DP四核E5345 2.33hz
  • 4096 MB 667 MHz全缓冲DDR2
  • Super Micro X7DAL-E Intel 5000X芯片组双Xeon主板
  • Enermax Liberty 620瓦电源

我已升级到最新的64位驱动程序:版本177.82,发布日期:2008年11月12日,结果完全相同。

有没有人知道是什么原因导致系统挂起这些OpenGL调用?

2 个答案:

答案 0 :(得分:1)

对于Linux来说,这是一个不太完美的NVidia驱动程序的问题。升级到更新的内核似乎有所帮助。如果我被迫使用这个过时的内核,我尝试过的一些东西似乎有帮助。

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

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

我还发现these forums对Linux / NVidia问题非常有帮助。只需搜索“linux crash”

答案 1 :(得分:0)

您可以使用SysprofOProfile等系统分析器深入挖掘。使用这些调用的其他OpenGL应用程序是否表现出类似的行为?