Pourquoi la vidéo pose-t-elle un tel problème sous Linux?

101

J'ai utilisé de nombreuses variantes de Linux (principalement des dérivés de Debian) depuis plus d'une décennie maintenant. Un problème que je n'ai pas vu résoudre de manière satisfaisante est le problème de la déchirure horizontale, ou du fait que Vsync n'est pas correctement implémenté.

Je dis cela parce que j'utilise 5 distributions différentes sur 4 ordinateurs différents avec différents moniteurs et cartes graphiques Nvidia / AMD / ATI / Intel; à chaque fois, il y a eu un problème de déchirure de la vidéo avec même un léger mouvement.

C'est un gros problème, d'autant plus que même Windows XP n'a pas ces problèmes sur du matériel moderne. Si quelqu'un souhaite utiliser Linux pour quoi que ce soit, pourquoi voudrait-il que des défauts constants apparaissent lorsque vous faites quelque chose de non-CLI?

J'imagine que peu de développeurs sont au courant de ce problème ou suffisamment attentifs pour le résoudre. J'ai essayé à peu près tous les compositeurs, et le mieux qu'ils puissent faire est généralement de minimiser le problème sans pour autant l'éliminer. Ne devrait-il pas être aussi simple que de synchroniser avec le taux de rafraîchissement du moniteur? Y a-t-il des politiques de la communauté de l'OSS qui empêchent quiconque de valider un code corrigeant cela?

Chaque fois que j’ai demandé de l’aide dans le passé, cette question est traitée comme un cas avancé (ce que j’ai du mal à croire qu’elle est donnée le nombre de fois où j’ai reproduit le problème) ou bien j’obtiens des solutions possibles. tout au plus minimiser la déchirure.

Ravenstine
la source
2
Vous ne mentionnez pas quel DE vous utilisez. KDE se débrouille très bien avec la déchirure depuis environ un an maintenant.
Sparhawk
1
Comment pourrait-on facilement reproduire le problème? Dans un ordinateur Debian / Ubuntu / Mint?
Xen2050
50
Ce XKCD semble si bien s’adapter si bien ici ...
Rétablir Monica
Mon expérience avec la déchirure a été complètement différente. Je suis très heureux de jouer et de regarder des films sur Linux. Steam a vraiment fait de Linux une plate-forme viable pour les grands jeux. Je joue à Witcher 2 et à Talos Principle récemment, et je n'ai vu aucune déchirure après 50 heures de jeu. C’est avec une carte Nvidia avec des pilotes propriétaires sur Arch. Je conviens avec Xen2050 que cette question serait plus utile si les spécifications exactes étaient données pour vos versions. Je ne nie pas qu'il y ait un problème, je viens d'avoir une très bonne expérience.
labyrinthe
Avec Nvidia, la composition a résolu le problème pour moi, lorsque j’utilisais Nvidia en 2007. Pas en plein écran, car les fenêtres en plein écran désactivent le compositeur, cela suppose donc que vous lanciez un jeu OpenGL. Avec Intel, avez-vous essayé de définir la section "Périphérique" Option "TearFree" "true" dans X? Il double l'utilisation de la RAM vidéo, mais je pense que ça va marcher.
Zan Lynx

Réponses:

92

Tout cela est dû au fait que le serveur X est obsolète, mal adapté au matériel graphique actuel et que toute la communication directe par carte vidéo est réalisée sous forme d'extension ("patch") sur l'ancien noyau gonflé. Le serveur X ne fournit aucun moyen de synchronisation intégré entre le rendu de la fenêtre par l’utilisateur et l’écran affichant une fenêtre. Le contenu change alors en cours de rendu. C’est l’un des problèmes bien connus du serveur X (il a beaucoup, tout le modèle de ce que fait le serveur et est obsolète - gestion des événements dans les sous-fenêtres, métadonnées sur les fenêtres, primitives graphiques pour le dessin direct, etc.). Les toolkits de widgets veulent surtout passer sous silence tout cela, mais la déchirure reste un problème car il n’existe aucun mécanisme pour le gérer. Des problèmes supplémentaires surviennent lorsque vous avez plusieurs cartes qui nécessitent des pilotes différents,

Wayland, qui essaie de remplacer X avec un certain manque d'enthousiasme, prend en charge une synchronisation pédiatrique vsync en son centre, et il est annoncé que chaque image est parfaitement parfaite.

