Problèmes avec OpenGL

Bonjour,

J’ai un problème avec Opengl depuis quelques temps.
J’ai ouvert un bug sur le github de Bumblebee mais je n’ai actuellement aucune réponses et ce problème est handicapant.

Pour résumer j’ai un laptop avec une Nvidia GT330M

sudo lspci |grep VGA
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller
01:00.0 VGA compatible controller: NVIDIA Corporation GT216M [GeForce GT 330M] (rev ff)

Mais cette carte n’est plus dans les derniers drivers, je dois donc installer le paquet “nvidia-legacy-340xx-driver” et je ne peut donc pas installer le paquet “bumblebee-nvidia” car celui-ci installe le dernier driver Nvidia.
J’ai donc installé le paquet “bumblebee” et modifié le fichier “/etc/bumblebee/bumblebee.conf” pour entrer les chemins en dur car sinon le démon bumblebee ne démarrait pas

 [driver-nvidia]
# Module name to load, defaults to Driver if empty or unset
#KernelDriver=nvidia-legacy-340xx
KernelDriver=nvidia
PMMethod=auto
# colon-separated path to the nvidia libraries
LibraryPath=/usr/lib/x86_64-linux-gnu/nvidia/legacy-340xx:/usr/lib/i386-linux-gnu/nvidia/legacy-340xx:/usr/lib/nvidia/legacy-340xx
# comma-separated path of the directory containing nvidia_drv.so and the
# default Xorg modules path
XorgModulePath=/usr/lib/nvidia/legacy-340xx,/usr/lib/xorg/modules
XorgConfFile=/etc/bumblebee/xorg.conf.nvidia

Mais quand j’essaye de lancer une appli (avec ou sans bumblebee d’ailleurs) j’ai le message

/usr/bin/glxgears 
Xlib:  extension "GLX" missing on display ":0".
Error: couldn't get an RGB, Double-buffered visual

La commande glxinfo me donne

name of display: :0
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Error: couldn't find RGB GLX visual or fbconfig
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".

Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".

J’ai essayé de réinstaller via “apt install --reinstall” des paquets comme “libgles1-mesa” mais ça n’a rien changé.

Du coup ça fait presque un mois que je suis sans rendu OpenGL j’essaye des choses de temps en temps mais j’ai épuisé les topics traitants de ce problème et pas moyen de me débloquer.

Un peu d’aide serait bienvenue.

En vrac :

  • tu es vraiment sûr d’en être déjà aux legacy ? Est-ce que le “dernier driver” ne passerait pas quand même ?

  • Pour Googleearth, lui aussi télécharge le dernier… SAUF s’il trouve dans le répertoire où tu travailles une autre version, qu’alors il préfère ; n’y aurait-il pas pour Bumblebee et le driver Nvidia une disposition du même ordre ? Je dis cela au hasard, mais ce serait bien…

  • Là visiblement pas de GLX, donc aucun driver Nvidia ; est-ce qu’il ne serait pas imaginable de commencer par ne traiter que la question Nvidia et de réussir à en installer un, n’importe lequel, sans s’occuper de Bumblebee ; ensuite on peut voir à restaurer une procédure complète, c’est-à-dire que tout se fasse sous l’égide de Bumblebee ou Bumblebee-nvidia.

  • il y a aussi Nouveau ; mais là je suis très dubitatif.

Non le dernier driver (352.79-5) ne contient plus le driver pour la GT330M

Le paquet bumblebee n’importe pas de driver et comme je l’ai dis le paquet Bumblebee-nvidia apporte le dernier driver donc qui ne marche pas avec ma carte.

Je veux de la 3D donc c’est une mauvaise option

Pourtant quand je regarde les paquets installés

