glXSwapBuffers阻塞,直到触发新的X事件

时间:2013-01-17 12:31:38

标签: multithreading qt opengl x11

我们的软件中有一个非常奇怪的错误。调用glXSwapBuffers将不时阻塞,直到发送一些X事件(鼠标悬停在窗口/键盘事件上)。似乎该bug与Qt QGLWidget OpenGL rendering from thread blocks on swapBuffers()相同,但从未正确解决过。我们有同样的情况。

在我们的应用程序中,我们创建了多个窗口,因为我们的应用程序需要使用多个屏幕。我们的每个窗口基本上都是QWidget,它有一个派生自QGLWidget的类作为它的唯一子节点。每个窗口都附有自己的渲染线程,执行OpengGL命令。

在此设置中,应用程序会不时停止。如果我们向它提供X事件(将鼠标移到窗口/按下键盘按钮上),它会继续正常运行。基于调试器信息glXSwapBuffers()在封闭的驱动程序代码中的某处阻塞。

我们尚未在NVidia卡上确认此行为,仅使用AMD卡,并且在使用多张AMD卡时更有可能出现此行为。这表明该错误可能来自GPU驱动程序。

我想知道还有其他任何事情碰到了这个并且有人甚至设法解决了这个问题。

0 个答案:

没有答案