Xvfb + glxgears 失败

Xvfb + glxgears 失败

我正在尝试使用 Xvfb,但由于某种原因它甚至无法运行 glxgears,而且我不知道如何调试它,也许我错过了一些东西。这是我正在使用的命令:

Xvfb :99 +extension GLX -screen 0 640x480x24
DISPLAY=:99 glxgears

glxgears 失败并显示以下错误消息:

X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  151 (GLX)
  Minor opcode of failed request:  3 (X_GLXCreateContext)
  Value in failed request:  0x0
  Serial number of failed request:  23
  Current serial number in output stream:  24

编辑:我刚刚要求一位朋友运行相同的命令,它在他的电脑上运行,但由于某种原因在我的电脑上运行失败。有什么办法可以调试X吗?

答案1

对于尝试在无头服务器上使用 OpenGL 时遇到此问题的任何人:如果您安装了 NVIDIA GLX 驱动程序,但服务器中实际上没有 NVIDIA 卡,您可能会收到此消息(例如,如果在无头服务器上使用 AWS Deep Learning Base AMI没有 GPU 的机器)。

要确认,请尝试运行 X 服务器+iglx(应该允许glxinfo运行),并查看glxinfo输出(例如xvfb-run -s '-screen 0 1400x900x24 +iglx' glxinfo)是否报告client glx vendor string: NVIDIA Corporation.如果是这样,请尝试切换到没有任何 NVIDIA 东西的 AMI。

答案2

您应该为客户端 (glxinfo) 和服务器 (xvfb) 使用 mesa(带 swrast 引擎)libgl。

在安装了 NVIDIA 和 mesa 的 Debian 9 上:

# LD_LIBRARY_PATH=/usr/lib/mesa-diverted/x86_64-linux-gnu Xvfb :99 +extension GLX -screen 0 640x480x24 & 
[1] 16936
# LD_LIBRARY_PATH=/usr/lib/mesa-diverted/x86_64-linux-gnu DISPLAY=:99 glxgears
6374 frames in 5.0 seconds = 1274.743 FPS 
^C

如果您没有nvidia卡,只需卸载nvidia驱动程序即可。如果您希望默认使用 mesa 并保持安装 nvidia,您可以使用glx-diversions

相关内容