sudo apt search nvidia |grep installé
bbswitch-dkms/testing,unstable,now 0.8-3 amd64  [installé, automatique]
bumblebee/testing,unstable,now 3.2.1-10 amd64  [installé]
glx-alternative-nvidia/testing,unstable,now 0.7.2 amd64  [installé, automatique]
libegl1-nvidia-legacy-340xx/testing,unstable,now 340.96-3 amd64  [installé, automatique]
libgl1-nvidia-legacy-340xx-glx/testing,unstable,now 340.96-3 amd64  [installé, automatique]
libgl1-nvidia-legacy-340xx-glx-i386/testing,unstable,now 340.96-3 i386  [installé, automatique]
libgles1-nvidia-legacy-340xx/testing,unstable,now 340.96-3 amd64  [installé, automatique]
libgles2-nvidia-legacy-340xx/testing,unstable,now 340.96-3 amd64  [installé, automatique]
libnvidia-legacy-340xx-eglcore/testing,unstable,now 340.96-3 amd64  [installé, automatique]
libnvidia-legacy-340xx-ml1/testing,unstable,now 340.96-3 amd64  [installé, automatique]
libvdpau1/testing,unstable,now 1.1.1-3 amd64  [installé, automatique]
nvidia-installer-cleanup/testing,unstable,now 20151021+4 amd64  [installé, automatique]
nvidia-kernel-common/testing,unstable,now 20151021+4 amd64  [installé, automatique]
nvidia-legacy-340xx-alternative/testing,unstable,now 340.96-3 amd64  [installé, automatique]
nvidia-legacy-340xx-driver/testing,unstable,now 340.96-3 amd64  [installé]
nvidia-legacy-340xx-driver-bin/testing,unstable,now 340.96-3 amd64  [installé, automatique]
nvidia-legacy-340xx-kernel-dkms/testing,unstable,now 340.96-3 amd64  [installé, automatique]
nvidia-legacy-340xx-kernel-support/testing,unstable,now 340.96-3 amd64  [installé, automatique]
nvidia-legacy-340xx-vdpau-driver/testing,unstable,now 340.96-3 amd64  [installé, automatique]
nvidia-modprobe/testing,unstable,now 361.28-1 amd64  [installé, automatique]
nvidia-persistenced/testing,unstable,now 361.28-1 amd64  [installé, automatique]
nvidia-settings-legacy-340xx/testing,unstable,now 340.93-1 amd64  [installé, automatique]
nvidia-support/testing,unstable,now 20151021+4 amd64  [installé, automatique]
primus/testing,unstable,now 0~20150328-1 amd64  [installé, automatique]
xserver-xorg-video-nvidia-legacy-340xx/testing,unstable,now 340.96-3 amd64  [installé, automatique]

Il y a bien les paquets GLX

Oui mais tu auras toujours les paquets installés correctement, même avec un driver qui n’a pas accroché la carte.

Et alors d’ailleurs là, quand tu postes, comment le système est-il monté ? En VESA , je suppose, peut-être en nv ?

Dans cette situation je reviens à mon idée : dans un premier temps avoir un driver 3D accélération matérielle tournant, même en permanence, au moins pour être sûr que c’est possible.

Donc à la limite je désinstallerais tout ce qui est Bumblebee, fichiers de config, et je ne m’occuperais que d’installer le driver, comme sur une tour ; il doit trouver la carte.

Normalement il n’a pas besoin d’Xorg.conf, ensuite, pour monter*. Sinon, on peut envoyer nvidia-xconfig, hors X, qui va en faire un ; inconvénient, il faut quand même peut-être le regarder, voire le corriger.

Quand on a réussi à faire ça, on recommence tout avec Bumblebee pour économiser la pile et les ventilos, mais tu en sauras déjà beaucoup plus.

  • Pas sûr : il peut tout de même monter en VESA sur la GPU Intel.

Merci pour ta réponse.

J’ai suivi ton conseil mais dans l’autre sens pour l’instant, j’ai désinstallé bumblebee et le driver nvidia puis réinstallé mesa-glx.

