![ubuntu 16.04 在运行 OpenGL 程序时出现“X 请求失败错误:BadValue(整数参数超出操作范围)”](https://linux22.com/image/1146306/ubuntu%2016.04%20%E5%9C%A8%E8%BF%90%E8%A1%8C%20OpenGL%20%E7%A8%8B%E5%BA%8F%E6%97%B6%E5%87%BA%E7%8E%B0%E2%80%9CX%20%E8%AF%B7%E6%B1%82%E5%A4%B1%E8%B4%A5%E9%94%99%E8%AF%AF%EF%BC%9ABadValue%EF%BC%88%E6%95%B4%E6%95%B0%E5%8F%82%E6%95%B0%E8%B6%85%E5%87%BA%E6%93%8D%E4%BD%9C%E8%8C%83%E5%9B%B4%EF%BC%89%E2%80%9D.png)
我板上有两块显卡,一块是集成在英特尔 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。
删除所有 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
安装 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
现在也可以使用了。仍需检查是否还有其他相关问题尚未解决。