P1 à la maison, supertuxkart rame sur certains circuit au point de rendre le jeu inutilisable.
Drame dans la famille !! Honte sur linux !! Et oui j'ai une carte hybride optimus avec 2 GPU et sous linux c'est pas "out of the box".
Il ya de gentils developpeurs qui se sont penché sur le cas et mis au point pour le vénérable serveur d'affichage X11 (qui a bien maintenant 30 ans d'age) un systeme qui permet de tirer partie de la carte dite discrete (celle qui n'est pas sur la carte mère).
Le projet le plus avancé se nomme bumblebee et permet de demarrer un programme sur la carte "discrete" grâce à la commande optirun.
On verra plus base des commandes pour la contrôler.
Installation :
  1. Les packages
  2. Il faut ajouter bumblebee et les drivers nvidia propriétaires (nouveau ne semble pas fonctionner).
    equo install 
    x11-misc/bumblebee
    x11-drivers/nvidia-drivers-310
    x11-drivers/nvidia-userspace
    sys-power/bbswitch
    app-admin/eselect-opencl
    
  3. La configuration
  4. Dans le fichier /etc/bumblebee/bumblebee.conf configurer le driver à utiliser.
    Dans le groupe [bumblebeed]
    Spécifier le driver : Driver=nvidia
    Spécifier le display (sens X11) : VirtualDisplay=:8
    Vérifier que le groupe [driver-nvidia] est bien présent.
    Vérifier que le fichier /etc/bumblebee/xorg.conf.nvidia et bien présent.
  5. Les bugs
  6. Afin d'éviter un mauvais bug de demarrage il faut modifier le /etc/bumblebee/xorg.conf.nvidia
    Option "AutoAddDevices" "false"
  7. Ajouter bumblebee au boot
  8. sabayon ~ # rc-update add bumblebee
Ca commence à prendre forme mais cela refuse de démarrer avec l'erreur suivante :
pierre@sabayon ~ $ optirun /usr/games/bin/supertuxkart 
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) intel(0): 
[drm] failed to set drm interface version: Permission denied [13].
[ERROR]Aborting because fallback start is disabled.
Le fichier de log de X11 sur la carte discrete est /var/log/Xorg.8 et se termine en un fatal "no screen found".
En cherchant un peu je vois qu'il cherche à loader le driver intel ....
En haut du fichier de log je vois qu'il va chercher ses fichiers de conf dans :
[  9981.661] (++) Using config file: "/etc/bumblebee/xorg.conf.nvidia"
[  9981.661] (==) Using config directory: "/etc/X11/xorg.conf.d"
[  9981.661] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
Diantre !! C'est la le probleme car dans /etc/X11/xorg.conf.d j'ai un fichier qui précise le driver intel ...
Je desactive ce fichier et magie, supertuxracer avec 8 adversaires dans le jardin, ca roule !

tuxkart1_1.png

Controle de la carte discrete :
  1. Controle du status de la carte
  2. pierre@sabayon:~$ cat /proc/acpi/bbswitch  
    0000:01:00.0 OFF
    
    Par défaut elle devrait être off (voir /etc/modprobe.d/bbswitch.conf)
  3. Activation/Désactivation
  4. # tee /proc/acpi/bbswitch <<< OFF
    # tee /proc/acpi/bbswitch <<< ON
    
  5. Fichiers /var/log/messages
  6. Dec 18 21:56:23 sabayon kernel: [ 5603.814103] bbswitch: enabling discrete graphics
    Dec 18 21:56:23 sabayon kernel: [ 5604.286066] pci 0000:01:00.0: power state changed by ACPI to D0
    Dec 18 21:56:31 sabayon kernel: [ 5611.901643] bbswitch: disabling discrete graphics
    Dec 18 21:56:31 sabayon kernel: [ 5611.901889] bbswitch: Result of Optimus _DSM call: 01000058
    
  7. Vérification pratique
  8. Dans un terminal (en root) lancer :
    while true; do grep rate /proc/acpi/battery/BAT0/state ;
    echo "Turning Card $(tee /proc/acpi/bbswitch \<<<  ON )"
    sleep 5 
    grep rate /proc/acpi/battery/BAT0/state
    echo "Turning Card $(tee /proc/acpi/bbswitch \<<<  OFF )"
    sleep 5 
    grep rate /proc/acpi/battery/BAT0/state
    done
    
    On voit bien la consommation passer de ~13800mw à 18500mw puis revenir à 13600mw.
    present rate:            13860 mW
    Turning Card ON
    present rate:            18502 mW
    Turning Card OFF
    present rate:            13673 mW
    

Encore une fois merci Sabayon de fournir dans les repo officiels (sous gentoo c'est unstable) des packages récents et ma foi presque parfait !
J'ai aussi testé sur ubuntu où il faut rajouter un nième ppa mais ca marche out of the box.