Tout cela est dû au fait que le serveur X est obsolète, inadapté au matériel graphique d'aujourd'hui et que, fondamentalement, toutes les communications directes de la carte vidéo se font sous forme d'extension ("patch") sur l'ancien noyau gonflé. Le serveur X ne fournit aucun moyen intégré de synchronisation entre le rendu de la fenêtre par l'utilisateur et l'écran affichant une fenêtre, de sorte que le contenu change au milieu du rendu. C'est l'un des problèmes bien connus du serveur X (il en 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...). Les boîtes à outils de widgets veulent surtout dissimuler tout cela, mais le déchirement est toujours un problème car il n'y a pas de mécanisme pour gérer cela. Des problèmes supplémentaires surviennent lorsque vous avez plusieurs cartes qui nécessitent des pilotes différents, et en plus de tout cela, la bibliothèque opengl a une dépendance câblée sur xlib, vous ne pouvez donc pas vraiment l'utiliser indépendamment sans passer par X.
Wayland, qui essaie sans enthousiasme de remplacer X, prend en charge une synchronisation vsync pédante dans son noyau, et est annoncé comme ayant chaque image exactement parfaite.
Si vous recherchez rapidement "wayland video tearing" sur Google, vous trouverez plus d'informations sur tout.
Si vous utilisez un pilote nvidia>=365.20, essayez d'activer l'option "Forcer le pipeline de composition complet" dans nvidia-settings
.
Le déchirement de l'écran apparaît principalement pour deux raisons :les pilotes qui ne sont pas encore là et le manque de vsync avec certains gestionnaires de fenêtres.
En ce qui concerne les pilotes, les pilotes gratuits et propriétaires prennent en charge la composition libre (nvidia et amd les deux). Sachez que par ex. activer le bureau sans déchirure dans le catalyseur (fglrx
) peut entraîner une perte de trame et des décalages, il est donc généralement désactivé par défaut. Comme pour le pilote ouvert, vsync doit être activé par défaut. Ainsi, le problème de déchirement de l'écran peut être résolu en essayant différents pilotes et en les configurant.
En ce qui concerne les gestionnaires de fenêtres, on sait qu'Openbox, Awesome et d'autres wms légers ne prennent pas en charge le sans déchirure. XFCE (xfwm, pour être précis) l'a corrigé dans les versions récentes, 4.11/12 ont maintenant Vsync. Les principaux environnements de bureau n'ont également aucun problème de déchirure, y compris GNOME, KDE, Unity et Cinnamon.
Si vous rencontrez toujours des déchirures d'écran, votre option est d'essayer un autre gestionnaire de composition comme Compton ou Kwin. Kwin est le gestionnaire de fenêtres pour KDE et j'ai l'expérience de l'utilisation de kwin dans XFCE alors qu'il ne supportait pas vsync et cela fonctionnait très bien.
Donc, la solution ici est l'expérimentation, ce qui est cassé dans une combinaison de pilote/wm peut fonctionner dans une autre. Je pense que la situation s'améliorera bientôt car les pilotes open source sont de plus en plus avancés et le passage à wayland peut résoudre les anciens problèmes avec Xorg.