【问题标题】:Is Xinerama causing issues with my code?Xinerama 是否会导致我的代码出现问题?
【发布时间】:2012-03-16 04:31:10
【问题描述】:

在尝试启动并运行类似“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;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 ); 

【问题讨论】:

标签: linux x11 nvidia drivers xorg


【解决方案1】:

线索就在你面前:

Major opcode of failed request: 78 ( X_CreateColormap )

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

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

【讨论】:

    猜你喜欢
    • 2015-04-09
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 2013-01-03
    • 2017-08-29
    • 2020-11-29
    • 1970-01-01
    • 2019-09-17
    相关资源
    最近更新 更多