Die GLX-Erweiterung funktioniert mit xvfb nicht richtig


15

Ich habe ein Ubuntu 14.04-System mit den folgenden Paketen installiert:

libegl1-mesa:amd64
libegl1-mesa-drivers:amd64
libgl1-mesa-dri:amd64
libgl1-mesa-dri:i386
libgl1-mesa-glx:amd64
libgl1-mesa-glx:i386
libglapi-mesa:amd64
libglapi-mesa:i386
libgles2-mesa:amd64
libglu1-mesa:amd64
libopenvg1-mesa:amd64
libwayland-egl1-mesa:amd64
mesa-utils
xvfb

Ich möchte eine Anwendung unter xvfb starten. Ich starte xvfb zuerst mit:

$ Xvfb :1 -screen 0 1024x768x24 +extension GLX +render -noreset >> xsession.log 2>&1 &

und überprüfen Sie dann die Xvfb-Protokolldatei:

Initializing built-in extension Generic Event Extension
Initializing built-in extension SHAPE
Initializing built-in extension MIT-SHM
Initializing built-in extension XInputExtension
Initializing built-in extension XTEST
Initializing built-in extension BIG-REQUESTS
Initializing built-in extension SYNC
Initializing built-in extension XKEYBOARD
Initializing built-in extension XC-MISC
Initializing built-in extension SECURITY
Initializing built-in extension XINERAMA
Initializing built-in extension XFIXES
Initializing built-in extension RENDER
Initializing built-in extension RANDR
Initializing built-in extension COMPOSITE
Initializing built-in extension DAMAGE
Initializing built-in extension MIT-SCREEN-SAVER
Initializing built-in extension DOUBLE-BUFFER
Initializing built-in extension RECORD
Initializing built-in extension DPMS
Initializing built-in extension Present
Initializing built-in extension DRI3
Initializing built-in extension X-Resource
Initializing built-in extension XVideo
Initializing built-in extension XVideo-MotionCompensation
Initializing built-in extension SELinux
Initializing built-in extension GLX

das zeigt keine fehler. Es scheint auch, dass GLX richtig geladen wurde. Nun, wenn ich den Server mit überprüfe

$ glxinfo -display :1

Ich bekomme

name of display: :1
Xlib:  extension "GLX" missing on display ":1".
...
Error: couldn't find RGB GLX visual or fbconfig
Xlib:  extension "GLX" missing on display ":1".
...
Error: couldn't find RGB GLX visual or fbconfig

Xlib:  extension "GLX" missing on display ":1".
...

Tatsächlich startet die Anwendung, die ich auf diesem Server starten möchte und die GLX benötigt, nicht.

Nachdem ich mehrere Dokumentationsseiten und Foren durchgesehen habe, habe ich keine Ahnung, was hier falsch läuft. Warum zeigt die X-Server-Protokolldatei keine Fehler an, wenn die GLX-Erweiterung nicht korrekt geladen wurde? Gibt es etwas, das ich überprüfen sollte?


In der Wiki-Seite [1] von Xvfb heißt es: "Im Gegensatz zu einem echten Anzeigeserver unterstützt Xvfb keine modernen X11-Erweiterungen wie Compositing, Randr oder GLX. Xdummy ist eine neuere Alternative, die diese Erweiterungen unterstützt und die gleiche Funktionalität wie Xvfb bietet . " [1] en.wikipedia.org/wiki/Xvfb
alpert

@alpertek solltest du das als Antwort posten. GLX benötigt im Allgemeinen einen chipspezifischen Treiber, um nützlich zu sein.
XTL

3
Die obigen Kommentare sind nicht korrekt. Wir haben GLX unter Xvfb mehrere Jahre lang in der OpenSCAD-Testsuite verwendet. bugzilla.redhat.com/show_bug.cgi?id=904851
don bright

Nun, dieser Kommentar im Wiki wurde in der Zwischenzeit entfernt. en.wikipedia.org/w/…
Vladimír Čunát

Antworten:


2

Xvfb (X Virtual Frame Buffer) ist ein virtueller Xsever, der keine echte Hardwarebeschleunigung unterstützt.

Sie benötigen OpenGL-Aufrufe mit VirtualGL , um die realen Aufrufe über einen realen 3D-Xserver und 2D-Rendering an Xvfb oder einen anderen 2D-Xserver weiterzuleiten.

$ Xvfb :1 -screen 0 1024x768x24 +extension GLX +render -noreset >> xsession.log 2>&1 &
$ env DISPLAY=:1 vglrun glxinfo 

Es unterstützt zwar keine echte Hardwarebeschleunigung, aber Mesa (Software GLX) ist in Ordnung - ich habe es vor einiger Zeit überprüft (noch im Jahr 2018). So dass Sie nicht brauchen ein echtes 3D - Xserver zu verwenden, obwohl es natürlich eine Option ist.
Dirkt

1

In der Wiki- Seite von Xvfb heißt es: "Im Gegensatz zu einem echten Anzeigeserver unterstützt Xvfb keine modernen X11-Erweiterungen wie Compositing, Randr oder GLX. Xdummy ist eine neuere Alternative, die diese Erweiterungen unterstützt und die gleiche Funktionalität wie Xvfb bietet."


Verwenden Sie für weitere Informationen Xdummy -h(es gibt keine Manpage ab x11vnc 0.9.13-6 unter Arch Linux).
Lekensteyn

7
Diese Antwort ist nicht richtig. Wir haben GLX unter Xvfb mehrere Jahre lang unter Linux für die kopflose OpenSCAD-Testsuite verwendet. bugzilla.redhat.com/show_bug.cgi?id=904851 Das Wiki wurde inzwischen aktualisiert und diese Zeile entfernt.
Don Bright

0

In meinen Protokolldateien sehe ich, dass bis zur Initialisierung der eingebauten Erweiterung GLX alles in Ordnung ist, aber danach folgt

The XKEYBOARD keymap compiler (xkbcomp) reports:
> Internal error:   Could not resolve keysym XF86AudioMicMute
Errors from xkbcomp are not fatal to the X server

kann das schlüsselproblem bei xkbcomp sein?

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.