X11, bir OpenGL uygulamasını NVIDIA kartı çalıştıran bir makineden AMD kartı olan bir makineye iletiyor


15

OpenGL (özellikle tanıdık herkes için çardak) kullanan uzak bir işlemi başlatmak için SSH üzerinden bir X11 oturumu iletmekle ilgileniyorum .

Karşılaştığım sorun, grafik kartlarındaki uyumsuzluk nedeniyle çardak çöküyor; "NV-GLX" uzantılarını bulamıyor. Kesin hata çıkışı:

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

Uzak makine bir NVIDIA kartı ile çalışıyor ve yerel makinem bir AMD kartı kullanıyor.

NVIDIA kartlı iki makine arasında X11'in çardak iletimini test ettim. Sadece iyi çalışıyor.

Anlayabildiğim kadarıyla, üç şeyden biri oluyor gibi görünüyor:

  1. Yanlış bir şey yapıyorum,
  2. Yapmak istediğim imkansız,
  3. Gazebo, farklı donanımlar için dallanma kod yolları ile agnostik bir şekilde inşa edilmez; sisteminiz ne zaman oluşturulur gibi görünüyorsa onu elde edersiniz.

Uzak makine Ubuntu çalıştırıyor ve yerel makinem 10.8.2 çalıştıran bir Mac; Zaten XQuartz açmak için xclock gibi şeyler alabilirsiniz gibi normal kullanım için düzgün ayarlanmış x11 yönlendirme var biliyorum. Çözüm (varsa) tercihen WinSCP üzerinden Windows da dahil olmak üzere diğer işletim sistemleri için de çalışır.

Yanıtlar:


9

GLX Wikipedia makalesinden birkaç not :

GLX [is] X protokolünün bir uzantısıdır ve istemcinin (OpenGL uygulaması) X sunucusuna (ekrandan sorumlu yazılım) 3B oluşturma komutları göndermesine izin verir. İstemci ve sunucu yazılımı farklı bilgisayarlarda çalışabilir.

ve

İstemci ve sunucu aynı bilgisayarda çalışıyorsa ve uygun bir sürücü kullanan hızlandırılmış bir 3D grafik kartı mevcutsa, önceki iki bileşen DRI tarafından atlanabilir. Bu durumda, istemci uygulamasının birkaç API katmanı aracılığıyla video donanımına doğrudan erişmesine izin verilir.

İlk nokta, bunun mümkün olup olmadığı hakkındaki sorunuza cevap verdiğine inanıyorum: kesinlikle mümkün olmalı. İkincisi, istemci programınızın neden yerel X sunucusunun (NV GLX sürücüsü) özelliklerini kullanmakta ısrar ettiğine dair bir açıklama sağlayabilir - belki de localhost:10.0aynı bilgisayar olduğunu düşünür ve bu nedenle bir yön bağlantısı denedi.

Denenecek şeyler:

  1. Bunun yerine gazebodeneyin glxdemo.
  2. Mümkünse, aynı ağdaki iki bilgisayarı alın ve resimden ssh çıkarın
  3. Büyük silah: stracesizin gazeboçağrınız ve nv-glx'in neden yüklendiğini anlayın

İyi şanslar!


Bilgisayarlar zaten aynı ağda, ancak tüm çardak makinelerimizi bir noktada bir sunucu dolabına taşımak istiyoruz, ancak yine de yazılımın görsellerini bize sunuyoruz, bu yüzden SSH tüneline bakıyorum. Aynı ağda onlara sahip olmanın SSH'yi gerekli olmayan farklı bir yapılandırmaya izin verdiğini söylemediğiniz sürece (bazı çılgın xhost / istemci kurulumunu ayarladığımı tahmin ediyorum, X11 hakkında fazla bir şey bilmiyorum).
Doug Stephen

Ssh'a gerek yok - tüm bu özel güvenilir sistem ağınız varsa xhost +, yerel makinenizi deneyin ve uzak sistemdeki
EKRANınızı

1
Çalışamadım gazebo, ancak önerileriniz teknik olarak doğru olduğu için bunu kabul edilen cevap olarak işaretliyorum. glxdemoYaptığınız tüm önerileri (ağ üzerinden ssh ve xserver / xclient) kullanarak tünel açabiliyorum ama Gazebo kendisi sadece dallanma kodu yolları oluşturmuyor gibi görünüyor ve bu garip yapılandırmada çalıştırılmadığını varsayar. Teşekkürler!.
Doug Stephen

Gazebo web var ve gerçekten şaşırtıcı, uzak bir makinede (hatta WAN) bir gazebo sunucusu başlatabilir, ssh ile tünel açabilir ve orada çardak görmek için tarayıcınızı açabilirsiniz. Şimdiye kadarki en iyi çözüm.
Mehdi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.