Tearing soluzione (forse) con compton.

7 contenuti / 0 new
Ultimo contenuto
Ritratto di 500paolo
Offline
Last seen: 2 anni 2 settimane fa
Iscritto: 16/12/2011 - 10:52
Tearing soluzione (forse) con compton.

Salve a tutti, quasi per noia mi sono messo a smanettare con un'altra distro per testare le potenzialita' di debian sid (ramo instabile e rolling come pclinuxos) e ho scelto una italiana che mi aveva incuriosito ma con openbox che odio: semplice linux.

Ho da sempre preferito gnome2+compiz o kde perche' il loro compositore permetteva il vsync (ovvero evita il tearing quando si vedono filmati su internet o con i media player) ma su questa distro mi sono ritrovato il compositore compton che a prima vista dava la solita brutta esperienza del quadro scalettato nei video quando in questi compaiono movimenti veloci. Ho scoperto leggendo approfondimenti su compton che puo' essere lanciato in questo modo: compton --vsync opengl, e questo appunto attiva il sincronismo verticale...e funziona! (faccio presente che comunque io uso sempre i drv proprietari nvidia, con i nouveau non ho provato)

Ho provato a installare xfce su semplice sperando che questo funzionasse anche lì e va anche lì.

A questo punto non ho piu' pregiudizi verso gli altri DE come lxde(openbox) e xfce, per icewm provero'...

Su xfce chiaramente bisogna disabilitare il suo compositore e questo perche' per scelta degli sviluppatori xfwm4 usa solo xrender e ostracizza opengl.

Ritratto di zafran
Offline
Last seen: 8 mesi 3 settimane fa
Moderatore
Iscritto: 16/06/2008 - 16:10

Io ho intravisto qualche bagliore in tutto questo e oso:
perché non parti da ancora un po' prima e ci fai una breve trattazione di
- cos'è opengl e come usarlo al posto di xrender
- se compton è alternativo agli altri due
- cos'è esattamente un compositore (immagino che berio e beethoven siano esclusi)
- cos'è il tearing (si ha solo per filmati di funerali?)
- se vsync è comunque presente o è caratteristico di kde
- altro

Ritratto di 500paolo
Offline
Last seen: 2 anni 2 settimane fa
Iscritto: 16/12/2011 - 10:52

Tearing:

http://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Tearing_%28simu...

Compositor (italianizzato compositore):

Il window manager si occupa di disegnare le finestre, di regolarne posizione dimensione e di renderle visibili o di nasconderle, ma da solo non puo' creare effetti "speciali", per questo ci vuole un window manager con supporto alla composizione(kwin di kde, xfwm di xfce, mutter di gnome) o un compositor stand-alone da affiancargli come compiz fusion, xcompmgr, cairo-composite-manager, ma non tutti possono sincronizzarsi con la frequenza del monitor (vsync) quindi capita che quando il compositor inizia a disegnare il fotogramma di un filmato o lo stesso spostamento di una finestra da parte dell'utente, il monitor sta gia' terminando di disegnare l'insieme dello schermo, ne risulta un "ritardo" visibile in una o piu' righe che tagliano l'immagine in piu' parti non combacianti. Non basta quindi che la frequenza dello schermo sia la stessa della scheda video, ma ci vuole che la scheda video e il compositor "aspettino" che il monitor ricominci la scansione verticale per mostrare cambiamenti nella schermata.

da wikipedia:

La differenza principale tra un compositing window manager e un normale window manager è che invece di disegnare tutte le finestre in una sola immagine, l'immagine di ogni finestra viene scritta in un buffer di memoria indipendente, solitamente nella scheda video, quindi l'immagine definitiva da visualizzare sullo schermo viene composta (da qui il nome) da tutte le immagini delle finestre. In questo modo è possibile trattare la visualizzazione finale in molti metodi, ad esempio è possibile mappare una finestra all'interno di una texture di un oggetto 3D, oppure è possibile utilizzare le accelerazioni 2D delle moderne GPU mappando le finestre in aree da sovrapporre a tutte le altre con effetti di alpha blending.

Xrender o opengl?

Il compositor per fare il suo lavoro deve comunicare con la scheda video attraverso delle istruzioni complesse, su linux si usano le opengl (formato libero creato per contrastare le direct3d dei sistemi windows) o xrender.
La differenza sostanziale tra le due che conosce il sottoscritto e' che le opengl affidano il grosso del lavoro alla/alle gpu della scheda video, mentre xrender mette tutto sulle spalle della/delle cpu.
Opengl offre prestazioni e qualita' migliori rispetto a xrender, ma necessita che il drv della scheda video sia il piu' delle volte proprietario, xrender in teoria dovrebbe funzionare su tutti i pc e tutte le schede video, ma dato che stressa la cpu, deve per forza ridurre le sue pretese anche per venire incontro a una composizione "per tutti", compreso per quelli che hanno pc datati, quindi niente vsync che e' una cosa piuttosto pesante (se ci ricordiamo le impostazioni su win nei giochi, quasi sempre la casella "attiva sincronismo verticale" non e' spuntata per avere piu' fluidita').

