Як включити непрямі контексти GLX (+ iglx) у Ubuntu 14.04 LTS за допомогою nvidia gfx-карт


10

Я працюю на Linux-хості для розробки Qt-програмного забезпечення на центральному місці.

У вікні Windows я використовую Xming як локальний X-сервер і шпаклівку для підключення до цього Linux-хоста. У цій конфігурації я можу використовувати всі програми X (xclock, xterm) та GLX (qtcreator, gxlinfo, glxgears ...) на Linux-хості.

Моя основна робоча станція - це ubuntu 14.04 LTS з карткою nvidia gfx. Коли я підключаюся до Linux-хоста зі своєю системою ubuntu за допомогою "ssh -p port # -YC my.dev.host.com", я також можу використовувати всі програми X (xclock, xterm), але я не можу використовувати програми GLX (qtcreator, gxlinfo, glxgears ...).

Наскільки я дізнався, це тому, що X-сервер не підтримує непрямі контексти GLX за замовчуванням для версії молодшої версії 1.16.

Отже, мої запитання ist: Як я можу включити непрямі контексти GLX (X-сервер і драйвер nvidida) в моїй установці ubuntu 14.04 LTS, щоб роботи працювали так, як очікувалося від X-сервера.

Дякую за будь-яку допомогу!

смкс

Ось вихід glxgears, можливо, це допомагає:

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

Відповіді:


8

У мене була подібна проблема під час запуску деяких GL-програм через 'ssh -X', і вирішив її, додавши "+ iglx" до команди xserver в /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf .

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

Після цього ви або перезавантажте або Ctrl-Alt-F1, увійдіть в систему і 'sudo service lightdm restart'.

Я сподіваюся, що це допомагає!


glxdemo, glxheads та glxinfo працюють зараз. glxgears починається, але показує лише перший кадр. Я думаю, що це пов'язано з "Запуск синхронізованим до вертикального оновлення". Є ще повідомлення libGL error: No matching fbConfigs or visuals foundтаlibGL error: failed to load driver: swrast
cmks

Помилки libGL викликані спробою використання DRI. Налаштування LIBGL_ALWAYS_INDIRECT=1забороняє використовувати DRI, тоді повідомлень про помилки немає. Але glxgears все ще показує лише один кадр
cmks

Чи можуть бути ваші збої glxgears: bugs.freedesktop.org/show_bug.cgi?id=99555 ? Схоже, IGLX розбився в Xorg близько року :(
Стів Ді

5

Альтернативним способом (і незалежним від менеджера дисплея) способу додавання параметрів є додавання наступного розділу до /etc/X11/xorg.conf:

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

Мій xorg.conf постійно перезаписується при кожному перезапуску lightdm.
ArcaneDominion

@ArcaneDominion Покладіть команди у файл у /usr/share/X11/xorg.conf.d (принаймні на xubuntu 16.04)
gerardw

1

У мене виникли ті самі проблеми, запускаючи власну програму OpenGL ssh -X. Вищевказане рішення працювало з незначною модифікацією

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

Це працювало з сервером ubuntu 16.04 під керуванням kubuntu-desktop з NVIDIA GTX 1070 GPU та бінарним драйвером NVIDIA, встановленим через apt.


1
Ласкаво просимо в Ask Ubuntu! Рекомендую відредагувати цю відповідь, щоб розширити її конкретними деталями про те, куди її додати. (Дивіться також Як я можу написати гарну відповідь? Для загальних порад про те, які типи відповідей вважаються найціннішими на Ask Ubuntu.)
Девід Фоерстер

Здається, правильна настройка є Option "IndirectGLX" "on". Згідно цього , enableIndirectGLXнеобхідно оцінити, TRUEтак що BadValueпохибка не повертається. За замовчуванням: FALSE= -iglx(у командному рядку). Отже, для будь-якого з наборів: +iglxпараметр командного рядка, АБО IndirectGLX "on"або еквівалентне значення "truthy"
TrinitronX

Документи Nvidia для двійкових драйверів кажуть, що є інший варіант AllowIndirectGLXProtocolдля тієї ж речі. Однак їхні документи дещо заплутані, оскільки вони згадують, що BadValueпомилка буде повернута з їх назвою налаштування як AllowIndirectGLXProtocol = "true". Це абсолютно протилежне тому, що вони говорять пізніше " The NVIDIA GLX implementation will prohibit creation of indirect GLX contexts if AllowIndirectGLXProtocol option is set to False." Так це заплутано, і, можливо, документи помиляються?
TrinitronX
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.