Dokumentation/Tearing Problem auf einem Xfce Desktop $


Beim betrachten von Videos oder auch beim scrollen im Browser ist mir immer wieder ein unschöner Effekt aufgefallen - Das Bild sieht bei schneller Seitwärtsbewegung zerrissen aus. Wie kommt dieser Fehler zustande und wie kann ich diesen beseitigen?

tearing simuliertes Bild

Der Rechner hat einen intel i3 verbaut und keine Grafikkarte. Der Fehler trat in allen Videoplayern auf die ich getestet habe (mplayer, vlc, xine) und auch im Firefox. Ich habe herausbekommen, wenn ich den compositor deaktiviere ist der Fehler in den Videoplayern gefixt. Jedoch nicht im Firefox.

Im Startmenü auf Einstellungen -> Feineinstellungen der Fensterverwaltung -> Komposit -> checkbox entfernen (Anzeigenkomposit aktivieren) Abbildung: Xfce Komposit deaktivieren

Das Problem entsteht dadurch weil der Monitor und der Grafikprozessor nicht synchron laufen. Wenn der Grafikprozessor mehr Bilder liefert als der Monitor darstellen kann, werden manchmal Teile verschiedener Frames auf dem Monitor sichtbar. Da sich die Frames bei einer schnellen Seitwärtsbewegung unterscheiden, sieht das Bild dann zerrissen aus. Um den Fehler zu beheben muss Vsync aktiviert sein. In diesem Fall wartet der Grafikprozessor auf den Monitor. Während der Monitor ein Bild von einem Framebuffer liest und darstellt schreibt der Grafikprozessor das nächste Bild in einen weiteren Framebuffer. Anschließend werden die Adressen der Framebuffer getauscht und der Monitor bekommt damit das nächste Bild (Page Flip). Wenn Vsync aktiv ist, wartet der Grafikprozessor mit dem Page Flip bis der Monitor fertig ist. Ohne Vsync findet der Page Flip sofort statt, wenn der Grafikprozessor den Frame fertig geschrieben hat.
Mein erster Lösungsansatz war über eine Option im Treiber Vsync zu aktivieren.

cd /etc/X11
mkdir xorg.conf.d
vi 20-intel.conf

In die neu angelegte Konfiguration kommen diese Einträge

Section "Device"
   Identifier "Intel Graphics"
   Driver "intel"
   Option "AccelMethod" "sna"
   Option "TearFree" "true"
EndSection

Der Fehler war damit beseitigt und ich hatte das Problem abgehakt. Natürlich habe ich auch das compositing wieder aktiviert. Doch dann hat sich ein neuer Fehler gezeigt. Immer wenn ich den Workspace gewechselt habe waren Fenster ohne Inhalt zu sehen und erst durch ein minimieren und wieder maximieren wurde der Inhalt wieder sichtbar. Ich habe dann weiter recherchiert und herausgefunden dass dieses Verfahren extrem ressourcen-lastig ist und deshalb nicht gleichzeitig noch ein compositor laufen kann. Ich war deshalb mit dieser Lösung nicht glücklich und habe nach einer besseren gesucht. Die 20-intel.conf Datei habe ich wieder entfernt. Die optimale Lösung war einen besseren compositor zu finden. Der Xfce compositor basiert auf Xrender und macht einen schlechten Job was den Vsync betrifft. Optimal geeignet ist der compositor "compton". Der ist sehr schlank, funktioniert mit Xfce und er hat ein OpenGL backend welches einen optimalen Vsync liefert. Compton ist in der Paketverwaltung enthalten und kann mit

apt-get install compton

installiert werden. Dann einfach eine Datei ~/.config/compton.conf anlegen:

backend = "glx"; # Aktiviert das OpenGL backend
paint-on-overlay = true; # performance tweaks
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
vsync = "opengl-swc"; # Die verwendete Vsync Methode

Diese Optionen müssen auf jeden Fall gesetzt sein. Compton hat natürlich auch die gängigen Features wie Schatten, Transparenz, blur, fades usw. Ich habe mal die komplette Konfigurationsdatei angehängt. Die manpage ist natürlich auch noch eine gute Quelle. Dann den compositor starten mit

/usr/bin/compton -b

Den Xfce compositor zuerst beenden. Den Befehl am besten in die Autostart eintragen. Startmenü -> Alle Einstellungen -> Sitzung und Startverhalten -> Automatisch gestartete Anwendungen.

OpenGL Zugriff über die GLX API ermöglicht Hardware beschleunigtes compositing und sorgt für einen reibungslosen Vsync
Abbildung: glx API

Damit konnte ich dieses Problem endgültig beseitigen und ich bin mit dem Ergebnis sehr zufrieden.
compton konfigurations Datei