GLX 擴充功能無法與 xvfb 一起正常運作

GLX 擴充功能無法與 xvfb 一起正常運作

我有一個 Ubuntu 14.04 系統,安裝了以下軟體包:

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

我想在 xvfb 下啟動一個應用程式。我先啟動 xvfb:

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

然後檢查 xvfb 日誌檔:

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

這表明沒有錯誤。另外,GLX 似乎已正確加載。現在,如果我檢查伺服器

$ glxinfo -display :1

我明白了

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".
...

事實上,我想在此伺服器上啟動且需要 GLX 的應用程式無法啟動。

在檢查了幾個文件頁面和論壇後,我不知道這裡出了什麼問題。如果 GLX 擴充功能未正確載入,為什麼 X 伺服器日誌檔案不顯示任何錯誤?有什麼我應該檢查的嗎?

答案1

Xvfb(X虛擬幀緩衝區)是Xsever虛擬的,不支援真正的硬體加速。

您需要產生 openGL 調用,其中 虛擬GL,透過真實的 3D Xserver 和 2D 渲染將真實呼叫分叉到 Xvfb 或另一個 2D Xserver。

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

答案2

在我的日誌檔案中,我看到初始化內建擴充 GLX 之前一切都很好,但隨後是

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

可能關鍵問題是xkbcomp?

答案3

在維基百科中Xvfb 中寫道:“與真正的顯示伺服器不同,Xvfb 不支援現代 X11 擴展,例如合成、Randr 或 GLX。Xdummy 是一種更新的替代方案,它支援這些擴展並提供與 Xvfb 相同的功能。”

相關內容