Как включить косвенные контексты GLX (+ iglx) в Ubuntu 14.04 LTS с gvx-картами nvidia


10

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

С моей коробкой Windows я использую Xming как локальный X-сервер и замазку для подключения к этому linux-хосту. С этой конфигурацией я могу использовать все программы X (xclock, xterm) и GLX (qtcreator, gxlinfo, glxgears ...) на linux-host.

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

Насколько я понял, это связано с тем, что X-сервер по умолчанию не поддерживает косвенный контекст GLX для младшей версии 1.16.

Итак, мои вопросы: как я могу включить косвенные контексты GLX (X-сервер и драйвер nvidida) в моей установке Ubuntu 14.04 LTS, чтобы все работало так, как ожидалось от X-сервера.

Спасибо за любую помощь!

ČMKS

Вот вывод 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.

Надеюсь, это поможет!


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 и двоичным драйвером NVIDIA, установленным через apt.


1
Добро пожаловать в Спросите Ubuntu! Я рекомендую отредактировать этот ответ, чтобы дополнить его конкретными сведениями о том, куда добавить это. (См. Также Как написать хороший ответ? Для общего совета о том, какие ответы считаются наиболее ценными в Ask Ubuntu.)
Дэвид Фёрстер

Похоже, правильная настройка Option "IndirectGLX" "on". В соответствии с этим , enableIndirectGLXнеобходимо оценить, TRUEтак что BadValueошибки не возвращаются. По умолчанию: FALSE= -iglx(в командной строке). Так что либо из набора: +iglxопция командной строки, ИЛИ IndirectGLX "on"или эквивалентное «истинное» значение
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.