Cara mengaktifkan konteks GLX tidak langsung (+ iglx) di Ubuntu 14.04 LTS dengan nvidia gfx-cards

10

Saya menjalankan host linux untuk pengembangan perangkat lunak Qt di tempat sentral.

Dengan kotak windows saya, saya menggunakan Xming sebagai X-server lokal dan dempul untuk terhubung ke host-linux itu. Dengan konfigurasi ini saya dapat menggunakan semua program X (xclock, xterm) dan GLX (qtcreator, gxlinfo, glxgears ...) di linux-host.

Workstation utama saya adalah ubuntu 14.04 LTS dengan kartu nvidia gfx. Ketika saya terhubung ke linux-host dengan sistem ubuntu saya menggunakan "ssh -p port # -YC my.dev.host.com" Saya juga dapat menggunakan semua program X (xclock, xterm) program tetapi saya tidak dapat menggunakan program GLX (qtcreator, gxlinfo, glxgears ...).

Sejauh yang saya pelajari ini adalah karena X-server tidak mendukung konteks GLX tidak langsung secara default untuk versi yang lebih muda 1.16.

Jadi pertanyaan saya pertama: Bagaimana saya bisa mengaktifkan konteks GLX tidak langsung (X-server dan driver nvidida) di instalasi Ubuntu 14,04 LTS saya untuk mendapatkan hal-hal yang berfungsi seperti yang diharapkan dari X-server.

Terima kasih atas bantuannya!

cmks

Ini adalah output dari glxgears, mungkin itu membantu:

[email protected]:~# 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
cmks
sumber

Jawaban:

8

Saya memiliki masalah serupa ketika menjalankan beberapa aplikasi GL melalui 'ssh -X' dan menyelesaikannya dengan menambahkan "+ iglx" ke xserver-command di /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf .

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

Setelah itu Anda reboot atau Ctrl-Alt-F1, login, dan 'sudo service lightdm restart'.

Saya harap ini membantu!

Justin
sumber
glxdemo, glxhead, dan glxinfo berfungsi sekarang. glxgears dimulai tetapi hanya menampilkan bingkai pertama. Saya kira itu terkait dengan "Menjalankan disinkronkan dengan penyegaran vertikal." Masih ada pesan libGL error: No matching fbConfigs or visuals founddanlibGL error: failed to load driver: swrast
cmks
Kesalahan libGL disebabkan oleh mencoba menggunakan DRI. Pengaturan LIBGL_ALWAYS_INDIRECT=1melarang penggunaan DRI maka tidak ada pesan kesalahan. Tapi glxgears masih hanya menunjukkan satu frame
cmks
Mungkinkah glxgears Anda mogok: bugs.freedesktop.org/show_bug.cgi?id=99555 ? Sepertinya IGLX rusak di Xorg selama sekitar satu tahun :(
Steve Dee
5

Cara alternatif (dan tampilan-manajer-independen) untuk menambahkan opsi adalah dengan menambahkan bagian berikut ke /etc/X11/xorg.conf:

Section "ServerFlags"
    Option "IndirectGLX" "on"
EndSection
pengguna652430
sumber
Xorg.conf saya terus ditimpa setiap kali saya memulai ulang lightdm.
ArcaneDominion
@ArcaneDominion Letakkan perintah dalam file di /usr/share/X11/xorg.conf.d (setidaknya di xubuntu 16.04)
gerardw
1

Saya mengalami masalah yang sama dengan menjalankan program OpenGL khusus ssh -X. Solusi di atas bekerja dengan sedikit modifikasi

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

Ini bekerja dengan server ubuntu 16.04 yang menjalankan kubuntu-desktop dengan NVIDIA GTX 1070 GPU dan driver binary NVIDIA diinstal melalui apt.

Triradiate
sumber
1
Selamat Datang di Tanya Ubuntu! Saya sarankan untuk mengedit jawaban ini untuk memperluasnya dengan detail spesifik tentang di mana menambahkan ini. (Lihat juga Bagaimana cara menulis jawaban yang baik? Untuk saran umum tentang jenis jawaban apa yang dianggap paling berharga di Ask Ubuntu.)
David Foerster
Sepertinya pengaturan yang tepat Option "IndirectGLX" "on". Menurut ini , enableIndirectGLXharus dievaluasi TRUEagar BadValuekesalahan tidak dikembalikan. Standarnya adalah: FALSE= -iglx(pada baris perintah). Jadi, pada salah satu set: +iglxopsi baris perintah, ATAU IndirectGLX "on"atau nilai "kebenaran" yang setara
TrinitronX
Nvidia docs untuk driver biner mengatakan ada opsi lain AllowIndirectGLXProtocoluntuk hal yang sama. Namun, dokumen mereka agak membingungkan, karena mereka menyebutkan BadValuekesalahan akan dikembalikan dengan nama pengaturannya sebagai AllowIndirectGLXProtocol = "true". Ini benar-benar berlawanan dengan apa yang mereka katakan nanti. " The NVIDIA GLX implementation will prohibit creation of indirect GLX contexts if AllowIndirectGLXProtocol option is set to False." Jadi membingungkan, dan mungkin dokumen salah?
TrinitronX