X11 meneruskan aplikasi OpenGL dari mesin yang menjalankan kartu NVIDIA ke mesin dengan kartu AMD

15

Saya tertarik meneruskan sesi X11 melalui SSH, untuk meluncurkan proses jarak jauh yang memanfaatkan OpenGL (khususnya, gazebo untuk siapa pun yang akrab).

Masalah yang sepertinya saya temui adalah gazebo crash karena ketidakcocokan dalam kartu grafis; tidak dapat menemukan ekstensi "NV-GLX". Output kesalahan yang tepat:

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

Mesin jarak jauh berjalan dengan kartu NVIDIA, dan mesin lokal saya menggunakan kartu AMD.

Saya telah menguji penerusan gazebo X11 antara dua mesin dengan kartu NVIDIA. Ini bekerja dengan baik.

Sejauh yang saya tahu, sepertinya satu dari tiga hal terjadi:

  1. Saya melakukan sesuatu yang salah,
  2. Apa yang ingin saya lakukan tidak mungkin,
  3. Gazebo tidak membangun dengan cara agnostik dengan codepath bercabang untuk perangkat keras yang berbeda; apa pun bentuk sistem Anda saat dibangun adalah apa yang Anda dapatkan.

Mesin jarak jauh menjalankan Ubuntu dan mesin lokal saya adalah Mac yang menjalankan 10.8.2; Saya sudah tahu bahwa saya memiliki penerusan x11 yang diatur dengan benar untuk penggunaan normal karena saya bisa mendapatkan hal-hal seperti xclock untuk dibuka di XQuartz baik-baik saja. Solusinya (jika ada) juga lebih disukai bekerja untuk OS lain termasuk Windows lebih dari WinSCP.

Doug Stephen
sumber

Jawaban:

9

Beberapa catatan dari artikel Wikipedia GLX :

GLX adalah perpanjangan dari protokol X, yang memungkinkan klien (aplikasi OpenGL) untuk mengirim perintah rendering 3D ke server X (perangkat lunak yang bertanggung jawab untuk tampilan). Perangkat lunak klien dan server dapat berjalan pada komputer yang berbeda.

dan

Jika klien dan server berjalan pada komputer yang sama dan kartu grafis 3D yang dipercepat menggunakan driver yang sesuai tersedia, dua komponen sebelumnya dapat dilewati oleh DRI. Dalam hal ini, aplikasi klien kemudian diizinkan untuk secara langsung mengakses perangkat keras video melalui beberapa lapisan API.

Saya percaya titik pertama menjawab pertanyaan Anda tentang apakah ini mungkin atau tidak: itu pasti mungkin. Yang kedua dapat memberikan penjelasan mengapa program klien Anda bersikeras menggunakan fitur server X lokalnya (driver NV GLX) - mungkin ia berpikir bahwa itu localhost:10.0adalah komputer yang sama, dan karenanya mencoba koneksi arah.

Hal yang harus dicoba:

  1. Alih-alih gazebo, coba glxdemo.
  2. Jika memungkinkan, dapatkan dua komputer di jaringan yang sama, dan keluarkan ssh dari gambar
  3. The big gun: doa straceAnda gazebo, dan cari tahu mengapa itu memuat nv-glx

Semoga berhasil!

ckhan
sumber
Komputer sudah berada di jaringan yang sama, tetapi kami ingin memindahkan semua mesin gazebo kami ke lemari server di beberapa titik tetapi masih memiliki visual perangkat lunak yang tersedia bagi kami yang mengapa saya melihat ke tunneling SSH. Kecuali Anda mengatakan bahwa memiliki mereka di jaringan yang sama memungkinkan untuk konfigurasi yang berbeda yang membuat SSH tidak perlu (Saya kira menyiapkan beberapa pengaturan xhost / klien gila, saya tidak tahu banyak tentang X11).
Doug Stephen
Tidak perlu ssh - jika ini semua jaringan pribadi Anda dari sistem tepercaya, coba xhost +pada mesin lokal Anda dan atur DISPLAY Anda pada sistem jarak jauh ke 'ip-atau-nama-lokal: 0`
ckhan
1
Saya tidak dapat mulai gazebobekerja, tetapi saya menandai ini sebagai jawaban yang diterima karena saran Anda secara teknis benar. Saya dapat melakukan tunnel glxdemomenggunakan semua saran yang Anda buat (ssh dan xserver / xclient melalui jaringan) tetapi Gazebo sendiri sepertinya tidak membangun jalur kode percabangan dan mengasumsikan bahwa itu tidak dapat dijalankan dalam konfigurasi aneh ini. Terima kasih!.
Doug Stephen
Ada web gazebo dan ini sangat menakjubkan, Anda dapat memulai server gazebo pada mesin jarak jauh (bahkan WAN), terowongan dengan ssh dan buka browser Anda untuk melihat gazebo di sana. Solusi terbaik yang pernah ada.
Mehdi