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

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

我板上有两块显卡,一块是集成在英特尔 CPU 中的,一块是 nvidia 卡。

我想使用集成版来渲染桌面,NV 卡用 cuda 进行计算。我在“NVIDIA X Server 设置”中切换到使用集成版,安装“nvidia-modprobe”后,它就可以正常工作了。

但是当我运行 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

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

有什么办法可以让 glx 正确运行吗?

答案1

解决了,我已经设置了我想要的。我发布了以下答案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   
    
  2. 安装 cuda8。您需要:

    按 Crtl + Alt + F1 键。

    sudo service lightdm stop  
    sudo init 3  
    

    我使用cuda8的.run文件来安装,然后安装的时候会提示是否安装nvidia卡驱动?

    选择是。

    它会提示您是否要安装 nvidia opengl?

    选择否,这是一个至关重要的选择,如果你在这里说“是”,它将覆盖“mesa*”库。

    之后,选择默认。

    安装后,重新启动。

    sudo reboot
    

答案2

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

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

答案3

将 NVIDIA 驱动程序降级至 340.12

以前默认为 384.11。

这可以通过“附加驱动程序”选项卡轻松完成software-properties-gtk

然后重新启动。

Ubuntu 16.04,NVIDIA 公司 GF119 [NVS 310]。

以下网址也存在类似的 Steam 问题:Steam 无法在 Ubuntu 16.04 上启动

使用最小的 GLUT Hello World 即可重现该问题:

#include <stdlib.h>

#include <GL/glut.h>

int main(int argc, char *argv[]) {
    glutInit(&argc, argv);
    glutInitWindowSize(800, 600);
    glutInitWindowPosition(200, 100);
    glutCreateWindow(argv[0]);
    glutMainLoop();
    return EXIT_SUCCESS;
}

Ubuntu 19.04:此问题不再发生

好久没遇到这种情况了,如果可以的话就升级 Ubuntu。目前 390.116 运行正常。

需要对 BIOS 选项进行一些小的更改才能在我的 Lenovo ThinkPad P51 上启动它:安装 nVidia 384.90 后,Ubuntu 17.10 启动时卡在消息“已启动 NVIDIA Persistence Daemon”处

答案4

非常简单的“非侵入性”解决方案。

将我的用户添加到video组并重新启动解决了我的问题(来源)。glxgears现在也可以使用了。仍需检查是否还有其他相关问题尚未解决。

相关内容