Con questo spero di aver contribuito nel mio piccolo.

Ritratto di zafran
Offline
Last seen: 8 mesi 3 settimane fa
Moderatore
Iscritto: 16/06/2008 - 16:10

Wow, grazie.

Quindi tu dici che con xfce, avendo un hardware che se lo può permettere, conviene spostarsi da xrender a opengl.
La cosa può essere ottenuta con il comando compton --vsync opengl a condizione però che compton sia già installato in debian.
Giusto?
(Non so se si è capito che sto trafficando su una debian+xfce e la cosa mi interessa).

Ritratto di 500paolo
Offline
Last seen: 2 anni 2 settimane fa
Iscritto: 16/12/2011 - 10:52

Compton lo trovi anche su pclinuxos e diversamente da debian trovi anche il suo tool per le impostazioni, ma dato che devi lanciarlo da terminale per dirgli di usare non solo opengl (che lo potresti impostare da questo tool) ma anche di sincronizzarsi col monitor (e questo non lo puoi impostare dal tool) ti conviene crearti una voce nella sezione autostart con i parametri specifici, quindi puoi usare il tool per impostare le ombre.

https://docs.google.com/file/d/0B3b9D753MSBpVFRkVTFiaTNmQlU/edit?usp=sha...

Così si hanno anche le ombre sulle finestre e sul pannello/menu':

compton -c -C --vsync opengl

Ritratto di zafran
Offline
Last seen: 8 mesi 3 settimane fa
Moderatore
Iscritto: 16/06/2008 - 16:10

Io incarto, porto a casa e e spero di poter usare presto per nuove installazioni su macchine un po' più degne di quelle che ho al momento.

Per ora grazie

Ritratto di 500paolo
Offline
Last seen: 2 anni 2 settimane fa
Iscritto: 16/12/2011 - 10:52

Ho trovato in rete anche un file da editare o crearselo da capo che evita tool di configurazioni, va messo nella propria /home e rimane nascosto dato che si chiama .compton.conf:


backend = "glx"; # Enables Opengl backend
paint-on-overlay = true; # These 3 can improve performance, work well in most cases
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
vsync = "opengl-swc"; # Enables one of the vsync methods. Check here for more info: https://github.com/chjj/compton/wiki/vsync-guide

# Shadow
shadow = true; # Enabled client-side shadows on windows.
no-dock-shadow = true; # Avoid drawing shadows on dock/panel windows.
no-dnd-shadow = true; # Don't draw shadows on DND windows.
clear-shadow = true; # Zero the part of the shadow's mask behind the window (experimental).
shadow-radius = 7; # The blur radius for shadows. (default 12)
shadow-offset-x = -7; # The left offset for shadows. (default -15)
shadow-offset-y = -7; # The top offset for shadows. (default -15)
shadow-exclude = [
"! name~=''",
"n:e:Notification",
"n:e:Plank",
"n:e:Docky",
"g:e:Synapse",
"g:e:Kupfer",
"g:e:Conky",
"n:w:*Firefox*",
"n:w:*Chrome*",
"n:w:*Chromium*",
"class_g ?= 'Notify-osd'",
"class_g ?= 'Cairo-dock'",
"class_g ?= 'Xfce4-notifyd'",
"class_g ?= 'Xfce4-power-manager'"
];

# Due to how compton draws shadows, some apps will have "glitchy" shadows. I've added all problem apps I ran into here.
#"! name~=''" excludes shadows on "unkown" windows, which fixes a shadow glitch with XFWM's alt tab switcher.

# Fading
fading = true; # Fade windows during opacity changes.
fade-delta = 4; # The time between steps in a fade in milliseconds. (default 10).
fade-in-step = 0.03; # Opacity change between steps while fading in. (default 0.028).
fade-out-step = 0.03; # Opacity change between steps while fading out. (default 0.03).
# no-fading-openclose = true; # Fade windows in/out when opening/closing

detect-client-opacity = true; #Fixes opacity in some apps, such as xfce4-notifyd

# Window type settings
# Disables shadows on tooltips and enables fading on tooltips

wintypes:
{
tooltip = { fade = true; shadow = false; };
};

da quì si puo' gestire il tutto