Tutto ciò è dovuto al fatto che il server X è obsoleto, inadatto all'hardware grafico odierno e fondamentalmente tutta la comunicazione diretta della scheda video viene eseguita come un'estensione ("patch") sull'antico core gonfio. Il server X non fornisce alcun mezzo integrato di sincronizzazione tra l'utente che esegue il rendering della finestra e lo schermo che visualizza una finestra, quindi il contenuto cambia nel mezzo del rendering. Questo è uno dei problemi ben noti del server X (ne ha molti, l'intero modello di ciò che fa il server ed è obsoleto:gestione degli eventi nelle sottofinestre, metadati sulle finestre, primitive grafiche per il disegno diretto ...). I toolkit dei widget per lo più vogliono sorvolare su tutto questo, ma il tearing è ancora un problema perché non esiste un meccanismo per gestirlo. Ulteriori problemi sorgono quando hai più schede che richiedono driver diversi e, oltre a tutto questo, la libreria opengl ha una dipendenza cablata da xlib, quindi non puoi davvero usarla in modo indipendente senza passare attraverso X.
Wayland, che sta cercando in qualche modo senza entusiasmo di sostituire X, supporta una pedante sincronizzazione vsync nel suo core, e viene pubblicizzato per avere ogni frame esattamente perfetto.
Se cerchi rapidamente su Google "wayland video tearing" troverai maggiori informazioni su tutto.
Se stai utilizzando un driver nvidia>=365.20, prova ad abilitare l'opzione "Force Full Composition Pipeline" in nvidia-settings
.
Lo screen tearing appare principalmente per due motivi:driver che non sono ancora disponibili e mancanza di vsync con alcuni gestori di finestre.
Per quanto riguarda i driver, sia i driver gratuiti che quelli proprietari supportano il compositing free-tearing (nvidia e amd entrambi). Tieni presente che ad es. abilitare il desktop senza interruzioni in Catalyst (fglrx
) può causare frame drop e ritardi, quindi di solito è disabilitato per impostazione predefinita. Per quanto riguarda il driver aperto, vsync dovrebbe essere abilitato per impostazione predefinita. Quindi il problema dello screen tearing può essere risolto provando diversi driver e configurandoli.
Per quanto riguarda i window manager, è noto che Openbox, Awesome e altri wms leggeri non supportano il tear-free. XFCE (xfwm, per essere precisi) lo ha risolto nelle versioni recenti, 4.11/12 ora hanno Vsync. Anche i principali ambienti desktop non hanno problemi con il tearing, inclusi GNOME, KDE, Unity e Cinnamon.
Se continui a riscontrare lo screen tearing, la tua opzione è provare un altro gestore di compositing come Compton o Kwin. Kwin è il window manager per KDE e ho esperienza nell'uso di kwin in XFCE quando non supportava vsync e funzionava molto bene.
Quindi la soluzione qui è la sperimentazione, ciò che è rotto in una combinazione di driver/wm può funzionare in un'altra. Credo che la situazione migliorerà presto poiché i driver open source stanno diventando più avanzati e il passaggio a Wayland potrebbe eliminare i vecchi problemi con Xorg.