Xinerama会导致我的代码出现问题吗?

时间:2012-02-26 10:58:11

标签: linux x11 nvidia drivers xorg

在尝试启动并运行基本的“Hello World”类XServer应用程序之后,我发现无论我尝试什么,我都会遇到同样的错误,即:

X Error of Failed request: BadMAtch( invalid parameter attributes )
Major opcode of failed request: 78 ( X_CreateColormap )

起初,我认为这是我的司机,所以我将它们更新为290.10(nVidia)。

我的(相关)设置包含以下内容:

nVidia GTX 550 Ti
Sabayon Linux
Kernel 3.2

但是,经过一些冲浪,似乎可能是我有双显示器(一个连接到hdmi-mini端口,另一个vga / dvi),或者我启用了Xinerama,或者两者。

我试图通过在我的代码中创建两个GLXContext对象来补偿这两个监视器,正如预期的那样,它没有做任何事情(很好:我刚开始学习这个API)。我这样做是因为它看起来像是GLXContext与监视器输入/输出有关。

之后没有用,我尝试了glXGetConfig,但这也无效。所以,我开始四处寻找更多,并在一个论坛(几年前写的)上找到一篇关于某人有关禁用Xinerama的问题的帖子,这就是造成这个问题的原因。奇怪的是,这是在2009年发布的,所以人们会认为nVidia现在已经解决了这个问题。

我不知道该怎么做,而且我相信除非我能解决这个问题,否则我会有点搞砸。

任何人都可以查看我的代码here(pastebin)以及我在SuperUser here上的帖子。

我真的可以在这个上使用一些帮助。

TL;博士

setWindowAtt.colormap = colorMap;
setWindowAtt.event_mask = ExposureMask | KeyPressMask;

win = XCreateWindow( dp, root, 0, 0, 600, 600, 0, visualInfo->depth, InputOutput,   visualInfo->visual, CWColormap | CWEventMask, &setWindowAtt );

XMapWindow( dp, win );

XStoreName( dp, win, VI_UN_DEF_WIN_NAME );

glxContext = glXCreateContext( dp, visualInfo, NULL, GL_TRUE ); //error

glXMakeCurrent( dp, win, glxContext ); 

1 个答案:

答案 0 :(得分:1)

线索就在你的面前:

Major opcode of failed request: 78 ( X_CreateColormap )

这意味着XCreateColormap失败了。如果它想告诉你一个GLX命令失败了,它会说一些关于GLX的事情。

阅读完其余代码后:您从glXChooseVisual获得的视觉效果可能是TrueColor级视觉效果,而且 - 正如XCreateColormap的手册所说 - TrueColor视觉效果必须分配AllocNone,如果不这样做,将抛出BadMatch。