Comment activer les contextes indirects GLX (+ iglx) dans Ubuntu 14.04 LTS avec les cartes gfx nvidia

10

J'exécute un hôte Linux pour le développement de logiciels Qt à un endroit central.

Avec ma boîte Windows, j'utilise Xming en tant que serveur X local et mastic pour me connecter à cet hôte Linux. Avec cette configuration, je peux utiliser tous les programmes X (xclock, xterm) et GLX (qtcreator, gxlinfo, glxgears ...) sur l'hôte linux.

Mon poste de travail principal est un ubuntu 14.04 LTS avec une carte nvidia gfx. Lorsque je me connecte à l'hôte linux avec mon système ubuntu en utilisant "ssh -p port # -YC my.dev.host.com", je peux également utiliser tous les programmes X (xclock, xterm) mais je ne peux pas utiliser les programmes GLX (qtcreator, gxlinfo, glxgears ...).

Pour autant que j'ai appris cela, c'est parce que le serveur X ne prend pas en charge les contextes indirects GLX par défaut pour la version plus récente 1.16.

Donc, mes questions sont: comment puis-je activer les contextes indirects GLX (serveur X et pilote nvidida) dans mon installation ubuntu 14.04 LTS pour que les choses fonctionnent comme prévu à partir d'un serveur X.

Merci pour toute aide!

cmks

Voici la sortie de glxgears, peut-être que cela aide:

[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
la source

Réponses:

8

J'ai eu un problème similaire lors de l'exécution de certaines applications GL via 'ssh -X' et je l'ai résolu en ajoutant "+ iglx" à xserver-command dans /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf .

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

Après quoi, vous redémarrez ou Ctrl-Alt-F1, connectez-vous et «sudo service lightdm restart».

J'espère que ça aide!

Justin
la source
glxdemo, glxheads et glxinfo fonctionnent maintenant. glxgears démarre mais n'affiche que la première image. Je suppose que cela est lié à «Exécution synchronisée avec le rafraîchissement vertical». Il y a toujours les messages libGL error: No matching fbConfigs or visuals foundetlibGL error: failed to load driver: swrast
cmks
Les erreurs libGL sont causées par la tentative d'utilisation de DRI. Le réglage LIBGL_ALWAYS_INDIRECT=1interdit l'utilisation de DRI alors il n'y a aucun message d'erreur. Mais glxgears n'affiche qu'une seule image
cmks
Votre glxgears pourrait-il se bloquer: bugs.freedesktop.org/show_bug.cgi?id=99555 ? On dirait que IGLX est cassé à Xorg depuis environ un an :(
Steve Dee
5

Une manière alternative (et indépendante du gestionnaire d'affichage) d'ajouter les options consiste à ajouter la section suivante à /etc/X11/xorg.conf:

Section "ServerFlags"
    Option "IndirectGLX" "on"
EndSection
user652430
la source
Mon xorg.conf continue d'être écrasé à chaque redémarrage lightdm.
ArcaneDominion
@ArcaneDominion Placer les commandes dans un fichier dans /usr/share/X11/xorg.conf.d (au moins sur xubuntu 16.04)
gerardw
1

J'avais le même problème lors de l'exécution d'un programme OpenGL personnalisé ssh -X. La solution ci-dessus a fonctionné avec une légère modification

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

Cela a fonctionné avec le serveur ubuntu 16.04 exécutant kubuntu-desktop avec le GPU NVIDIA GTX 1070 et le pilote binaire NVIDIA installé via apt.

Triradiate
la source
1
Bienvenue sur Ask Ubuntu! Je recommande de modifier cette réponse pour la développer avec des détails spécifiques sur l'endroit où l'ajouter. (Voir aussi Comment écrire une bonne réponse? Pour des conseils généraux sur les types de réponses considérées comme les plus utiles sur Ask Ubuntu.)
David Foerster
On dirait que le bon réglage est Option "IndirectGLX" "on". Selon cela , enableIndirectGLXdoit évaluer pour TRUEque l' BadValueerreur ne soit pas renvoyée. La valeur par défaut est: FALSE= -iglx(sur la ligne de commande). Donc, sur l'un ou l'autre ensemble: +iglxoption de ligne de commande, OR IndirectGLX "on"ou valeur équivalente "vérité"
TrinitronX
Les documents Nvidia pour les pilotes binaires indiquent qu'il existe une autre option AllowIndirectGLXProtocolpour la même chose. Cependant, leurs documents sont quelque peu déroutants, car ils mentionnent que l' BadValueerreur sera renvoyée avec leur nom de paramètre comme AllowIndirectGLXProtocol = "true". C'est complètement à l'opposé de ce qu'ils disent plus tard. " The NVIDIA GLX implementation will prohibit creation of indirect GLX contexts if AllowIndirectGLXProtocol option is set to False." C'est donc déroutant, et peut-être que les documents sont faux?
TrinitronX