Nvidia gfx kartları ile Ubuntu 14.04 LTS'de dolaylı GLX bağlamları (+ iglx) nasıl etkinleştirilir


10

Merkezi bir yerde Qt-yazılım-geliştirme için bir linux-host çalıştırıyorum.

Windows kutumla, Xming'i linux-host'a bağlanmak için yerel bir X sunucusu ve macun olarak kullanıyorum. Bu yapılandırma ile linux-host'daki tüm X (xclock, xterm) ve GLX (qtcreator, gxlinfo, glxgears ...) programlarını kullanabilirim.

Benim ana iş istasyonum bir viduntu 14.04 LTS nvidia gfx kartı ile. Ben de "ssh -p port # -YC my.dev.host.com" kullanarak ubuntu-sistem ile linux-host bağlandığınızda kullanabilirsiniz tüm X programları (xclock, xterm) programları ama kullanamıyorum GLX programları (qtcreator, gxlinfo, glxgears ...).

Şunu öğrendim ki , X-server, daha genç 1.16 sürümü için varsayılan olarak dolaylı GLX bağlamlarını desteklemiyor.

Benim sorularım ist: ubuntu 14.04 LTS kurulumumda bir X sunucusundan beklendiği gibi çalışmasını sağlamak için dolaylı GLX bağlamlarını (X sunucusu ve nvidida sürücüsü) nasıl etkinleştirebilirim.

Herhangi bir yardım için teşekkürler!

CMKS

İşte glxgears çıktı, belki de yardımcı olur:

root@my.dev.host.com:~# LIBGL_DEBUG=verbose glxgears 
libGL: screen 0 does not appear to be DRI2 capable
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
libGL: Can't open configuration file /root/.drirc: No such file or directory.
libGL: Can't open configuration file /root/.drirc: No such file or directory.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  154 (GLX)
  Minor opcode of failed request:  3 (X_GLXCreateContext)
  Value in failed request:  0x0
  Serial number of failed request:  35
  Current serial number in output stream:  37

Yanıtlar:


8

Bazı GL uygulamalarını 'ssh -X' ile çalıştırırken de benzer bir sorun yaşadım ve /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf içindeki xserver komutuna "+ iglx" ekleyerek çözdüm. .

[SeatDefaults]
# Dump core
xserver-command=X -core +iglx

Bundan sonra yeniden başlatın veya Ctrl-Alt-F1, oturum açın ve 'sudo service lightdm restart'.

Umarım bu yardımcı olur!


glxdemo, glxheads ve glxinfo şimdi çalışıyor. glxgears başlar ancak yalnızca ilk kareyi gösterir. Sanırım "Dikey yenilemeyle senkronize çalışma" ile ilgili. Hala mesajlar var libGL error: No matching fbConfigs or visuals foundvelibGL error: failed to load driver: swrast
cmks

LibGL hatalarına DRI kullanmayı denemek neden olur. Ayarlama LIBGL_ALWAYS_INDIRECT=1, DRI kullanımını yasaklar, ardından hata mesajı yoktur. Ancak glxgears hala sadece bir çerçeve gösteriyor
cmks 17:16

Glxgears kilitlenmeniz şöyle olabilir: bugs.freedesktop.org/show_bug.cgi?id=99555 ? IGLX yaklaşık bir yıl boyunca Xorg'da kırılmış gibi görünüyor :(
Steve Dee

5

Seçenekleri eklemenin alternatif (ve görüntü yöneticisinden bağımsız) bir yolu /etc/X11/xorg.conf dosyasına aşağıdaki bölümü eklemektir:

Section "ServerFlags"
    Option "IndirectGLX" "on"
EndSection

Her yeniden başlattığımda xorg.conf dosyamın üzerine yazılıyor lightdm.
ArcaneDominion

@ArcaneDominion Komutları /usr/share/X11/xorg.conf.d içindeki bir dosyaya yerleştirin (en azından
xubuntu 16.04'te

1

Özel bir OpenGL programını çalıştırırken de aynı sorunu yaşıyordum ssh -X. Yukarıdaki çözüm küçük bir değişiklikle çalıştı

Section "ServerFlags"  
    Option "AllowIndirectGLX" "on"  
    Option "IndirectGLX" "on"  
EndSection  

Bu, NVIDIA GTX 1070 GPU ve NVIDIA ikili sürücüsünün apt yoluyla yüklendiği kubuntu-masaüstü çalıştıran ubuntu 16.04 sunucusuyla çalıştı.


1
Ubuntu'ya Sor hoş geldiniz! Bu yanıtı, nereye ekleyeceğinizle ilgili belirli ayrıntılarla genişletmek için düzenlemenizi öneririz . ( Ask Ubuntu'da ne tür cevapların en değerli olduğu hakkında genel tavsiye için nasıl iyi bir cevap yazarım? Konusuna bakın.)
David Foerster

Doğru ayar gibi görünüyor Option "IndirectGLX" "on". Göre bu , enableIndirectGLXhiç değerlendirmek gerekir TRUEböylece BadValuehata döndürülmez. Varsayılan: FALSE= -iglx(komut satırında). Her iki kümeden birinde: +iglxkomut satırı seçeneği, VEYA IndirectGLX "on"veya eşdeğer "doğruluk" değeri
TrinitronX

İkili sürücüler için Nvidia belgeleri AllowIndirectGLXProtocol, aynı şey için başka bir seçenek olduğunu söylüyor . Bununla birlikte, dokümanları biraz kafa karıştırıcıdır, çünkü BadValuehatanın ayar adıyla döndürüleceğinden bahsederler AllowIndirectGLXProtocol = "true". Bu daha sonra söylediklerinin tamamen tersidir " The NVIDIA GLX implementation will prohibit creation of indirect GLX contexts if AllowIndirectGLXProtocol option is set to False." Yani kafa karıştırıcı ve belki de dokümanlar yanlış mı?
TrinitronX
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.