Ich benutze seit über einem Jahrzehnt viele Varianten von Linux (hauptsächlich Debian-Derivate). Ein Problem, das ich nicht zufriedenstellend gelöst habe, ist das Problem des horizontalen Reißens oder der nicht ordnungsgemäßen Implementierung von Vsync.
Ich sage das, weil ich 5 verschiedene Distributionen auf 4 verschiedenen Computern mit verschiedenen Monitoren und Nvidia / AMD / ATI / Intel-Grafikkarten verwendet habe. Jedes Mal gab es ein Problem mit dem Zerreißen von Videos, auch wenn sich diese nur geringfügig bewegten.
Dies ist ein großes Problem, zumal selbst Windows XP diese Probleme auf moderner Hardware nicht hat. Wenn irgendjemand Linux für irgendetwas verwenden möchte, warum sollte er dann wollen, dass konstante Fehler auftauchen, wenn etwas anderes als CLI ausgeführt wird?
Ich vermute, dass entweder nur wenige Entwickler über dieses Problem Bescheid wissen oder sich genug darum kümmern, es zu beheben. Ich habe so gut wie jeden Compositor da draußen ausprobiert, und normalerweise können sie das Problem nur minimieren, aber nicht beseitigen. Sollte es nicht so einfach sein, mit der Bildwiederholfrequenz des Monitors zu synchronisieren? Gibt es in der OSS-Community eine Politik, die verhindert, dass jemand Code schreibt, der dies behebt?
Jedes Mal, wenn ich in der Vergangenheit um Hilfe zu diesem Problem gebeten habe, wird es entweder als Randfall behandelt (was ich schwer zu glauben finde, wenn ich das Problem so oft wiederholt habe) oder ich erhalte mögliche Lösungen dafür Das Aufreißen höchstens minimieren.
Antworten:
Dies ist alles auf die Tatsache zurückzuführen, dass der X-Server veraltet und für die heutige Grafikhardware ungeeignet ist und im Grunde die gesamte direkte Grafikkartenkommunikation als Erweiterung ("Patch") über den alten, aufgeblähten Kern erfolgt. Der X-Server bietet keine integrierte Möglichkeit zur Synchronisierung zwischen dem Rendern des Fensters durch den Benutzer und dem Anzeigen eines Fensters auf dem Bildschirm, sodass sich der Inhalt während des Renderns ändert. Dies ist eines der bekannten Probleme des X-Servers (es gibt viele, das gesamte Modell dessen, was der Server tut, und es ist veraltet - Ereignisbehandlung in Unterfenstern, Metadaten zu Fenstern, grafische Grundelemente für direktes Zeichnen ...). Widget-Toolkits möchten all dies meistens beschönigen, aber das Zerreißen ist immer noch ein Problem, da es keinen Mechanismus gibt, der damit umgeht. Zusätzliche Probleme treten auf, wenn Sie mehrere Karten haben, für die unterschiedliche Treiber erforderlich sind.
Wayland, das ohne großen Enthusiasmus versucht, X zu ersetzen, unterstützt eine pedantische vsync-Synchronisation in seinem Kern und ist bekannt dafür, dass jeder Frame genau perfekt ist.
Wenn Sie schnell "wayland video tearing" googeln, finden Sie weitere Informationen zu allem.
quelle
+1
für "X ist das Problem, werfen Sie einen Blick auf Wayland." Ganz im Ernst, es ist die richtige Antwort.wayland video tearing
: PBildschirmrisse treten hauptsächlich aus zwei Gründen auf: Treiber, die noch nicht vorhanden sind, und mangelnde Vsync-Funktion bei bestimmten Fenstermanagern.
Bei Treibern unterstützen sowohl freie als auch proprietäre Treiber das reißfreie Compositing (nvidia und amd). Beachten Sie, dass z. B. das Aktivieren des reißfreien Desktops in catalyst (
fglrx
) zu Bildabweichungen und Verzögerungen führen kann. Daher ist diese Option normalerweise standardmäßig deaktiviert. Was den offenen Treiber betrifft, sollte vsync standardmäßig aktiviert sein. Das Problem mit dem Bildschirmabriss lässt sich möglicherweise lösen, indem Sie verschiedene Treiber ausprobieren und konfigurieren.Was Fenstermanager angeht, so ist bekannt, dass Openbox, Awesome und andere leichte WMS keine reißfreie Unterstützung bieten. XFCE (um genau zu sein xfwm) hat es in den letzten Releases behoben, 4.11 / 12 haben jetzt Vsync. Wichtige Desktop-Umgebungen haben auch keine Probleme mit dem Zerreißen, einschließlich GNOME, KDE, Unity und Cinnamon.
Wenn der Bildschirm weiterhin reißt, können Sie einen anderen Compositing-Manager wie Compton oder Kwin ausprobieren. Kwin ist der Fenstermanager für KDE und ich habe Erfahrung mit der Verwendung von kwin in XFCE, als es vsync nicht unterstützte und es sehr gut funktionierte.
Die Lösung hier ist also das Experimentieren, was in einer Kombination von Treiber / Wm kaputt ist, kann in einer anderen funktionieren. Ich glaube, die Situation wird sich bald verbessern, da Open-Source-Treiber immer fortgeschrittener werden und der Wechsel zu Wayland alte Probleme mit Xorg loswerden kann.
quelle
Wenn Sie einen nvidia-Treiber> = 365.20 verwenden, aktivieren Sie die Option "Force Full Composition Pipeline" in
nvidia-settings
.quelle
TearFree
Option haben, die Sie in den entsprechendenDevice
Abschnitt einfügen können . Ich habe es gerade ausprobiert und es gibt Ergebnisse, die der Full Composition Pipeline von nvidia sehr ähnlich sind.Ich hatte hier einen starken Riss und jetzt ist er gelöst.
Nachdem ich diese ( wundervolle Erklärung ) zur Funktionsweise eines Xorg-Servers gelesen hatte, stellte ich fest, dass X-Server zu jeder beliebigen Zeit Fensteraktualisierungen direkt auf die Speicherkarte malt, es sei denn, Sie verwenden einen Compositing-fähigen Fenstermanager.
Wenn das Zusammensetzen aktiviert ist, setzt der Fenstermanager alle Änderungen aus den verschiedenen Fensterspeicherpuffern zusammen, erstellt ein Ergebnisbild für den gesamten Bildschirm und speichert es auf einmal auf der Grafikkarte.
Die meisten modernen Distributionen verfügen über einen Compositing Window Manager. KWin für KDE, Mutter für Gnome, Muffin für Cinnamon, Marco für Mate, xfwm für XFCE usw. Das Compositing kann jedoch deaktiviert werden, um Ressourcen zu sparen.
In meinem Fall war Compositing in KDE4 deaktiviert. Sobald es aktiviert war, verschwand das Zerreißen. BEARBEITEN : Ich musste auch bei den KWin-Optionen die VSync-Strategie von Automatisch auf Bildschirminhalt wiederverwenden ändern , um das Zerreißen loszuwerden, wie in diesem kwin-spezifischen Fehlerbericht erläutert .
Die Treiberoptionen können ebenfalls ein Faktor sein. In meinem Fall funktionieren die Standardoptionen in Ordnung. Das Arch Wiki bietet eine hervorragende Dokumentation zu den Optionen für verschiedene Grafikkarten, z. B. Intel-Karten oder NVIDIA-Karten .
Um zu überprüfen, ob eine Option in Ihrer aktuellen xorg-Konfiguration aktiviert ist, können Sie das Protokoll überprüfen. So überprüfen Sie beispielsweise, ob DRI aktiviert ist:
quelle
xfwm4-tweaks-settings
Befehl, um die Tweaker-Anwendung anzuzeigen, und auf der Registerkarte Compositor finden Sie die obige Option. Das Einschalten hat einen großen Unterschied gemacht und kann hier überprüft werden: vsynctester.com/index.html ( Schalten Sie die Funktion ein / aus, während die Animation angezeigt wird ). Es ist nicht perfekt, es gibt einige fehlende Frames, aber viel besser als wenn es ausgeschaltet ist.Die Lösung ist hier: Linux Mint 17.3 MATE wird jetzt mit Compton geliefert .
Gehen Sie einfach zu
Desktop Settings
->Windows
->Window Manager
und wählen SieMetacity + Compton
. Das ist es.Ich habe eine AMD-Grafikkarte und sie funktioniert sofort für Open Source-Treiber.
Wenn für proprietäre AMD-Treiber HTML5-Videos auf Vollbild maximiert werden, wird möglicherweise eine blaue Farbe angezeigt, die den gesamten Bildschirm ausfüllt. Um dies zu beheben, erstellen Sie und
chmod +x
das Skript unten:Führen Sie es immer dann aus, wenn Sie das System neu starten, aber versuchen Sie nicht, es hinzuzufügen
Startup Applications
- es kann aus irgendeinem Grund den Startvorgang unterbrechen.quelle
Gehen Sie in Peppermint Linux zu Preferences> Peppermint Control Center, wählen Sie Desktop Effects und aktivieren Sie "Enable desktop effects" und "Synchronize drawing to the vertical blank".
quelle
Ich benutze Linux Mint XFCE und dieses Problem hat mich eine ganze Weile frustriert. Ich habe eine Lösung für meinen Laptop mit integrierter Intel-Grafikkarte gefunden und sie hat das Problem des Reißens gelöst . Für meinen Desktop mit NVIDIA-Karte kann dieser Trick nicht funktionieren. Aber ich habe gerade einen Täter gefunden.
Ich habe eine sofortige Leistungssteigerung erfahren, wenn ich die Fenstererstellung deaktiviert habe. Hier ist, wie du das machen kannst:
Gehen Sie zu Alle Einstellungen / Window Manager Tweaks / Compositor und deaktivieren Sie das Ganze.
Denken Sie daran, dass dies distro-spezifisch ist und meiner ist Mint mit XFCE und ich habe keine Ahnung, wie man ähnliche Dinge in anderen Distributionen findet.
quelle