[我们试图通过Nvidia GPU和驱动程序在远程Ubuntu服务器上运行glxinfo
和glxgears
,同时通过XQuartz将显示转发到本地Mac。
[我们已经注意到OpenGL使用不同的渲染器(专用GPU与板载图形),具体取决于是通过Mac上的ssh -X
还是通过远程sudo /usr/bin/X
内部的per this tutorial启动远程X服务器。
案例1
如果我们在服务器上执行sudo /usr/bin/X :0 &
,然后在DISPLAY=:0 glxinfo |grep -i OpenGL
上执行,则OpenGL渲染器将指向我们想要的NVIDIA GPU:
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 418.67
但是DISPLAY=:0 glxgears
显然会在名为Display 0的远程X服务器上呈现glxgears
,这与在Mac上运行ssh -X
时启动的远程X服务器不同(根据情况2)。
这意味着我们无法看到转发的输出,因为XQuartz未连接到Display 0。
案例2
[当我们在Mac上通过ssh -X -i ~/.ssh/publickey [email protected]
在远程计算机上通过some.ip
创建显示,然后运行glxinfo | grep -i OpenGL
时,OpenGL渲染器将指向板载图形:
OpenGL renderer string: AMD Radeon Pro 560 OpenGL Engine
我们可以在遥控器上运行echo $DISPLAY
,并且注意到该X服务器(通常)称为Display 10。
因此,运行DISPLAY=:10 glxgears
或仅运行glxgears
确实允许我们将齿轮转发到Mac端XQuartz客户端,但是通过远程计算机的机载图形进行渲染很慢。
为什么在这两种情况下X服务器会选择不同的OpenGL渲染器?它们不是都通过/etc/X11/xorg.conf
进行配置吗?
运行ssh -X
时是否有强制XQuartz连接到特定显示器的方法?谢谢!
在XQuartz中
$ xhost +$ ssh -Y用户名@服务器
xauth必须安装在服务器上