通过SSH连接的OpenGL问题

问题描述 投票:1回答:2

我正在尝试以客户端/服务器模式使用软件(Paraview),在我的台式机(Linux,Debian 10)上打开客户端,并在远程服务器(Linux,CentOS 8)上进行大量计算。该软件需要OpenGL 3.2或更高版本的实现,并且从下面显示的glxinfo命令的输出中可以看到我的计算机上安装的软件是否可以正常运行:

myaccount@desktopmachine:$ glxinfo | grep OpenGL
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: *GeForce GTX 650 Ti BOOST/PCIe/SSE2 OpenGL core*
profile version string: 4.6.0 NVIDIA 440.82 OpenGL core profile
shading language version string: 4.60 NVIDIA OpenGL core profile
context flags: (none) OpenGL core profile profile mask: core profile
OpenGL core profile extensions: OpenGL version string: 4.6.0 NVIDIA
440.82 OpenGL shading language version string: 4.60 NVIDIA OpenGL context flags: (none) OpenGL profile mask: (none) OpenGL extensions:
OpenGL ES profile version string: **OpenGL ES 3.2** NVIDIA 440.82 OpenGL
ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:

问题是,当通过SSH连接到远程服务器时,由同一命令生成的OpenGL为:

myaccount@server:$ glxinfo | grep "OpenGL"
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: *GeForce GTX 650 Ti BOOST/PCIe/SSE2 OpenGL*
version string: **1.4** (2.1.2 NVIDIA 440.82) OpenGL extensions:

所以看起来OpenGL版本没有正确传输。我该怎么办才能解决不允许我运行该软件的问题?

linux opengl opengl-es paraview
2个回答
1
投票

SSH隧道X11。 GLX是执行OpenGL的X11协议扩展,也是将OpenGL调用封装到X11中的协议,然后将其通过SSH隧道传输。]

现在这是东西:

GLX仅适用于OpenGL-1.4(https://www.khronos.org/registry/OpenGL/specs/gl/glx1.4.pdf第49页。

超出此限制的所有内容仅受direct rendering上下文支持,并且GLX仅用于设置上下文,但从此开始,与OpenGL-3.x及更高版本相关的所有内容都会绕过GLX,直接进入驱动程序。

当然,理论上可以对GLX进行更新以支持OpenGL-3和更高版本。但是没有人打扰。

您现在的选择是在远端运行所有内容,仅传输渲染结果。理想情况下,这是通过应用程序创建无X,无头OpenGL上下文,然后将渲染结果复制到X11 SHM像素图上来完成的(但是,在典型的网络上,性能将很糟糕)。

我的首选解决方案是使用Xpra,并使用远端的GPU。


0
投票

在ParaView和pvserver的上下文中,您需要使用本地显示,而不是“ X11转发”机制。

© www.soinside.com 2019 - 2024. All rights reserved.