Page 1 sur 1

[optimus] prime, Bumblebee ... (résolu)

Publié : sam. 19 janv. 2019, 21:23
par aty879
Bonsoir,

Je continue a me pencher sur la configuration de mon portable ASUS et de ma ARCH comme j'ai un peu de temps.
J'ai l'impression de ne jamais avoir bien configurer mes deux cartes graphique comme mon portable a le système OPTIMUS.

Je n'ai jamais bien compris les technologies sous Linux qui permettent de prendre en charge ce système. Sauf erreur de ma part ils sont deux "PRIME" et "Bumblebee" je ne sais pas du tout le quel est le plus adapter à m'a configuration.
En tout premier j'étais parti sur PRIME avec le drivers intel et nouveau. cependant quand je souhaite basculer de carte avec la commande

Code : Tout sélectionner

xrandr --setprovideroffloadsink (avec 1 ou 0 au choix)
je me rend compte que je ne change pas de carte.

Je me pose la question aussi si la carte au niveau énergie est bien gérée...
J'utilise aussi le drivers open source "NOUVEAU" faut-il pas mieux utiliser le driver propriétaire ?

Je viens vers vous pour éclaircir le sujet dans ma tête et voir si ma configuration est ok ou à améliorer.

quelques infos
xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x88 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 5 associated providers: 1 name:Intel
Provider 1: id: 0x5f cap: 0x5, Source Output, Source Offload crtcs: 0 outputs: 0 associated providers: 1 name:nouveau
lspci
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
01:00.0 3D controller: NVIDIA Corporation GK107M [GeForce GT 750M] (rev a1)
extra/mesa 18.3.1-1 [installé]
An open-source implementation of the OpenGL specification
extra/xf86-video-nouveau 1.0.15-3 (xorg-drivers) [installé]
Open Source 2D acceleration driver for nVidia cards
multilib/lib32-mesa 18.3.1-1 [installé]
An open-source implementation of the OpenGL specification (32-bit)
Merci pour votre aide.

Re: [optimus] prime, Bumblebee ...

Publié : dim. 20 janv. 2019, 00:01
par laurent85
Bonjour,
J'ai aussi un portable Optimus et j'ai fait le choix de PRIME pour la simplicité, Bumblebee ne me convainc pas donc je ne peux pas en parler. J'ai l'expérience de PRIME sous Mint où j'appréciais l'applet qui permet de basculer simplement entre Intel et Nvidia (pilote proprio). Depuis que je suis sous Arch sur mon portable j'ai voulu configurer la même possibilité.

Dans le wiki c'est PRIME avec Nouveau qui est documenté alors j'ai cherché comment faire la même chose que sous Mint et c'est faisable manuellement ou avec un script. Donc sur le portable j'utilise principalement la carte graphique Nvidia avec le pilote proprio et si besoin je change pour utiliser la puce Intel, la carte graphique Nvidia est désactivée avec bbswitch.

Contrairement à ce qui est indiqué dans le wiki ça fonctionne bien sans fichier de configuration xorg.conf dans mon cas, j'ai uniquement le gestionnaire de connexion configuré comme indiqué avec les commandes xrandr nécessaires à l'initialisation. Je ne sais pas si ça répond à ton besoin, si ça t'intéresse je peux développer les détails vu que c'est pas documenté.

Pour info :

Code : Tout sélectionner

% xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x305 cap: 0x1, Source Output crtcs: 0 outputs: 0 associated providers: 1 name:NVIDIA-0
Provider 1: id: 0x48 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 3 outputs: 6 associated providers: 1 name:modesetting

% glxinfo | grep -i opengl
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 860M/PCIe/SSE2
OpenGL core profile version string: 4.6.0 NVIDIA 415.27
OpenGL core profile shading language version string: 4.60 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.6.0 NVIDIA 415.27
OpenGL shading language version string: 4.60 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 415.27
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:

% lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
01:00.0 VGA compatible controller: NVIDIA Corporation GK104M [GeForce GTX 860M] (rev a1)

Re: [optimus] prime, Bumblebee ...

Publié : dim. 20 janv. 2019, 11:53
par aty879
Bonjour,

je te remercie pour ta réponse.
Je suis parti sur le choix de PRIME aussi mais je pense que ma configuration n'ai pas optimale.
Je n'ai pas par exemple "bbswitch" ni le drivers propriétaire.

