1

ソフトウェアに非常に奇妙なバグがあります。glXSwapBuffers の呼び出しは、いくつかの X イベントが送信されるまで (マウスがウィンドウ/キーボード イベントの上に置かれるまで) 時々ブロックされます。このバグは、適切に解決されなかった swapBuffers() のスレッド ブロックからの Qt QGLWidget OpenGL レンダリングと同一のようです。私たちも同じような状況です。

このアプリケーションでは、複数の画面で動作する必要があるため、複数のウィンドウを作成します。各ウィンドウは基本的に QGLWidget から派生したクラスを唯一の子として持つ QWidget です。各ウィンドウには、OpenGL コマンドを実行する独自のレンダリング スレッドが接続されています。

この設定では、アプリケーションはときどき停止します。X イベント (ウィンドウ上にマウスを移動する/キーボード ボタンを押す) をフィードすると、通常どおり続行されます。デバッガ情報に基づく glXSwapBuffers() ブロックは、クローズド ドライバ コード内のどこかにあります。

この動作は NVidia カードでは確認されておらず、AMD カードでのみ確認されており、複数の AMD カードを使用している場合に発生する可能性が高くなります。これは、バグが GPU ドライバーに起因する可能性があることを示唆しています。

他にこれにぶつかった人がいて、誰かがこれを解決したことさえあることを知りたいです。

4

0 に答える 0