如何使用nvidia gfx卡在Ubuntu 14.04 LTS中启用间接GLX上下文(+ iglx)


10

我在中央位置运行Qt软件开发的Linux主机。

在Windows框中,我将Xming用作本地X服务器,并使用腻子连接到该Linux主机。通过这种配置,我可以在Linux主机上使用所有X(xclock,xterm)和GLX(qtcreator,gxlinfo,glxgears ...)程序。

我的主工作站是带有nvidia gfx卡的ubuntu 14.04 LTS。当我使用“ ssh -p port#-YC my.dev.host.com”通过ubuntu系统连接到linux-host时,我也可以使用所有X程序(xclock,xterm),但不能使用 GLX程序(qtcreator,gxlinfo,glxgears ...)。

据我了解到这是因为X服务器不要支持间接GLX上下文默认情况下,年轻的版本1.16。

所以我的问题是:如何在ubuntu 14.04 LTS安装中启用间接GLX上下文(X服务器和nvidida驱动程序),以使X服务器正常工作。

感谢您的任何帮助!

cmks

这是glxgears的输出,可能有帮助:

root@my.dev.host.com:~# LIBGL_DEBUG=verbose glxgears 
libGL: screen 0 does not appear to be DRI2 capable
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
libGL: Can't open configuration file /root/.drirc: No such file or directory.
libGL: Can't open configuration file /root/.drirc: No such file or directory.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
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:  3 (X_GLXCreateContext)
  Value in failed request:  0x0
  Serial number of failed request:  35
  Current serial number in output stream:  37

Answers:


8

通过“ ssh -X”运行某些GL应用程序时,我遇到了类似的问题,并通过在/usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf中的xserver-command中添加“ + iglx”来解决了该问题。

[SeatDefaults]
# Dump core
xserver-command=X -core +iglx

之后,您可以重新启动或Ctrl-Alt-F1,然后登录并“重新启动sudo service lightdm”。

我希望这有帮助!


glxdemo,glxheads和glxinfo现在正在工作。glxgears开始,但仅显示第一帧。我想这与“同步到垂直刷新运行”有关。仍然有消息libGL error: No matching fbConfigs or visuals foundlibGL error: failed to load driver: swrast
cmks

libGL错误是由尝试使用DRI引起的。设置LIBGL_ALWAYS_INDIRECT=1禁止使用DRI,这样就不会出现错误消息。但用glxgears仍然只能说明一个框架
cmks

您的glxgears崩溃可能是:bugs.freedesktop.org/show_bug.cgi ? id=99555吗?看起来IGLX在Xorg中坏了大约一年了:(
Steve Dee

5

添加选项的另一种方法(且与显示管理器无关)是在/etc/X11/xorg.conf中添加以下部分:

Section "ServerFlags"
    Option "IndirectGLX" "on"
EndSection

每次重新启动时,我的xorg.conf都会被覆盖lightdm
ArcaneDominion

@ArcaneDominion将命令放在/usr/share/X11/xorg.conf.d中的文件中(至少在xubuntu 16.04上)
gerardw

1

我在运行自定义OpenGL程序时遇到了同样的问题ssh -X。上面的解决方案稍作修改即可工作

Section "ServerFlags"  
    Option "AllowIndirectGLX" "on"  
    Option "IndirectGLX" "on"  
EndSection  

这可与运行kubuntu-desktop的ubuntu 16.04服务器配合使用,并通过apt安装了NVIDIA GTX 1070 GPU和NVIDIA二进制驱动程序。


1
欢迎来到Ask Ubuntu!我建议编辑此答案以将其扩展为有关添加此位置的特定详细信息。(另请参阅“我如何编写一个好的答案?”,以获取有关在Ask Ask Ubuntu上认为哪种答案最有价值的一般建议。)
David Foerster

似乎正确的设置是Option "IndirectGLX" "on"。根据这个enableIndirectGLX必须求TRUE所以BadValue不会返回错误。默认值为:FALSE= -iglx(在命令行上)。设置+iglx以下选项之一:命令行选项,IndirectGLX "on"同等的“真实”值
TrinitronX

二进制驱动程序的Nvidia文档说AllowIndirectGLXProtocol,同一件事还有另一种选择。但是,他们的文档有些混乱,因为他们提到该BadValue错误将以其设置名称返回AllowIndirectGLXProtocol = "true"。这与他们后来所说的“ The NVIDIA GLX implementation will prohibit creation of indirect GLX contexts if AllowIndirectGLXProtocol option is set to False.” 完全相反,因此令人困惑,也许文档是错误的?
TrinitronX
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.