sudo apt remove bumblebee --purge
sudo apt remove nvidia-* --purge
sudo apt install --reinstall libgl1-mesa-glx libegl1-mesa-drivers
sudo reboot

Et j’ai récupéré l’openGL avec la carte Intel et nouveau pour la carte Nvidia (je crois).
Maintenant partant d’un état fonctionnel je vais installer le paquet “nvidia-legacy-340xx-driver”

Et là c’est le drame, je retombe dans le cas précédent.
Donc le problème vient bien du driver legacy et non de bumblebee, déjà ça fait un truc de moins à checker.

Bon mais quel est ce drame ?

  • la machine (le serveur X) ne monte pas et tu restes en mode caractères ?
  • Elle monte, tu es bien en graphique mais pas très bonne résolution, donc driver VESA ?

De toutes manières, même si tu n’es qu’en mode caractères (en terminal, quoi), tu peux faire (en root !) :

more /var/log/Xorg.0.log

et là tu as le détail de ce qui se passe. Ce qui est intéressant, c’est quel est le dernier driver essayé, donc autant commencer la lecture par la fin.

Ceci fait, si cela se trouve il va simplement falloir s’occuper de l’xorg.conf, ce qui doit quand même être faisable, on va bien voir comment.

Je retombe dans le cas précédent (décrit dans mon premier post et sur le github de bumblebee) c’est à dire plus d’openGL donc plus moyen d’ouvrir des logiciels comme cura ou freecad.
Et bien entendu aucune accélération 3D.

Bon au moins tu as ta machine. Il faut aller voir dans le /var/log/Xorg.0.log :

. Quel est le driver chargé, VESA, nv, Nouveau ;

. Y a-t-il eu des échecs, par exemple tu es en VESA mais il a refusé Nouveau (important car Nouveau est un 3D, même inabouti) ;

. Et surtout, a-t-il seulement essayé de charger le driver Nvidia lui-même ?

Eventuellement, poste le log ici, mais je sais pas comment on fait pour ces fichiers de taille respectable sans tout encombrer.

Ca peut être simplement l’absence d’xorg.conf.

Je pense que c’est VESA.
Mais mon problème d’openGL a disparu dans ce mode (je peux utiliser freecad and co)
Le problème maintenant est que je n’ai pas d’accélération 3D alors qu’avant j’en avais avec bumblebee.
http://pastebin.com/8reYkNgP

Par contre une fois le driver nvidia-legacy-340xx-driver installé je n’ai plus rien ni 3D ni openGL.

Par exemple

/usr/bin/glxgears 
Xlib:  extension "GLX" missing on display ":0".
Error: couldn't get an RGB, Double-buffered visual

Voici le Xorg.0.log correspondant
http://pastebin.com/RhbevxkU

Effectivement, on a l’impression sur le log que tout va bien, sauf cette histoire de DRM, ce qui est énorme.

Il faut absolument qu’on sache quel driver tourne en mémoire :

#lsmod | grep nvidia
On devrait n’avoir rien, ou peur-être un résidu.
Moi j’ai cela (machine en full nvidia, quatre modules donc) :

nvidia_uvm 33239 0
nvidia 10520178 73 nvidia_uvm
drm 249998 4 nvidia
i2c_core 46012 3 drm,i2c_i801,nvidia

On vérifie :
#lsmod | grep VESA

Et par acquit de conscience :
#lsmod | grep nouveau
#lsmod | grep nv

(important, le dernier).

lsmod |grep nv
nvidia              10563584  0
drm                   356352  5 i915,drm_kms_helper,nvidia

Les autres grep (sauf nvidia évidemment) ne renvoient rien.

Oui, c’était vesa en minuscules, effectivement. Mais peu importe. Maintenant on peut faire plusieurs choses.

  • ou on s’accroche à essayer le “tout nvidia”, et ce avec un xorg.conf ; pour cela déjà il faut effacer toutes les traces du passé, tout ce que tu avais fait à la main. Et ensuite se dépatouiller en lançant, hors serveur X :
    #nvidia-xconfig

