X11 inoltra un'applicazione OpenGL da una macchina che esegue una scheda NVIDIA a una macchina con una scheda AMD


15

Sono interessato a inoltrare una sessione X11 su SSH, al fine di avviare un processo remoto che utilizza OpenGL (in particolare, gazebo per chiunque abbia familiarità.)

Il problema che mi sembra di incontrare è che il gazebo si blocca a causa di una discrepanza nelle schede grafiche; non riesce a trovare le estensioni "NV-GLX". L'output esatto dell'errore:

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

Il dispositivo remoto funziona con una scheda NVIDIA e il mio dispositivo locale utilizza una scheda AMD.

Ho testato l'inoltro X11 del gazebo tra due macchine con schede NVIDIA. Funziona bene.

Per quanto posso dire, sembra che stia succedendo una di queste tre cose:

  1. Sto facendo qualcosa di sbagliato
  2. Quello che voglio fare è impossibile,
  3. Gazebo non costruisce in modo agnostico con ramificazioni di codici separati per hardware diverso; qualunque cosa assomigli al tuo sistema quando si crea è quello che ottieni.

Il computer remoto esegue Ubuntu e il mio computer locale è un Mac con 10.8.2; So già che ho l'inoltro x11 impostato correttamente per l'uso normale in quanto posso ottenere cose come xclock da aprire in XQuartz bene. La soluzione (se esiste) funzionerebbe anche preferibilmente per altri sistemi operativi tra cui Windows su WinSCP.

Risposte:


9

Alcune note dall'articolo Wikipedia di GLX :

GLX [è] Un'estensione del protocollo X, che consente al client (l'applicazione OpenGL) di inviare comandi di rendering 3D al server X (il software responsabile della visualizzazione). Il software client e server può essere eseguito su computer diversi.

e

Se il client e il server sono in esecuzione sullo stesso computer ed è disponibile una scheda grafica 3D accelerata che utilizza un driver adatto, i due componenti precedenti possono essere bypassati dal DRI. In questo caso, l'applicazione client può quindi accedere direttamente all'hardware video attraverso diversi livelli API.

Credo che il pugno risponda alla tua domanda se questo sia possibile o meno: dovrebbe certamente essere possibile. Il secondo può fornire una spiegazione del perché il programma client insiste sull'uso delle funzionalità del suo server X locale (il driver NV GLX) - forse pensa che localhost:10.0sia lo stesso computer e quindi ha tentato una connessione direzionale.

Cose da provare:

  1. Invece di gazeboprovare glxdemo.
  2. Se possibile, ottenere i due computer sulla stessa rete e togliere ssh dall'immagine
  3. La grande pistola: la stracetua gazeboinvocazione e scopri perché sta caricando nv-glx

In bocca al lupo!


I computer sono già sulla stessa rete, ma a un certo punto vorremmo spostare tutte le nostre macchine gazebo in un armadio del server, ma abbiamo ancora le immagini del software a nostra disposizione, motivo per cui sto guardando al tunneling SSH. A meno che tu non stia dicendo che averli sulla stessa rete consente una diversa configurazione che rende SSH non necessario (sto indovinando la configurazione di una configurazione pazza di xhost / client, non so molto su X11).
Doug Stephen,

Non c'è bisogno di ssh - se questa è tutta la tua rete privata di sistemi fidati, prova xhost +sul tuo computer locale e imposta il DISPLAY sul sistema remoto su 'ip-o-name-of-local: 0`
ckhan

1
Non sono riuscito a mettermi gazeboal lavoro, ma lo segnerò come risposta accettata perché i tuoi suggerimenti erano tecnicamente corretti. Sono in grado di eseguire il tunneling glxdemousando tutti i suggerimenti che hai fatto (ssh e xserver / xclient sulla rete) ma Gazebo stesso sembra non creare percorsi di codice ramificati e presume che non sia eseguito in questa strana configurazione. Grazie!.
Doug Stephen,

C'è un gazebo web ed è davvero sorprendente, puoi avviare un server gazebo su una macchina remota (anche WAN), tunnel con ssh e aprire il tuo browser per vedere il gazebo lì. La migliore soluzione di sempre.
Mehdi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.