4

以下代码曾经工作:

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}

但我不知道如何验证其中任何一个,或获取有关这些调用返回的值的更多信息。我可以采取哪些步骤来找到问题的根源?我什至找对地方了吗?

4

0 回答 0