Si vous google rapidement "vidéo de wayland déchirant", vous trouverez plus d'informations sur tout.

orion
la source
38
+1car «X est le problème, jetez un coup d'œil à Wayland». Très sérieux, c'est la bonne réponse.
HalosGhost
2
@HalosGhost évangélisation dans les waylands sur la route :) toujours pas de support de session réseau?
Kagali-san
3
@ kagali-san Je n'ai pas dit que Wayland était parfait (ce n'est pas le cas). Mais c'est certainement mieux que X. :)
HalosGhost Le
8
@ kagali-san: Le backend de RDP de Weston a été fusionné il y a à peine un an, si vous trouvez que c'est en quelque sorte pertinent pour une question sur le déchirement de la vidéo.
Grawity
3
@orion: et grâce à vous, cette page-ci est maintenant numéro 1 du résultat de wayland video tearing: P
Tobia Tesan le
16

Les déchirures d'écran apparaissent principalement pour deux raisons: des pilotes qui n'y sont pas encore et l'absence de vsync avec certains gestionnaires de fenêtres.

En ce qui concerne les pilotes, les pilotes libres et les pilotes propriétaires prennent en charge la composition en déchirement libre (nvidia et amd). Sachez par exemple que l'activation d'un bureau sans catalyseur dans catalyseur ( fglrx) peut entraîner une perte de trame et des retards, elle est donc généralement désactivée par défaut. En ce qui concerne le pilote ouvert, vsync devrait être activé par défaut. Donc, le problème de déchirement d'écran peut être résolu en essayant différents pilotes et en les configurant.

En ce qui concerne les gestionnaires de fenêtres, il est connu qu'Openbox, Awesome et d'autres wms légers ne prennent pas en charge sans déchirure. XFCE (xfwm, pour être spécifique) l'a corrigé dans les versions récentes, 4.11 / 12 ont maintenant Vsync. Les environnements de bureau principaux ne présentent également aucun problème de déchirement, y compris GNOME, KDE, Unity et Cinnamon.

Si vous rencontrez encore des problèmes de déchirure d'écran, vous pouvez essayer un autre gestionnaire de composition tel que Compton ou Kwin. Kwin est le gestionnaire de fenêtres pour KDE et j’ai déjà utilisé kwin dans XFCE quand il ne supportait pas vsync et que cela fonctionnait très bien.

La solution ici est donc l'expérimentation, ce qui est cassé dans une combinaison driver / wm peut fonctionner dans un autre. Je pense que la situation va bientôt s'améliorer car les drivers open-source sont de plus en plus avancés et le passage à wayland peut permettre de se débarrasser d'anciens problèmes avec Xorg.

Kirill-a
la source
5
Pas vraiment. KDE (avec Kwin ou un autre compositeur) pleure toujours autant avec NVidia ou Intel.
Ivan
1
Openbox, etc. fonctionnent sans déchirure - vous devez simplement exécuter un compositeur séparé, par exemple Compton fonctionne à merveille.
wingedsubmariner
1
@wingedsubmariner, lorsque vous vous référez à openbox, entendez-vous également fluxbox?
Nass
Il est également extrêmement utile que vous notiez l’état de WM dans différents environnements de fenêtre.
Nass
@nass Absolument. Le gestionnaire de fenêtres n'est jamais un facteur limitant.
wingedsubmariner
14

Si vous utilisez un pilote nvidia> = 365.20, activez l’option "Forcer le pipeline de composition complet" dans nvidia-settings.

entrez la description de l'image ici

FuzzyTree
la source
NVIDIA Quadro sur un Lenovo W520, Fedora 25 et cela a fonctionné :)
Jerther
4
De plus, si vous ne disposez pas de cette option, cliquez sur "Paramètres avancés" en bas de la fenêtre pour l’afficher. pourquoi ce "pipeline de composition complète" n'est pas activé par défaut? ..
Rast
1
@Rast Parce qu'il avait quelques problèmes de performances.
Ruslan
BTW, il semble qu'au moins les pilotes Intel ont aussi une TearFreeoption que vous pouvez mettre dans la Devicesection correspondante . Je viens de l'essayer et les résultats obtenus sont très similaires à ceux de Full Composition Pipeline de nvidia.
Ruslan
Je n'arrive pas à obtenir le réglage pour enregistrer les redémarrages. J'ai essayé de créer un fichier ~ / .xinitrc et d'y placer "nvidia-settings --load-config-only &. / Etc / X11 / xinit / xinitrc", mais ne semblait pas fonctionner
FragmentalStew
9

