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


18

我板上有两个两张图形卡,一个是集成在Intel cpu中,一个是nvidia卡。

我想使用集成的渲染桌面,用cuda计算的NV卡。在安装“ 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

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

Answers:


10

解决了,我已经设置好了我想要的。我在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
继续执行此操作-由于图形更新,我遇到了类似的错误。一次简单的重新启动即可为我的计算机修复它,而无需卸载/重新安装nvidia驱动程序。
翼龙

1
事实上,似乎有很多,可能是不必要的工作......也有类似的问题,并有解决的关键模数(使用MOD1代替MOD4)
环Ø

我在运行wine OpenGL应用程序时遇到了类似的错误(glxgears和glxinfo在运行,没有任何问题),解决方案只是从nvidia-410(Ubuntu 18.04)升级到nvidia-415(在“图形驱动程序” ppa版本上找到) 415.27-0ubuntu0〜gpu18.04.1)。希望这对以后的人有所帮助。
Avio

3

对于遇到此问题并尝试在无头服务器上使用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。


3

将NVIDIA驱动程序降级到340.12

以前默认为384.11。

您可以通过software-properties-gtk“其他驱动程序”标签轻松完成此操作。

然后重启。

Ubuntu 16.04,NVIDIA Corporation GF119 [NVS 310]。

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

使用最小的GLUT hello世界可以重现该问题:

#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引导卡在消息“ Started NVIDIA Persistence Daemon”上


1

可能出现此错误的另一种情况是,当您尝试在chroot环境中运行时运行OpenGL窗口时。这篇文章建议在lightdm的xserver-command中添加+ iglx,这为我解决了这个问题。将此答案放在此处以提高知名度,因为其他答案未在Google上突出显示。


0

我有相同的错误消息,但是是由glutInitContextVersion(4,0);引起的 因为我的硬件不支持OpenGL 4.0,所以我将调用更改为 glutInitContextVersion(3,3);。 事情变好了。我正在使用专有的NVidia驱动程序。


1
你能解释一下你是怎么做到的吗?
Zanna

glutInitContextVersion没有定义:在freeglut3-dev 2.8.1,Ubuntu 15.10中,相关:stackoverflow.com/questions/22055522/…但这是一个有趣的线索。
Ciro Santilli新疆改造中心法轮功六四事件

但是,我也尝试过glfwWindowHint(GLFW_CONTEXT_VERSION,并没有解决问题:-( stackoverflow.com/questions/18113270/...
西罗桑蒂利新疆改造中心法轮功六四事件
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.