Blender does not detect GPU on Ubuntu 18.10 with an Nvidia card

Make sure your nvidia driver is properly installed

To make sure that the card is properly running within your system, you should run glxgears, it is a small openGL application that can only run properly if you have an openGL card installed :

# glxgears -info
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
GL_RENDERER   = GeForce GTX 750 Ti/PCIe/SSE2
GL_VERSION    = 4.6.0 NVIDIA 390.87
GL_VENDOR     = NVIDIA Corporation
GL_EXTENSIONS = GL_AMD_multi_draw_indirect [...]

if you do not see your card here, make sure all nouveau related components are uninstalled (driver, nouveau-xorg configurations…). You should use aptitude to see the dependencies.

Once nouveau is removed, you can install nvidia-xorg conf (search for nvidia with aptitude) and restart X (or reboot)

Make sure Nvidia Cuda toolkit is installed

Blender is using Cuda directive to render the scene, so you need Cuda toolkit to be installed otherwise Blender won’t see your card even if it is properly working.

So install cuda toolkit :

# aptitude install nvidia-cuda-toolkit

restart Blender once installed, and that’s it !

Double écran sous debian et le debug d’un serveur X

Quelques commandes et notes sur le debug d’un serveur X, utile pour l’installation d’un double écran ou de deux cartes vidéo.

Avoir un peu plus d’info sur le démarrage des cartes et les modes découverts:

$ startx -- -logverbose 6

Xinerama:

il est vieillissant mais il a l’avantage de faire tourner un écran virtuel sur cartes vidéo avec chacune leur écran. c’est une bonne alternative à  xrandr 1.3.

Section « ServerLayout »

   Identifier     "HDMI_and_LCD"
   Screen      0  "Screen0" 0 0
   Screen      1  "Screen1" Below "Screen0"
   Option "Xinerama" "1"

EndSection

Section « Screen »

   Identifier     "Screen0"
   Device         "card_330M"
   Monitor        "Philips"
       Option "ConnectedMonitor"       "DFP-0"
       Option "CustomEDID"     "DFP-0:/etc/X11/xorg.conf.d/philips"
   SubSection     "Display"
       Viewport    0 0
       Depth       24
       Modes "1920x1200"
   EndSubSection

EndSection

Section « Screen »

   Identifier     "Screen1"
   Device         "card_intel"
   Monitor        "Sony LCD"
   SubSection     "Display"
       Viewport    0 1200
       Depth       24
       Modes "1600x900"
   EndSubSection

EndSection

Xrandr 1.4:

avec xrandr 1.4 les multi cartes sont gérés mais il faut une distri qui l’embarque (ce n’est pas le cas de la debian Wheezy).

Section « ServerLayout »

   Identifier     "HDMI_and_LCD"
   Screen      0  "Screen0"
   Screen      1  "Screen1"
   Option "Xinerama" "0"

EndSection

Section « Screen »

   Identifier     "Screen0"
   Device         "card_330M"
   Monitor        "Philips"
       Option "ConnectedMonitor"       "DFP-0"
       Option "CustomEDID"     "DFP-0:/etc/X11/xorg.conf.d/philips"
       Option "MetaModes"      "DFP-0:1920x1200 +0+0"
   SubSection     "Display"
       Depth       24
       Modes "1920x1200"
   EndSubSection

EndSection

Section « Screen »

   Identifier     "Screen1"
   Device         "card_intel"
   Monitor        "Sony LCD"
   Option      "MetaModes"     "eDP-2:1600x900 +0+1200"
   SubSection     "Display"
       Depth       24
       Modes "1600x900"
   EndSubSection

EndSection

Gestion des EDID

Certaines cartes (c’est le cas sur le VAIO serie Z) n’accepte aucune description de moniteur manuel, elle cherche l’EDID du moniteur connecté, dans le cas ou le moniteur ne publie pas ou que la carte n’arrive à découvrir cet EDID on se retrouve bloqué avec soit le X server en vrac soit la carte montée mais aucune sortie vidéo. Pour remettre cela debout, il faut récupérer l’EDID du moniteur à  la mano au format binaire et l’identifier lors du démarrage de X.

Récupérer l’EDID:

Soit utiliser un outil (attention il ne voit pas toujours l’écran qu’on veut) pour afficher la liste des ecran vu:

$ get-edid | parse-edid

pour avoir le fichier binaire

$ get-edid>/etc/X11/xorg.conf.d/ecran.edid

Si l’ecran n’est pas list, il faut passer par le log de Xorg qui en mode verbose 6 affichera la chaine hexa des EDID decouvert. il faut ensuite copier et transformer cette chaine hexa en binaire. un petit coup de python ou php fait l’affaire.

Force l’EDID dans Xorg

dans la section screen, (je prefere dans screen car ca correspond avec la vision xorg: screen = quel moniteur avec quel carte)

       Option "CustomEDID"     "DFP-0:/etc/X11/xorg.conf.d/ecran.edid"

le DFP-0 est l’identifiant de la sortie vidéo de la carte, on la découvre dans le log de xorg avec le verbose 6.