Developpez.com - Rubrique Hardware

Le Club des Développeurs et IT Pro

NVIDIA : publication du pilote 435.17 beta pour Linux prenant en charge Vulkan, OpenGL et GLX pour le déchargement PRIME.

Un bonheur pour les utilisateurs d'ordinateurs portables

Le 2019-08-28 12:00:00, par Bruno, Chroniqueur Actualités
NVIDIA propose aujourd'hui un petit cadeau aux utilisateurs de Linux, avec la sortie du pilote 435.17 beta. En effet, celui-ci propose une implémentation de PRIME, le mécanisme du noyau Linux qui permet de tirer profit de plusieurs cartes graphiques (souvent deux) dans les ordinateurs portables afin de minimiser la consommation énergétique. NVIDIA propose depuis longtemps sa technologie Optimus pour ce faire, mais elle n'était pas encore disponible pour Linux : c'est maintenant le cas avec ce nouveau pilote.


Le rendu du déchargement PRIME correspond à la possibilité d’effectuer le rendu d’une application par un processeur graphique particulier, différent du processeur graphique principal. Ceci est particulièrement utile en combinaison avec la gestion dynamique de l'alimentation pour laisser un GPU NVIDIA éteint, sauf lorsque cela est nécessaire pour le rendu de certaines applications sensibles aux performances.

Configuration requise pour le serveur X

La prise en charge du déchargement du rendu sur une carte graphique NVIDIA par le mécanisme PRIME a nécessité les modifications suivantes dans le code du serveur X :

  • 7f962c70 – xsync : ajout d'une ressource dans SyncCreate, exporte SyncCreate ;
  • 37a36a6b – GLX : ajouter d'un mappage fournisseur par client ;
  • 8b67ec7c – GLX : utilisation du client d'envoi pour rechercher les XID ;
  • 56c0a71f – GLX : ajout d'une fonction pour changer la liste de fournisseurs d'un client ;
  • b4231d69 – GLX : définition de la version de GlxServerExports::{major, minor}.


Au moment où ces lignes sont écrites, ces commits ne se trouvent que dans la branche principale du serveur X et donc pas dans la version officielle du serveur X. Les utilisateurs d'Ubuntu 19.04 ou 18.04 peuvent utiliser un serveur X auquel sont appliqués les commits ci-dessus, à partir de ce PPA.

Configurer l'écran X

Pour utiliser la prise en charge du déchargement de rendu PRIME de NVIDIA, configurez le serveur X avec un écran à l'aide d'un GPU intégré avec le pilote xf86-video-mode-setting. Le serveur X le fait normalement, automatiquement, en supposant que le BIOS du système soit configuré pour démarrer sur le GPU intégré. Manuellement, cela peut se faire ainsi :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Section "ServerLayout"
Identifier "layout"
Screen 0 "iGPU"
EndSection

Section "Device"
Identifier "iGPU"
Driver "modesetting"
EndSection

Section "Screen"
Identifier "iGPU"
Device "iGPU"
EndSection
Configurer l'écran GPU

Ensuite, activez la création d’écrans sur le GPU NVIDIA sur le serveur X. Pour ce faire,

1. Définissez l'option de configuration X « AllowNVIDIAGPUScreens ».

Code :
1
2
3
4
Section "ServerLayout"
Identifier "layout"
Option "AllowNVIDIAGPUScreens"
EndSection
2. le noyau nvidia-drm doit être chargé
Cela devrait normalement se produire par défaut, mais vous pouvez confirmer en exécutant ‘lsmod | grep nvidia-drm’. Lancez ‘modprobe nvidia-drm’ pour le charger. Si la création d'écrans GPU a réussi, le fichier journal /var/log/Xorg.0.log doit contenir des lignes avec « NVIDIA (G0) », et l'interrogation des fournisseurs RandR avec `xrandr --listproviders`doit afficher un fournisseur nommé « NVIDIA-G0 » (pour « NVIDIA GPU screen 0 »).

