以下代码用于工作:
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催化剂,这次升级导致我的显示丢失,所以在清除并重新安装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}
但我不知道如何验证它,或者获得有关这些调用返回的值的更多信息。我可以采取哪些步骤来解决问题的根源?我是否在寻找合适的地方?