On répond aux questions comme on peut ; naturellement il faut avoir le paquet nvidia-xconfig installé.

Cela peut être assez long ; à la fin, cela produit un fichier xorg.conf, qui doit être dans /etc/X11. Il faut regarder chaque paramètre, et essayer de booter avec cela ; regarder le log, modifier, relancer…

  • seconde solution : repartir à zéro également, mais avec Bumblebee, ce qui de toutes manières est le but (chauffe -piles) :

Ce truc-là vient d’Ubuntu, mais c’est le seul moyen que je vois de choisir le legacy. Ils commencent bien par le driver, et ensuite seulement passent à bumblebee-nvidia.

Le programme nvidia-xconfig me renvoie ça sans me poser de question.

sudo nvidia-xconfig 

WARNING: Unable to locate/open X configuration file.

Package xorg-server was not found in the pkg-config search path.
Perhaps you should add the directory containing `xorg-server.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xorg-server' found
New X configuration file written to '/etc/X11/xorg.conf'

le fichier /etc/X11/xorg.conf généré est assez petit

http://pastebin.com/aXLU5ngb

Et toujours pas de rendu. Mais peut être que je m’y prend mal

Je ferais le tuto du forum Ubuntu demain ou ce week end en espérant que ça fonctionne, mais je pense quand même que je devrais signaler un bug au packageur du driver nvidia-legacy

Essaie de rajouter ceci à la fin de ta section device (celle du driver) :

BusID “PCI:1:0:0”

C’est ce qui spécifie la carte Nvidia, et non l’Intel. Je n’ai pas vu de message d’erreur là-dessus dans ton Xorg.0.log, mais justement il faut se méfier.

Tu as bien enlevé ce qui restait encore de l’installation Bumblebee, en particulier le xorg.conf;nvidia ? De toutes manières le xorg.conf lu au moment du boot est précisé au début du Xorg.0.log.

Si par hasard tu as un double de ce xorg.conf.nvidia ça serait intéressant de le regarder, de comparer avec celui de nvidia-xconfig.

Sinon je ne pense pas que le driver legacy ait quelque chose, c’est quand même particulier, ces deux cartes ; c’est pour cela qu’in fine autant s’en remettre à Bumblebee, mais dans le bon ordre pour choisir le driver.

Bon du coup après un reboot (que j’avais oublié de faire après le xconfig) je me suis retrouvé en mode console.
Donc encore une fois j’ai dé-installé le driver nvidia et réinstallé mesa.
Compliqué cette histoire.

N’ayant jamais utiliser et configurer bumblee je pourrais pas t’aider dessus.

Mais il semblerait qu’il faut juste configurer glx.
Une section module comportant glx pourrait peut-être résoudre le problème:
Section "Module"
Load "glx"
EndSection
Dans xorg.conf (et celui ci doit être charger, je sais pas si bumble lance un autre xorg.conf comme je vois dans ton sujet XorgConfFile=/etc/bumblebee/xorg.conf.nvidia)

Si ça ne marche toujours pas.
update-alternative --config glx, pour choisir manuellement glx de nvidia, qui peut-être fonctionnera.
Retient le choix qui s’ouvre graphiquement, si tu as un problème tu reviens sur le choix avec la même commande.

j’ai eu un message sur le github de bumblebee.
le gars a la même impression que moi, qu’il s’agit d’un problème de packaging.

Ça y est j’y suis arrivé.
En fait mon erreur était de croire que le paquet bumblebee-nvidia installait automatiquement et inconditionnellement le driver mainline.
Mais en fait si le bon driver est déjà installé (nvidia-legacy-340xx-driver dans mon cas) il ne sera pas remplacé et tout re fonctionne
:wink:
Donc d’abord installer le driver puis le paquet bumblebee-nvidia