运行 Mac Pro、OS X El Capitan 10.11.4、ATI Radeon 显卡和 XQuartz v 2.7.9
我可以在我的计算机上完美地运行 qdec 和 freeview。当我尝试通过 SSH 进入 Ubuntu 12.04(Nvidia GeForce GTX 650)计算机并使用这些程序时,出现了问题(以前运行正常,但我想知道我们的配置现在是否发生了变化)
通过 ssh 进入 Ubuntu 机器后出现以下错误。
[myuser@ubuntu-machine:~] freeview
Xlib: extension "NV-GLX" missing on display "localhost:10.0".
X Error: BadValue (integer parameter out of range for operation) 2
Extension: 150 (Uknown extension)
Minor opcode: 3 (Unknown request)
Resource id: 0x0
Abort (core dumped)
[myuser@ubuntu-machine:~] qdec
Xlib: extension "NV-GLX" missing on display "localhost:10.0".
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 150 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 1504
Current serial number in output stream: 1505
根据我有限的知识,这似乎是 X/SSH 和显卡的问题,但我不确定如何继续。如果有人知道如何克服这个问题,我将不胜感激!
Ubuntu 机器本身也有一个显示器,并且可以在本地顺利运行 qdec 和 freeview,没有任何问题。问题似乎发生在 SSH 上。Ubuntu 机器上的某些程序可以通过这种方式正常工作(但它们在后台终端中大声抱怨 X)
Mac 最近更新了 XQuartz,但我不完全确定这个问题是否在更新之前发生过。
我们尝试过ssh -y
但是返回了相同的错误。
我们也export LIBGL_ALWAYS_INDIRECT=1
通过 SSH 进入 Ubuntu 机器,但仍然出现同样的错误。
官方问题:这些错误是什么意思,我该如何修复?
答案1
这似乎是 XQuartz 的问题。显然他们严重人手不足,几乎没有时间维持该项目的正常运行。如果您也遇到此问题,请尝试恢复到 XQuartz 2.7.8,因为此方法对错误报告中的某人有效。
您的其他选择可能是使用 VNC,正如 Amias Channer 所建议的那样。
https://bugs.freedesktop.org/show_bug.cgi?id=93953#c6
根据 XQuartz 的首席开发人员的说法:
鉴于问题出在间接渲染上,它要么是 XQuartz 中 xorg-server 的更改,要么是远程系统上的 libGL 或 X11 堆栈的更改。我的直觉是远程 libGL 发生了变化,并且 XQuartz 的 IGLX 支持中可能也发生了变化。如果您可以尝试运行旧版本的 XQuartz 以查看它是否与旧版本的 XQuartz 兼容,那么这可能表明可以进行更改以使其再次运行。尽管正如我所提到的,IGLX 总体上是依靠生命支持的,而不仅仅是在 XQuartz 中。
和:
是的,正如我在错误报告中提到的,这类问题不太可能很快得到修复,因为没有多少人参与该项目。我每个月大概只有 2-3 个小时,这刚好够我提取安全修复程序、进行一些测试并发送更新。在我们的直接渲染路径中添加对 OpenGL Core 的支持比我能承担的工作要多。您要求的是将其添加到间接渲染路径,而这更不可能发生。Xorg 正在积极弃用 AIGLX,甚至将其从默认配置中删除,因此我怀疑那里的解决方案将是完全删除对 AIGLX 的支持。
答案2
NV-GLX 表明正在寻求 NVIDIA OpenGL 加速
这意味着 ubuntu 机器正在尝试为其桌面寻找 3D 加速。
对于这些应用程序来说,通过远程显示 ssh X 转发似乎不起作用。
您需要使用 RDP 或 VNC 之类的工具来显示加速后的图像。
答案3
基于此关联您是否在本地 Mac OS X 上尝试过以下操作?
defaults write org.macosforge.xquartz.X11 enable_iglx -bool true
看来 XQuartz 默认不支持间接 GLX。