web-dev-qa-db-fra.com

Comment forcer automatiquement le pipeline de composition complète pour le pilote GPU NVIDIA?

J'ai installé Manjaro Linux. Ma carte graphique est une NVIDIA GTX 1050TI.

Lorsque je démarre mon ordinateur et essayez de regarder des vidéos, je remarque une déchirure de l'écran dure. Ce problème est résolu lorsque je vais dans les paramètres du serveur NVIDIA X et permet d'activer l'option "Pipeline de composition Forcer la composition".

Y a-t-il un moyen de définir cette option de manière permanente pour que je n'ai pas besoin de l'activer manuellement à chaque fois que je redémarre mon ordinateur?

4
Danieldrd

Pour moniteur unique :

Créez un fichier texte et collez ceci:

[Desktop Entry]
Type=Application
Name=nvidia-force-full-compositon
Exec=nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"

Pour double moniteur :

si vous avez un double moniteur, vous pouvez ouvrir ce fichier dans l'éditeur de texte: /etc/X11/xorg.conf Ensuite, faites une recherche avec ce mot metamodeswith ctrl + f et voir ce qu'il a configuré. Le mien est quelque chose comme ça:

"metamodes" "DVI-I-0: nvidia-auto-select +1920+0 {ForceCompositionPipeline=On}, HDMI-0: nvidia-auto-select +0+0

j'ai donc créé l'entrée DESTOP comme celle-ci:

[Desktop Entry]
Type=Application
Name=nvidia-force-full-compositon
Exec=nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +1920+0 {ForceCompositionPipeline=On}, nvidia-auto-select +0+0 { ForceCompositionPipeline = On }"

Remarque: vous pouvez faire forcerfulcompositionPiPiPiPiPiPiPiPiPiPiPiPeline uniquement. Changez simplement le texte dont vous avez besoin.

enregistrez le fichier texte comme quelque chose comme ceci:

nvidia-force-full-compositon.desktop

.desktop est essentiel.

Maintenant, copiez-la en la collant ~/.config/autostart

Redémarrer.

1
Fahad Hasan Pathik

Ajout à la réponse de Paradox (puisque il semble que je ne peux pas poster des commentaires ...), je mettrais cette commande dans ~/.bash_profile plutôt que dans ~/.bstrucc.

~/.BASHRC est acheté chaque fois que vous ouvrez une nouvelle session Bash, c'est-à-dire à chaque fois que vous ouvrez une nouvelle fenêtre/onglet Émulateur de terminal.

D'autre part ~/.bash_profile ne provient qu'une fois lorsque vous démarrez BASH en tant que coquille de connexion, par exemple. lorsque vous vous connectez dans un environnement de bureau graphique. c.f. https://www.gnu.org/software/bash/manual/bash.html#bash-startup-files

Edit: Il y a maintenant une meilleure solution au problème de la déchirure avec Kwin lors de l'utilisation du pilote propriétaire NVIDIA; Vous devez avoir une version assez récente de Kwin, version> = 5.12 [1] et Activez le mode de réception du module NVIDIA-DRM KEnel [2]. J'ai testé cela et cela fonctionne pour moi avec Kwin-5.17.80 (instantané git d'opensuse Repos) et NVIDIA 440.26.

Modifier: HMM, il y a un effet secondaire pour permettre aux modeset avec le module NVIDIA-DRM, reprenant de la suspension semble échouer ...

Modifier (encore): On dirait même sans que le module NVIDIA-DRM, la déchirure semble être partie, pour le moment au moins ...

[1] https://wiki.archlinux.org/index.php/nvidia/troubleShooTing#avoid_screen_eearing_in_kde_ (kwin)https://habricator.kde.org/d19867

[2] https://wiki.archlinux.org/index.php/nvidia#drm_kernel_mode_setting

1
Ahmad Samir

vous pouvez créer un fichier appelé /etc/x11/xorg.conf.d/20-nvidia.conf

Et ajoutez ces lignes

Section "Device"
        Identifier "Nvidia Card"
        Driver     "nvidia"
        VendorName "NVIDIA Corporation"
        BoardName  "GeForce GTX 1050 Ti"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    Option         "metamodes" "nvidia-auto-select +0+0 {ForceFullCompositionPipeline=On}"
    Option         "AllowIndirectGLXProtocol" "off"
    Option         "TripleBuffer" "on"
EndSection

plus d'infos: https://wiki.archlinux.org/index.php/nvidia/troubleShooTing#bad_performance_after_installing_a_new_driver_version

0
Kamiel Ahmadpour