nvidia gfx-cardsを使用してUbuntu 14.04 LTSで間接GLXコンテキスト(+ iglx)を有効にする方法


10

Qt-software-developmentのlinux-hostを中央で実行しています。

私のWindowsボックスでは、XmingをローカルXサーバーとして使用し、そのlinux-hostに接続するためにputtyを使用しています。この構成では、linux-hostですべてのX(xclock、xterm)およびGLX(qtcreator、gxlinfo、glxgears ...)プログラムを使用できます。

私のメインワークステーションはnvidia gfxカードを備えたubuntu 14.04 LTSです。私はまた、「sshのポート-p#-YC my.dev.host.com」を使用して、私のUbuntuシステムでのLinuxホストに接続するときに使用することができ、すべてのXのプログラム(xclockを、xterm)などのプログラムを私は使用することはできません GLXプログラムを(qtcreator、gxlinfo、glxgears ...)。

これまで通り私が学んだ、これは1.16より若いバージョンのためのデフォルトであるため、Xサーバいけないのサポートの間接GLXコンテキストです。

私の質問は次のとおりです。ubuntu14.04 LTSインストールで間接GLXコンテキスト(Xサーバーとnvididaドライバー)を有効にして、Xサーバーから期待どおりに機能させるにはどうすればよいですか。

助けてくれてありがとう!

cmks

glxgearsの出力は次のとおりです。

root@my.dev.host.com:~# LIBGL_DEBUG=verbose glxgears 
libGL: screen 0 does not appear to be DRI2 capable
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
libGL: Can't open configuration file /root/.drirc: No such file or directory.
libGL: Can't open configuration file /root/.drirc: No such file or directory.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
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:  3 (X_GLXCreateContext)
  Value in failed request:  0x0
  Serial number of failed request:  35
  Current serial number in output stream:  37

回答:


8

「ssh -X」を介して一部のGLアプリケーションを実行するときに同様の問題があり、/ usr / share / lightdm / lightdm.conf.d / 50-xserver-command.confのxserver-commandに「+ iglx」を追加することで解決しました。

[SeatDefaults]
# Dump core
xserver-command=X -core +iglx

その後、再起動するか、Ctrl-Alt-F1キーを押してログインし、「sudo service lightdm restart」を実行します。

これが役に立てば幸いです!


glxdemo、glxheads、glxinfoは現在動作しています。glxgearsが起動しますが、最初のフレームのみが表示されます。「垂直リフレッシュと同期して実行する」に関連していると思います。メッセージはまだありlibGL error: No matching fbConfigs or visuals foundlibGL error: failed to load driver: swrast
cmksは

libGLエラーは、DRIを使用しようとしたことが原因で発生します。この設定でLIBGL_ALWAYS_INDIRECT=1は、DRIの使用が禁止され、エラーメッセージは表示されません。しかし、glxgearsはまだ1つのフレームしか表示しません
cmks '17 / 03/16

glxgearsがクラッシュする可能性があります:bugs.freedesktop.org/show_bug.cgi ? id=99555?XorgでIGLXが約1年間壊れているようです:(
Steve Dee

5

オプションを追加する別の(およびディスプレイマネージャーに依存しない)方法は、次のセクションを/etc/X11/xorg.confに追加することです。

Section "ServerFlags"
    Option "IndirectGLX" "on"
EndSection

私のxorg.confは、再起動するたびに上書きされ続けますlightdm
ArcaneDominion 2017

@ArcaneDominion /usr/share/X11/xorg.conf.d(少なくともxubuntu 16.04)内のファイルにコマンドを書き込む
gerardw

1

上でカスタムOpenGLプログラムを実行すると同じ問題が発生していましたssh -X。上記のソリューションはわずかな変更で機能しました

Section "ServerFlags"  
    Option "AllowIndirectGLX" "on"  
    Option "IndirectGLX" "on"  
EndSection  

これは、NVIDIA GTX 1070 GPUとaptを介してインストールされたNVIDIAバイナリドライバーを使用して、kubuntu-desktopを実行しているubuntu 16.04サーバーで動作しました。


1
Ask Ubuntuへようこそ!この回答を編集して、どこに追加するかについての具体的な詳細で展開することをお勧めします。(Ask Ubuntuでどのような回答が最も価値があると考えられるについての一般的なアドバイスについては、「良い回答を書くにはどうすればよいですか?」も参照してください。)
David Foerster 2017

正しい設定のようですOption "IndirectGLX" "on"。よるとこれにenableIndirectGLXと評価されなければならないTRUEので、BadValueエラーが返されません。デフォルトは、FALSE= -iglx(コマンドライン)です。したがって、いずれかのセット:+iglxコマンドラインオプション、IndirectGLX "on"または同等の「truthy」値
TrinitronX

バイナリドライバのNvidiaのドキュメントではAllowIndirectGLXProtocol、同じことについて別のオプションがあると述べています。ただし、BadValue設定の名前がで返されるエラーについて言及しているため、ドキュメントはやや混乱していますAllowIndirectGLXProtocol = "true"。これは、彼らが後で言うこととは正反対The NVIDIA GLX implementation will prohibit creation of indirect GLX contexts if AllowIndirectGLXProtocol option is set to False.です。
TrinitronX
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.