Linux Xinerama是否导致我的代码出现问题?

Linux Xinerama是否导致我的代码出现问题?,linux,x11,nvidia,drivers,xorg,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) 我的(相关)设置包括以下内容: nVidi

在尝试启动并运行基本的“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迷你端口,另一个连接到vga/dvi),或者是因为我启用了Xinerama,或者两者兼而有之

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

在那之后没有工作,我尝试了
glXGetConfig
,但也没有工作。所以,我开始四处寻找,在一个论坛上发现了一篇帖子(几年前写的),关于有人在禁用Xinerama方面有问题,这就是问题的根源。奇怪的是,这是在2009年发布的,所以有人会认为nVidia已经解决了这个问题

我不知道该怎么办,我相信我有点搞砸了,除非我能解决这个问题

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

在这件事上我真的需要一些帮助

tl;dr

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 ); 

线索就在你面前:

失败请求的主要操作码:78(X_CreateColormap)

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

阅读完代码的其余部分后:您从
glXChooseVisual
获得的视觉效果可能是TrueColor类视觉效果,并且-正如
XCreateColormap
手册所述-TrueColor视觉效果必须分配AllocOne,如果不分配,将抛出BadMatch。

请提供。这将更容易分析。