X11 переадресация приложения OpenGL с компьютера, на котором установлена ​​карта NVIDIA, на машину с картой AMD

Я заинтересован в пересылке сеанса X11 через SSH, чтобы запустить удаленный процесс, который использует OpenGL (в частности, беседу для любого знакомого).

Проблема, с которой я, похоже, сталкиваюсь, заключается в том, что gazebo падает из-за несоответствия графических карт; он не может найти расширения «NV-GLX». Точный вывод ошибки:

Xlib: extension "NV-GLX" missing on display "localhost:10.0". Xlib: extension "NV-GLX" missing on display "localhost:10.0". X Error of failed request: GLXUnsupportedPrivateRequest Major opcode of failed request: 149 (GLX) Minor opcode of failed request: 16 (X_GLXVendorPrivate) Serial number of failed request: 24 Current serial number in output stream: 25 

Удаленная машина работает с картой NVIDIA, а на моей локальной машине используется карта AMD.

Я протестировал X11 пересылку беседки между двумя машинами с картами NVIDIA. Он работает отлично.

Насколько я могу судить, кажется, что происходит одна из трех вещей:

  1. Я делаю что-то неправильно,
  2. То, что я хочу сделать, невозможно,
  3. Беседа не строится агностически с ветвящимися кодексами для разных аппаратных средств; независимо от того, как выглядит ваша система при ее создании, вы получаете.

Я действительно надеюсь, что это №1, и я действительно надеюсь, что кто-то здесь поможет мне. Если это имеет значение, на удаленном компьютере работает Ubuntu, а мой локальный компьютер – Mac с 10.8.2; Я уже знаю, что у меня есть x11 пересылка настроена правильно для нормального использования, так как я могу получить такие вещи, как xclock, чтобы открыть в XQuartz просто отлично. Решение (если оно существует) также будет предпочтительно работать для других ОС, включая Windows поверх WinSCP.

Несколько заметок из статьи в Википедии GLX :

GLX [is] Расширение протокола X, которое позволяет клиенту (приложение OpenGL) отправлять команды 3D-рендеринга на X-сервер (программное обеспечение, отвечающее за отображение). Клиентское и серверное программное обеспечение может работать на разных компьютерах.

а также

Если клиент и сервер работают на одном компьютере, и имеется ускоренная 3D-видеокарта с использованием подходящего драйвера, первые два компонента могут быть обойдены DRI. В этом случае клиентскому приложению разрешается напрямую обращаться к видеооборудованию через несколько уровней API.

Я считаю, что кулачный пункт отвечает на ваш вопрос о том, возможно ли это или нет: это, безусловно, возможно. Второй может дать объяснение, почему ваша клиентская программа настаивает на использовании функций своего локального X-сервера (NV GLX-драйвера) – возможно, он считает, что localhost:10.0 – это тот же компьютер и поэтому попытался установить направление.

Что нужно попробовать:

  1. Вместо gazebo , попробуйте glxdemo .
  2. Если возможно, получите два компьютера в одной сети и выньте ssh из картинки
  3. Большая пушка: strace свой вызов в gazebo и выясните, почему она загружает nv-glx

Удачи!