ubuntu 16.04 在运行 OpenGL 程序时给出“失败请求的 X 错误:BadValue(整数参数超出操作范围)”

han*_*ang 31 nvidia xorg graphics opengl

我有两块两块显卡,一块是集成在 Intel cpu 中的,一块是 nvidia 卡。

我想用集成的来渲染桌面,NV卡用cuda计算。在我安装了“nvidia-modprobe”之后,我切换到使用“NVIDIA X Server 设置”中的集成器,它按我的意愿工作。

但是当我运行 glxinfo 时,glx 的问题在哪里。

name of display: :0
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:  24 (X_GLXCreateNewContext)
Value in failed request:  0x0
Serial number of failed request:  37
Current serial number in output stream:  38
Run Code Online (Sandbox Code Playgroud)

在 xorg 中将 libglx.so 记录在

[     3.597] (II) "glx" will be loaded by default.
[     3.597] (II) LoadModule: "glx"
[     3.599] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[     3.612] (II) Module glx: vendor="X.Org Foundation"
Run Code Online (Sandbox Code Playgroud)

有没有办法让glx正确运行?

han*_*ang 12

解决了,我已经设置了我想要的。我在GitHub 上发布了如下所示的答案。

  1. 删除所有 Nvidia 软件包并重新安装 xorg 软件包。

    sudo apt-get purge nvidia*  
    sudo apt-get install --reinstall xserver-xorg-video-intel libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core   
    sudo dpkg-reconfigure xserver-xorg   
    
    Run Code Online (Sandbox Code Playgroud)
  2. 安装 cuda8。你需要:

    按 Crtl + Alt + F1 键。

    sudo service lightdm stop  
    sudo init 3  
    
    Run Code Online (Sandbox Code Playgroud)

    我是用cuda8.run文件安装的,安装后会提示是否要安装nvidia卡驱动?。

    选择是。

    会提示是否要安装nvidia opengl?

    选择不,这是一个关键的选择,如果你在这里说“是”,它将涵盖“台面*”库。

    在此之后,选择默认值。

    安装后,重启。

    sudo reboot
    
    Run Code Online (Sandbox Code Playgroud)

  • 跟进此 - 我遇到了由图形更新引起的类似错误。简单的重新启动即可为我的计算机修复它,而无需卸载/重新安装 nvidia 驱动程序。 (5认同)

小智 6

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

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