So aktivieren Sie indirekte GLX-Kontexte (+ iglx) in Ubuntu 14.04 LTS mit nvidia gfx-Karten


10

Ich betreibe einen Linux-Host für die Qt-Software-Entwicklung an einem zentralen Ort.

Mit meiner Windows-Box verwende ich Xming als lokalen X-Server und Kitt, um eine Verbindung zu diesem Linux-Host herzustellen. Mit dieser Konfiguration kann ich alle X- (xclock, xterm) und GLX- (qtcreator, gxlinfo, glxgears ...) Programme auf dem Linux-Host verwenden.

Meine Hauptarbeitsstation ist ein Ubuntu 14.04 LTS mit einer NVIDIA GFX-Karte. Wenn ich eine Verbindung mit dem Linux-Host mit meinem Ubuntu-System „ssh -p port # -YC my.dev.host.com“ kann ich auch verwenden kann alle X - Programme (xclock, xterm) Programme , aber ich kann nicht verwenden GLX Programme (qtcreator, gxlinfo, glxgears ...).

Soweit ich erfahren habe, liegt dies daran, dass der X-Server standardmäßig keine indirekten GLX-Kontexte für die Version 1.16 unterstützt.

Meine Frage lautet also: Wie kann ich indirekte GLX-Kontexte (X-Server und NVIDIDA-Treiber) in meiner Ubuntu 14.04 LTS-Installation aktivieren, damit die Dinge von einem X-Server wie erwartet funktionieren?

Vielen Dank für jede Hilfe!

cmks

Hier ist die Ausgabe von glxgears, vielleicht hilft das:

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

Antworten:


8

Ich hatte ein ähnliches Problem beim Ausführen einiger GL-Anwendungen über 'ssh -X' und löste es durch Hinzufügen von "+ iglx" zum Befehl xserver in /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf .

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

Danach starten Sie entweder neu oder Strg-Alt-F1, melden sich an und 'sudo service lightdm restart'.

Ich hoffe das hilft!


glxdemo, glxheads und glxinfo funktionieren jetzt. glxgears startet, zeigt aber nur den ersten Frame. Ich denke, es hängt mit "Laufen synchronisiert mit der vertikalen Aktualisierung" zusammen. Es gibt noch die Nachrichten libGL error: No matching fbConfigs or visuals foundundlibGL error: failed to load driver: swrast
cmks

Die libGL-Fehler werden durch den Versuch verursacht, DRI zu verwenden. Das Einstellen LIBGL_ALWAYS_INDIRECT=1verbietet die Verwendung von DRI, wenn keine Fehlermeldungen angezeigt werden. Aber glxgears zeigt immer noch nur einen Frame
cmks

Könnte Ihr glxgears-Absturz sein: bugs.freedesktop.org/show_bug.cgi?id=99555 ? Es sieht so aus, als ob IGLX in Xorg seit ungefähr einem Jahr kaputt ist :(
Steve Dee

5

Eine alternative (und vom Display-Manager unabhängige) Möglichkeit, die Optionen hinzuzufügen, besteht darin, den folgenden Abschnitt zu /etc/X11/xorg.conf hinzuzufügen:

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

Meine xorg.conf wird bei jedem Neustart immer wieder überschrieben lightdm.
ArcaneDominion

@ArcaneDominion Fügen Sie Befehle in eine Datei in /usr/share/X11/xorg.conf.d (zumindest auf xubuntu 16.04)
gerardw

1

Ich hatte das gleiche Problem beim Ausführen eines benutzerdefinierten OpenGL-Programms ssh -X. Die obige Lösung arbeitete mit einer geringfügigen Modifikation

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

Dies funktionierte mit dem Ubuntu 16.04-Server, auf dem Kubuntu-Desktop mit NVIDIA GTX 1070-GPU und NVIDIA-Binärtreiber ausgeführt wird, die über apt installiert wurden.


1
Willkommen bei Ask Ubuntu! Ich empfehle , diese Antwort zu bearbeiten , um sie mit spezifischen Details darüber zu erweitern, wo diese hinzugefügt werden soll. (Siehe auch Wie schreibe ich eine gute Antwort? Für allgemeine Ratschläge, welche Arten von Antworten auf Ask Ubuntu als am wertvollsten angesehen werden.)
David Foerster

Scheint die richtige Einstellung zu sein Option "IndirectGLX" "on". Gemäß dazu , enableIndirectGLXmuss zu bewerten , TRUEso dass die BadValueFehler nicht zurückgegeben wird. Der Standardwert ist: FALSE= -iglx(in der Befehlszeile). Also entweder von set: +iglxKommandozeilenoption ODER IndirectGLX "on"oder einem äquivalenten "wahrheitsgemäßen" Wert
TrinitronX

Nvidia-Dokumente für die Binärtreiber sagen, dass es eine andere Option AllowIndirectGLXProtocolfür dasselbe gibt. Ihre Dokumente sind jedoch etwas verwirrend, da sie erwähnen, dass der BadValueFehler mit ihrem Einstellungsnamen als zurückgegeben wird AllowIndirectGLXProtocol = "true". Dies ist völlig entgegengesetzt zu dem, was sie später sagen. " The NVIDIA GLX implementation will prohibit creation of indirect GLX contexts if AllowIndirectGLXProtocol option is set to False." Es ist also verwirrend, und vielleicht sind die Dokumente falsch?
TrinitronX
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.