Systèmes graphiques hybrides Intel/nVIDIA

Partagez ici vos Trucs et vos Astuces.
Répondre
Avatar de l’utilisateur
vv222
Membre actif
Membre actif
Messages : 852
Inscription : 18 avr. 2016, 20:14
Contact :
Status : Hors-ligne

Les ordinateurs venant avec une puce graphique Intel intégrée à la carte-mère, consommant peu d’énergie, et une carte graphique nVIDIA dédiée, capable de meilleures performances, ont souvent été compliqués à utiliser.

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:'
Ce qui donne par exemple pour un chipset Intel :

Code : Tout sélectionner

$ glxinfo | grep '^OpenGL renderer string:'
OpenGL renderer string: Mesa Intel(R) HD Graphics 630 (KBL GT2)
Et pour une carte nVIDIA :

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
Et pour revenir à la puce Intel :

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
On passe ensuite d’une source d’affichage à l’autre non pas en exécutant ces fichiers, mais en les sourçant :

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.
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4966
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Merci beaucoup et bravo @vv222 :good:
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Elian85
Messages : 2
Inscription : 23 févr. 2023, 19:28
Status : Hors-ligne

Bonjour et merci beaucoup pour cette méthode, elle semble très pratique et permet de passer facilement d'une carte graphique à l'autre sans avoir besoin d'installer des logiciels dédiés. Cette solution est vraiment intéressante et peut-être utile pour les utilisateurs ayant à utiliser deux cartes graphiques différentes sur leur ordinateur. Merci pour ces explications détaillées !
Avatar de l’utilisateur
Grhim
Membre très actif
Membre très actif
Messages : 1374
Inscription : 30 mai 2016, 01:00
Localisation : kekparr'par'là
Status : Hors-ligne

:good: merci çà va aider aussi
Répondre