Configurer les applications graphiques pour le rendu à l'aide de l'écran GPU

Pour configurer une application graphique à décharger sur l'écran du GPU NVIDIA, définissez la variable d'environnement __NV_PRIME_RENDER_OFFLOAD sur 1. Si l'application graphique utilise Vulkan, cela devrait suffire. Si l'application graphique utilise GLX, définissez également la variable d'environnement __GLX_VENDOR_LIBRARY_NAME sur nvidia afin que GLVND charge le pilote NVIDIA GLX. L'implémentation EGL de NVIDIA ne prend pas encore en charge le rendu du déchargement PRIME.

Code :
1
2
__NV_PRIME_RENDER_OFFLOAD=1 vkcube
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep vendor
Source : NVIDIA

Et vous ?

Qu'en pensez-vous ?

Voir aussi :

Une intelligence artificielle de NVIDIA transforme des croquis en paysages photoréalistes en quelques secondes, lors de la GPU Technology Conference
  Discussion forum
3 commentaires
  • Daïmanu
    Membre émérite
    C'est tellement pénible de configurer le système avec ce type de matériel avec les méthodes actuelles !
    J'ai réussi à me débrouiller sur mon Ubuntu, mais impossible de configurer Fedora pour tirer parti de la carte graphique.

    Du coup, j'ai tellement hâte que ça soit disponible sur les dépôts officiels.
  • Lordanonymous
    Candidat au Club
    Envoyé par Daïmanu

    mais impossible de configurer Fedora pour tirer parti de la carte graphique.
    Pour Fedora, tu peux regarder de ce côté-ci:
    https://www.linuxtricks.fr/wiki/fedo...-optimus-aussi

    Testé et approuvé la semaine dernière par moi même sur un Dell XPS 15 9550 (il a juste oublié de mentionner qu'il faillait reconstruire un initramfs pour ne pas se taper une erreur et repasser sur "Nouveau" au démarrage - j'ai mis à jour le système qui a mis à jour le noyau qui l'a fait à ma place pour régler le problème).

    En fait il s'avère que les pilotes Nvidia pour Linux savent gérer Optimus depuis des lustres sur les plateformes autres que Debian (pas besoin de Primus et Optirun donc). Je ne comprend pas que ce point ne soit mentionné nul par lorsque l'on cherche des infos sur Optimus Linux... La seule contrainte est de devoir redémarrer la machine pour basculer d'une carte à l'autre (mais au moins c'est géré correctement contrairement à Primus/Optirun via Bumblebee et avec une vrai accélération graphique...).
    Là, de ce que je comprends, c'est le vrai Optimus qui est pleinement géré. On est par défaut sous l'Intel HD et c'est l'application qui en a besoin qui exploite la carte graphique Nvidia. Si ça fonctionne c'est carrément top !

    Par contre avant que ça arrive sous Wayland je sent que de l'eau va couler sous les ponts pendant un bon moment... Ceux qui utilisent une combinaison écran UHD/FHD devront passer leur chemin... Enfin ça avance dans le bon sens c'est déjà ça !
  • disedorgue
    Expert éminent sénior
    Envoyé par Lordanonymous

    En fait il s'avère que les pilotes Nvidia pour Linux savent gérer Optimus depuis des lustres sur les plateformes autres que Debian (pas besoin de Primus et Optirun donc). Je ne comprend pas que ce point ne soit mentionné nul par lorsque l'on cherche des infos sur Optimus Linux... La seule contrainte est de devoir redémarrer la machine pour basculer d'une carte à l'autre (mais au moins c'est géré correctement contrairement à Primus/Optirun via Bumblebee et avec une vrai accélération graphique...).
    Perso, j'ai un bureau sous wayland qui n'utilise pas ma carte nvidia et un autre sous X qui lui l'exploite, et donc, juste besoin de changer de bureau, pas besoin de rebooter en désactivant/activant la carte.