如何使用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 found和libGL 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.