avec prime je peux avoir "bbswitch" et le drivers propriétaire ?

Il faut blacklisté "Nouveau" quand on utilise le drivers NVIDIA si je me trompe pas?

Re: [optimus] prime, Bumblebee ...

Publié : dim. 20 janv. 2019, 15:54
par laurent85
Nouveau est blacklisté automatiquement par l'installation du paquet Nvidia, il n'y a rien à faire de particulier.

bbswitch il faut installer le paquet et configurer le chargement automatique du module noyau, il permet de désactiver la carte Nvidia. Je vais détailler la procédure après.

Le pilote propriétaire Nvidia supporte Source Output mais pas Sink Ouput ou Offload contrairement au pilote Nouveau. Donc pour basculer sur la carte Intel l'astuce consiste à désactiver la carte Nvidia, le serveur xorg utilisera alors la seule carte graphique disponible sans qu'il soit nécessaire de retoucher à la configuration.

Autre point j'utilise le pilote modesetting intégré à Xorg et non pas le pilote Intel pour deux raisons. D'abord il fonctionne mieux, c'est le pilote recommandé et utilisé par défaut pour les puces Intel par d'autres distributions et surtout il est compatible avec la synchronisation Nvidia pour un affichage sans "tearing" (lignes de l'image qui se décalent).

La procédure.

Désinstaller le pilote xorg Intel pour que Xorg utilise le pilote intégré modesetting :

Code : Tout sélectionner

sudo pacman -Rns xf86-video-intel
Installer bbswitch et configurer le chargement automatique du module noyau :

Code : Tout sélectionner

sudo pacman -S bbswitch
echo "bbswitch" | sudo tee /etc/modules-load-d/bbswitch.conf
Installer le pilote propriétaire et activer kernel modesetting (évite le tearing) :

Code : Tout sélectionner

sudo pacman -S nvidia nvidia-settings
echo "options nvidia-drm modeset=1" | sudo tee /etc/modprobe.d/nvidia-drm.conf
sudo mkinitcpio -p linux
Configurer le gestionnaire de connexion. Pour cela vois le wiki suivant celui que tu utilises : NVIDIA Optimus#Display_Managers

Redémarre.

Fais déjà l'installation que ça fonctionne avant de poursuivre.

Re: [optimus] prime, Bumblebee ...

Publié : dim. 20 janv. 2019, 18:23
par aty879
Salut,

Un grand merci d'avoir pris le temps de m'expliquer tous cela.
J'ai bien compris qu'on indique de déactiver la NVIDIA et j'utilise seulement la Intel mais, avant de me lancer j'ai une question comment je passe de la carte Intel à Nvidia si je souhaite ou l'inverse c'est possible ?

Re: [optimus] prime, Bumblebee ...

Publié : dim. 20 janv. 2019, 19:34
par laurent85
J'allais l'expliquer après.

La méthode pour basculer sur Intel.

- fermer la session
- passer sur console avec Ctrl-Alt-F2, ouvrir la session console.
- arrêter le gestionnaire de connexion, exemple pour lightdm :

Code : Tout sélectionner

% sudo systemctl stop lightdm
- décharger les modules noyaux nvidia

Code : Tout sélectionner

% for module in nvidia-drm nvidia-modeset nvidia; do sudo modprobe -vr $module; done
- désactiver la carte nvidia

Code : Tout sélectionner

% echo "OFF" | sudo tee /proc/acpi/bbswitch
- redémarrer le gestionnaire de connexion :

Code : Tout sélectionner

sudo systemctl start lightdm
Le résultat :

Code : Tout sélectionner

% xrandr --listproviders
Providers: number : 1
Provider 0: id: 0x48 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 3 outputs: 6 associated providers: 0 name:modesetting

% glxinfo | grep -i opengl
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile 
OpenGL core profile version string: 4.5 (Core Profile) Mesa 18.3.1
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 18.3.1
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 18.3.1
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
OpenGL ES profile extensions:

Pour rebasculer sur Nvidia logique inverse :

- fermer la session
- passer sur console avec Ctrl-Alt-F2
- arrêter le gestionnaire de connexion :

Code : Tout sélectionner

% sudo systemctl stop lightdm
- activer la carte nvidia

Code : Tout sélectionner

% echo "ON" | sudo tee /proc/acpi/bbswitch
- charger les modules noyaux nvidia

Code : Tout sélectionner

% for module in nvidia nvidia-modeset nvidia-drm; do sudo modprobe -v $module; done
- redémarrer le gestionnaire de connexion :

Code : Tout sélectionner

% sudo systemctl start lightdm
Moi j'ai l'habitude de la ligne de commande et je fais appel à l'historique des commandes pour ne pas ressaisir c'est rapide, avec un script en console ce serait une seule commande le tout.

Re: [optimus] prime, Bumblebee ...

Publié : dim. 20 janv. 2019, 19:56
par aty879
merci c'est bien clair pour moi maintenant
j'ai juste une dernière question quand tu réalise la procédure pour activé soit l'intel ou la nvidia.
Si par exemple j'active la nvidia avec les commandes que tu m'as passé au prochain re-démarrage ça sera toujours la NVIDIA ? pas besoin de basculer à chaque re-démarrage?

Re: [optimus] prime, Bumblebee ...

Publié : dim. 20 janv. 2019, 20:16
par laurent85
Au démarrage la carte Nvidia est toujours active, la configuration système fera qu'Xorg l'utilisera pour le rendu graphique. La bascule sur Intel c'est en quelque sorte un hack on désactive la nvidia manuellement, du coup Xorg ne détectant pas la nvidia utilise Intel.

Re: [optimus] prime, Bumblebee ...

Publié : dim. 20 janv. 2019, 20:19
par aty879
du coup je me pose la question vaut-il mieux pas utiliser "nouveau" au lieu des drivers nvidia ?

Quel intérêt d'utiliser les drivers propriétaire?

Re: [optimus] prime, Bumblebee ...

Publié : dim. 20 janv. 2019, 21:09
par laurent85
Le pilote propriétaire Nvidia exploite mieux les capacités de la carte en particulier en rendu 3D. Si tu as des besoins modestes Nouveau peut convenir. Remarque aussi que la puce Intel est déjà très bien en rendu graphique, à voir et comparer les performances avec Nvidia piloté par Nouveau.

D'autres distributions pour offrir la possibilité de basculer entre Intel et Nvidia propriétaire ont automatisé la procédure mais le principe est le même basé sur bbswitch.

Mais à mon avis pour économiser l'énergie le mieux est Intel dans tous les cas.

Re: [optimus] prime, Bumblebee ...

Publié : mar. 22 janv. 2019, 21:31
par aty879
Bonsoir,

Je viens d'appliquer tes recommandations je reste pour le moment avec la carte graphique Nvidia on verra avec l'autonomie ce que ça donne.

Code : Tout sélectionner

xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x30a cap: 0x1, Source Output crtcs: 0 outputs: 0 associated providers: 1 name:NVIDIA-0
Provider 1: id: 0x46 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 3 outputs: 4 associated providers: 1 name:modesetting
Peux-tu me confirmer que ma carte Intel est bien coupé pour moi oui "OFFload"

Merci

Re: [optimus] prime, Bumblebee ...

Publié : mar. 22 janv. 2019, 23:56
par laurent85
Oui c'est bon mais les termes du retour de la commande xrandr ce sont les capacités des cartes notamment concernant PRIME. Pour savoir quelle carte est utilisée installe d'abord le paquet mesa-demos :

Code : Tout sélectionner

sudo pacman -S mesa-demos
puis

Code : Tout sélectionner

glxinfo | grep -i "opengl renderer"

Re: [optimus] prime, Bumblebee ...

Publié : mer. 23 janv. 2019, 18:20
par aty879
Bonsoir,

voici les résultats de la commande :

Code : Tout sélectionner

glxinfo | grep -i "opengl renderer"
OpenGL renderer string: GeForce GT 750M/PCIe/SSE2

Re: [optimus] prime, Bumblebee ...

Publié : jeu. 24 janv. 2019, 14:36
par laurent85
Ça fonctionne comme prévu, c'est bon.

Re: [optimus] prime, Bumblebee ...

Publié : ven. 25 janv. 2019, 19:08
par aty879
Bonsoir,

Je te remercie pour ton aide et tes explications. :)