次のコードは以前は機能していました。
cl_context_properties Properties [] = {
CL_GL_CONTEXT_KHR, (cl_context_properties) glXGetCurrentContext(),
CL_GLX_DISPLAY_KHR, (cl_context_properties) glXGetCurrentDisplay(),
CL_CONTEXT_PLATFORM, (cl_context_properties) CL.Platform,
0
};
CL.Context = clCreateContext(Properties, 1, CL.Device, 0, 0, &err);
if (err < 0) printf("Context error %i!\n", err);
しかし今は印刷します
Context error -1000!
コメントアウトしたら
//CL_GL_CONTEXT_KHR, (cl_context_properties) glXGetCurrentContext(),
//CL_GLX_DISPLAY_KHR, (cl_context_properties) glXGetCurrentDisplay(),
その後、正常に動作します。したがって、問題は glX 呼び出しにあるようです。
さて、変更されたのは、私のマシンで X をアップグレードしたことです。AMD Catalyst を実行しましたが、このアップグレードによりディスプレイが失われました。fglrx を消去して再インストールした後、ディスプレイが回復しましたが、その過程で何かが壊れたのではないかと疑っています。余談ですが、以前はこのマシンで Zandronum をプレイしていましたが、アップグレード後、プレイしようとすると次のエラーが発生します。
zandronum: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.0.
これは偶然ではないと思います。
ただし、デバッグを続行する方法がわかりません。gdb で glX 呼び出しの結果を出力できます。
(gdb) p Properties
$1 = {8200, 8519632, 8202, 6308672, 4228, 140737247522016, 0}
しかし、それを確認する方法や、これらの呼び出しが返す値に関する詳細情報を取得する方法がわかりません。問題の根本にたどり着くためにどのような手順を実行できますか? 私は正しい場所を見ていますか?