J'ai eu une forte déchirure ici et maintenant c'est résolu.

Après avoir lu cette explication ( merveilleuse explication ) du fonctionnement d’un serveur Xorg, j’ai réalisé que celui-ci peignait les mises à jour de fenêtre directement sur la carte mémoire à tout moment, à moins que vous n’utilisiez un gestionnaire de fenêtres activé pour la composition.

Lorsque la composition est activée, le gestionnaire de fenêtres rassemble toutes les modifications apportées par les différentes mémoires tampons de fenêtre, crée une image résultante pour tout l'écran et la dépose sur la carte d'affichage en un seul coup.

La plupart des distributions modernes ont un gestionnaire de fenêtres de composition. KWin pour KDE, Mutter pour Gnome, Muffin pour Cinnamon, Marco pour Mate, xfwm pour XFCE, etc. Toutefois, la composition peut être désactivée pour économiser des ressources.

Dans mon cas, la composition a été désactivée dans KDE4. Une fois activé, le déchirement a disparu. EDIT : Je devais également modifier les options KWin de la stratégie VSync de Automatique à Réutiliser le contenu de l'écran afin de supprimer le déchirement, comme expliqué dans ce rapport de bogue spécifique à Kwin .

Les options du pilote peuvent également être un facteur. Dans mon cas, les options par défaut fonctionnent bien. Arch Wiki possède une excellente documentation sur les options pour différentes cartes d'affichage telles que les cartes Intel ou les cartes NVIDIA .

Pour vérifier si une option est activée dans votre configuration xorg actuelle, vous pouvez consulter le journal. Par exemple, pour vérifier si DRI est activé:

cat /var/log/Xorg.0.log | grep DRI
David
la source
1
Sur XFCE (dans Xubuntu 16.04), la composition est activée par défaut, mais la synchronisation avec le blanc vertical ne l’ est pas . Utilisez la xfwm4-tweaks-settingscommande pour afficher l'application tweaker et sur l'onglet Compositor, vous pouvez trouver l'option ci-dessus. L'activer a fait une énorme différence et peut être vérifié ici: vsynctester.com/index.html ( active / désactive la fonctionnalité pendant l'affichage de l'animation). Ce n'est pas parfait, il y a quelques images manquées, mais beaucoup mieux que quand il est éteint.
Karatedog
1

La solution est la suivante: Linux Mint 17.3 MATE vient maintenant avec Compton .

Allez juste à Desktop Settings-> Windows-> Window Manageret choisissez Metacity + Compton. C'est ça.

J'ai une carte vidéo AMD et ça marche comme un pilote open source.

Pour le pilote AMD propriétaire, lorsque les vidéos HTML5 sont agrandies en plein écran, il est possible que la couleur bleue remplisse tout l’écran. Pour résoudre ce problème, créez chmod +xle script ci-dessous:

#!/bin/bash
killall compton 2> /dev/null
compton -b --unredir-if-possible

Exécutez-le chaque fois que vous redémarrez le système, mais n'essayez pas de l'ajouter à Startup Applications- cela risquerait d'interrompre le démarrage pour une raison quelconque.

Constantine
la source
0

Dans Peppermint Linux, accédez à Préférences> Centre de contrôle de Peppermint, sélectionnez Effets de bureau et activez les options "Activer les effets de bureau" et "Synchroniser le dessin avec le blanc vertical".

Stefan Reich
la source
0

J'utilise Linux Mint XFCE et ce problème m'a frustré pendant un bon bout de temps. J'ai trouvé une solution pour mon ordinateur portable avec la carte graphique intégrée Intel et cela a résolu le problème de la déchirure . Pour mon ordinateur de bureau avec la carte NVIDIA, cette astuce ne peut pas fonctionner. Mais j'ai juste trouvé le coupable.

J'ai immédiatement amélioré les performances lorsque j'ai désactivé la composition de fenêtre. Voici comment vous pouvez faire cela:

Accédez à Tous les paramètres / Réglages du gestionnaire de fenêtres / Compositeur et désactivez tout cela.

Gardez à l'esprit que ceci est spécifique à la distribution et que le mien est Mint avec XFCE et je ne sais pas comment trouver la même chose sur d'autres distributions.

Dejan Petrovic
la source