1

基本的な「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

しかし、ネットサーフィンをしてみると、デュアル モニター (1 つは hdmi-mini ポートに接続され、もう 1 つは vga/dvi) があるか、Xinerama が有効になっているか、またはその両方の可能性があるようです。

コード内に2 つのオブジェクトを作成して、両方のモニターを補おうとしました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 ); 
4

1 に答える 1

2

The clue is right in front of you:

Major opcode of failed request: 78 ( X_CreateColormap )

That means XCreateColormap failed. If it wanted to tell you a GLX command had failed, it would have said something about GLX instead.

After reading the rest of your code: the visual you're getting from glXChooseVisual is probably a TrueColor-class visual, and - as the manual for XCreateColormap says - TrueColor visuals must be allocated with AllocNone, and will throw BadMatch if you don't.

于 2012-08-29T01:13:08.953 に答える