多くの調査を行った後、同僚にこの質問をしてください。彼はssh -X
(または)経由で以前のCentos 4サーバーに接続し、-Y
そこからいくつかのXアプリケーションを実行しようとしています。長年にわたってうまくいきましたが、最近彼のクライアントPC(Centos 7とUbuntu)へのアップデートのため、これは不可能になりました。彼のアプリケーションが中断され、それを実行しようとするとクラッシュしglxgears
ます。
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 150 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 19
Current serial number in output stream: 21
実際にはクライアントバージョンの問題です。クライアント側から以前のCentos 6に戻すと、再び機能します。サーバー側のX11ログには何もありません。私は走り、strace glxgears
普通ではないことを見つけられませんでした。さらなる診断のために何を試すことができますか?
編集:間接レンダリングコンテキストを強制しようとする次の試みは、最新のLinuxで失敗します。
glxinfo -i
name of display: :0
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 154 (GLX)
Minor opcode of failed request: 24 (X_GLXCreateNewContext)
Value in failed request: 0x0
Serial number of failed request: 39
Current serial number in output stream: 40
間接レンダリングを再度有効にするために、次のことを試しました。私が間違っていない限り、これらの作業はすべてクライアントコンピュータで行う必要があります。
/etc/X11/xorg.confの「画面」または「デバイス」セクションに以下を追加します。
オプション "AllowIndirectGLXProtocol" "true"
/usr/bin/startx(またはstartxがある場所):
デフォルトサーバーパラメータ= "+iglx"
/usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf で行を変更します。
xserver コマンド=X -core +iglx
KDEを起動する前(例:.kde/env/igl.sh)
LIBGL_ALWAYS_INDIRECT=1 エクスポート
これらのどれも機能しません。
答え1
Linuxワークステーション
逆にバージョンが多いですねGDMは提供していません+iglx
などのパラメータを渡す方法ですXorg
。これに応じて、新しいX.orgバージョンではIndirectGLX
オプション(あなたも見ることができますサンプルxorg.conf
テキスト)。
そのオプションが利用できない場合は、回避策があります。Xorg
シェルスクリプトによる自己包装:
mv /usr/bin/Xorg /usr/bin/Xorg.original
echo -e '#!/usr/bin/env bash\nexec /usr/bin/Xorg.original "$@" +iglx' > /usr/bin/Xorg
chmod +x /usr/bin/Xorg
chcon --type=bin_t /usr/bin/Xorg
macOSワークステーション(XQuartz)
早く走る
defaults write org.macosforge.xquartz.X11 enable_iglx -bool true
XQuartzが実行中の場合は再起動してください。 (タイプミスに注意してください。フィールドと変数名のエラーチェックはありません。)最新バージョンではより簡単ですorg.xquartz.X11
。