Optimus

De Justine's wiki
Aller à la navigation Aller à la recherche

Optimus : utiliser deux GPU

Liens :

Pour une raison ou pour une autre, on peut vouloir utiliser deux GPU sous Linux. Dans mon cas, j'utilise le GPU Radeon intégré à mon processeur pour le bureau et le GPU Nvidia dédié pour les jeux vidéo.

Sous Wayland en 2024, c'est plutôt bien géré : il n'y a pas grand-chose à faire, Steam choisissant tout seul le GPU NVidia pour lancer les jeux. Cependant, on peut avoir quelques déconvenues.

Envycontrol : un script user-friendly de sélection du GPU

Envycontrol est disponible dans le AUR ou sur Github. Il permet de choisir simplement son GPU, voir son aide. Il peut être particulièrement utile pour désactiver le GPU dédié d'un PC portable afin d'économiser de la batterie, par exemple.

Avec Gamescope

Note : ça ne fonctionne pas, chez moi en tout cas.

Gamescope peut poser des soucis dans ce genre de configuration, il faut lui préciser via le driver mesa quel GPU utiliser. Pour ça on utilise des variables d'environnement. Au préalable, on va récupérer quelques informations. Lancer:

lspci -nn

On va chercher à récupérer le vendorID et deviceID du GPU dédié. Dans mon cas:

236 justine@~ > lspci -nn | grep VGA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation AD104 [GeForce RTX 4070 Ti] [10de:2782] (rev a1)
0d:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Phoenix1 [1002:15bf] (rev 06)

Ici les informations sont entre crochets, je note les valeurs 10de:2782 pour mon GPU Nvidia.

Ensuite, pour lancer CS2 dans Steam par exemple, mes options de lancement ressemble à ça:

DRI_PRIME=1 MESA_VK_DEVICE_SELECT=10de:1347 NV_PRIME_RENDER_OFFLOAD=1 VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia gamescope --force-grab-cursor -W 3440 -H 1440 -r 144 -- %command% +exec autoexec.cfg
  • DRI_PRIME=1 : La Doc Arch précise que lorsque l'on utilise PRIME (donc que l'on a un GPU NVidia) il faut set cette variable pour utiliser le GPU dédié. Je n'ai pas trouvé beaucoup d'infos ?
  • MESA_VK_DEVICE_SELECT=10de:2782 : c'est ici que l'on utilise les valeurs VendorID et DeviceID récupéré plus haut.
  • NV_PRIME_RENDER_OFFLOAD=1 VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia : pas sûre
  • gamescope etc : commande de lancement du jeu avec une résolution précise, etc.