Je propose ici une méthode permettant de choisir la carte à utiliser sans avoir à installer aucun logiciel dédié. Exit donc les bumblebee et autres optirun.
---
Une commande de base est à connaître pour la suite, elle permet d’afficher la carte en cours d’utilisation pour les logiciels lancés depuis le terminal actuel :
Code : Tout sélectionner
glxinfo | grep '^OpenGL renderer string:'
Code : Tout sélectionner
$ glxinfo | grep '^OpenGL renderer string:'
OpenGL renderer string: Mesa Intel(R) HD Graphics 630 (KBL GT2)
Code : Tout sélectionner
$ glxinfo | grep '^OpenGL renderer string:'
OpenGL renderer string: NVIDIA GeForce GTX 1050/PCIe/SSE2
Passer d’une source d’affichage à l’autre peut se faire simplement en exportant des variables d’environnement.
Pour forcer l’utilisation de la carte nVIDIA :
Code : Tout sélectionner
$ export __NV_PRIME_RENDER_OFFLOAD=1
$ export __GLX_VENDOR_LIBRARY_NAME=nvidia
$ export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
$ glxinfo | grep '^OpenGL renderer string:'
OpenGL renderer string: NVIDIA GeForce GTX 1050/PCIe/SSE2
Code : Tout sélectionner
$ export __GLX_VENDOR_LIBRARY_NAME=intel
$ unset __NV_PRIME_RENDER_OFFLOAD VK_ICD_FILENAMES
$ glxinfo | grep '^OpenGL renderer string:'
OpenGL renderer string: Mesa Intel(R) HD Graphics 630 (KBL GT2)
Pour éviter de devoir retenir les noms et valeurs des variables à exporter, on peut écrire deux fichiers sourçables :
- ~/.local/env/display_nvidia
Code : Tout sélectionner
export __NV_PRIME_RENDER_OFFLOAD=1 export __GLX_VENDOR_LIBRARY_NAME=nvidia export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
- ~/.local/env/display_intel
Code : Tout sélectionner
export __GLX_VENDOR_LIBRARY_NAME=intel unset __NV_PRIME_RENDER_OFFLOAD VK_ICD_FILENAMES
Code : Tout sélectionner
$ . ~/.local/env/display_nvidia
$ glxinfo | grep '^OpenGL renderer string:'
OpenGL renderer string: NVIDIA GeForce GTX 1050/PCIe/SSE2
Code : Tout sélectionner
$ . ~/.local/env/display_intel
$ glxinfo | grep '^OpenGL renderer string:'
OpenGL renderer string: Mesa Intel(R) HD Graphics 630 (KBL GT2)
Une restriction à garder en tête : il s’agit d’une méthode qui ne change la source d’affichage que pour les logiciels qui seront lancés depuis le terminal en cours. On peut par exemple avoir deux terminaux ouverts côte-à-côte dont un lance les logiciels sur la puce Intel, et l’autre sur la carte nVIDIA.
Je n’ai jamais cherché à adapter cette approche pour la faire fonctionner avec des lanceurs comme ceux fournis par les menus de la plupart des environnements de bureau.