Проблема с OpenGL через соединение S SH - PullRequest
1 голос
/ 28 мая 2020

Я пытаюсь использовать программное обеспечение (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:

Проблема в том, что при подключении к удаленный сервер через S SH, 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 передается неправильно. Что мне делать, чтобы исправить эту проблему, которая не позволяет мне запускать программное обеспечение?

Ответы [ 2 ]

1 голос
/ 29 мая 2020

В контексте ParaView и pvserver вам необходимо использовать локальный дисплей, а не механизм «пересылки X11».

Не используйте -X или -Y при подключении а затем запустить DISPLAY=:0 glxinfo, DISPLAY=:0 pvserver. на вашем сервере

1 голос
/ 28 мая 2020

S SH туннели X11. GLX - это расширение протокола X11, которое выполняет OpenGL, а также протокол, который инкапсулирует вызовы OpenGL в X11, который затем туннелируется через S SH.

Вот что:

GLX подходит только к OpenGL-1.4 (https://www.khronos.org/registry/OpenGL/specs/gl/glx1.4.pdf стр. 49). Все остальное поддерживается только контекстами прямого рендеринга , а GLX используется только для настройки контекст, но с этого момента все, что связано с OpenGL-3.x и выше, обходит GLX и переходит непосредственно к драйверу.

Конечно, теоретически GLX можно обновить для поддержки OpenGL-3 и более поздних версий. Но никто не беспокоит.

Теперь вы можете запустить все на удаленном конце и передать только результат рендеринга. В идеале это могло бы быть сделано приложениями, создающими контекст OpenGL без X-less, без заголовка, а затем копирующими результат рендеринга в пиксельную карту X11 SHM (однако производительность в вашей типичной сети будет ужасной).

Я предпочитаю Решение использует Xpra, используя графический процессор на удаленном конце.

...