Как я могу xforwarding приложения openGL с сервера

У меня есть сервер с графической картой nvidia, и я хочу запустить некоторые приложения openGL и перенаправить отображение клиенту.

Как я могу это достичь? В настоящее время я еще не установил X Window System.

Всего 1 ответ


X, означает, что все команды рендеринга инкапсулируются в транспорт X и передаются на устройство с дисплеем и выполняются там. Поверхность заключается в том, что удаленный конец не требует GPU. Недостатком является то, что он потребляет (а, скорее, поглощает) большую пропускную способность сети.

OpenGL до версии 2.1 указывает коды операций GLX для транспорта X11, поэтому прозрачность сети. И если вы используете либеральное использование списков отображения и сохраняете небольшой объем данных (т. Е. Нет вершинного массива на стороне клиента, только несколько и немного текстур), OpenGL-over-GLX-over-X11-over-TCP работает довольно хорошо.

Однако в наши дни более эффективно удалять удаленно и передавать только сгенерированное изображение с помощью высокоэффективного компрессионного кодека. Однако простая переадресация X11 не может этого сделать. Но вы можете сделать это, используя Xpra поддерживаемый «истинным» X-сервером, разговаривая с фактическим графическим процессором. Проблема в том, что вам понадобится этот X-сервер для захвата графического процессора.

Лучший способ - обнаружить, есть ли расширение GLX, и если нет, если вокруг есть GPU и использовать его для рендеринга в XMHM pixmap. Таким образом, будет работать Xpra на виртуальном сервере фреймбуфера. К сожалению, делать это позже с OpenGL досадно сложно реализовать в некотором смысле, что он работает прозрачно в контексте API создания контекста. Это можно сделать (BT; DT), но на самом деле для такого рода вещей я действительно предпочитаю Vulkan, потому что, несмотря на многословие Вулкана, требуется меньше работы, чтобы надежно работать с Vulkan, чем с OpenGL.

Возможно (вряд ли) мы увидим расширение X11 для сжатой передачи pixmaps, некоторого высокого сжатия XV или подобного. Это, в сочетании с чистым внеэкранным графическим рендерингом (у нас уже есть), обеспечит гораздо более эффективную систему.


Есть идеи?

10000