[Guida] Freesync e Freesync 2 HDR
Inviato: martedì 12 febbraio 2019, 18:50
Freesync è un argomento di cui si parla spesso ma che genera anche parecchia confusione ho notato, quindi ho pensato di creare una breve guida chiarificatrice che funga anche da luog per chiarire i dubbi.
Tearing
Per capire cos'è e come funziona Freesync è necessario chiarire qualche concetto a partire dal Tearing.
Il "tearing" traducibile come "strappo" è un difetto che si crea nelle immagini in movimento a causa della mancata sincronizzazione tra frame generato dalla scheda video e frame disegnato a schermo.
In pratica ad un certo punto lo schermo salterà al frame successivo prima di aver completato quello precedente.
Prima soluzione: vsync
Vsync è la soluzione più classica, i frame generati dalla vga vengono "salvati" in due buffer e solo una volta completi vengono inviati al monitor.
Il problema è che quando un frame non viene completato in tempo al monitor verrà inviato di nuovo il frame precedente.
Questo vuol dire che in un monitor a 60hz se il framerate scende al di sotto dei 60 fps (anche solo 59 fps) a schermo verranno mostrati 30 fps.
Triple Buffering
Una forma di Vsync più avanzato è il triple buffering che inserisce un terzo buffer, in questo modo si ovvia al problema dei 30 fps e con un framerate di 59 fps (a esempio) si avranno a monitor 59 fps.
Tutto risolto quindi?
Non proprio perchè il monitor comunque funziona a 60hz e non si avranno mai 59hz, quindi con 59 fps verranno si mostrati 59 frame diversi ma uno verrà ripetuto due volte generando quello che si chiama "microstuttering".
Più il framerate cala e maggiore sarà il microstuttering.
Inoltre dato che i frame passano in tutti questi buffer aumenta la latenza, cioè il tempo che intercorre da quanto il frame viene generato a quando viene mostrato a video, cosa molto fastidiosa in giochi molto frenetici come gli FPS.
Borderless
Giocando su sistemi Windows si può sfruttare il trucchetto di giocare in finestra senza bordi, alcuni giochi prevedono questa funzionalità altri vanno a finestra e si usano tools per centrarla correttamente.
Questa modalità sfrutta il buffer del desktop manager di windows (DWM) per avere un risultato simile al triple buffering ma con un solo buffer il risultato è di avere meno lag ma non risolve il microstuttering, inoltre bisogna farlo "digerire" ad alcuni giochi.
NOTA: fast-sync introdotto da Nvidia ed enhaced-sync di AMD ottengono un effetto simile senza il fastidio di farlo digerire ai giochi.
Freesync
Veniamo finalmente a Freesync.
Freesync sfrutta un'istruzione della connessione DiplayPort (successivamente introdotto anche su HDMI) chiamato vblank per variare la frequenza di aggiornamento del monitor e sincronizzarla al framerate della scheda video.
In questo modo con 59 fps (sempre per mantenere il nostro esempio) il monitor lavorerà a 59hz e il tutto sarà sincronizzato senza microstuttering e lag aggiuntiva.
Quindi questa volta è veramente tutto risolto?
Teoricamente si ma analiziamo bene la cosa.
Prima di tutto serve un monitor compatibile.
Inoltre ogni monitor ha un range di frequenze in cui freesync può lavorare, al di fuori di esso AMD da due possibilità tra cui scegliere: tornare con il tearing o tornare con il vsync.
Attivando il vsync in presenza di freesync si pone un limite massimo sopra cui il framerate non può salire pari alla frequenza massima supportata dal monitor, inoltre se si scende sotto la frequenza minima verrà attivato il classico vsync, ma almeno a questo si può ovviare con LFC.
Low Framerate Compensation.
O semplicemente LFC, è una funzione inserita successivamente che entra in funzione automaticamente in presenza di un monitor freesync che abbia la frequenza massima pari a due volte e mezzo quella minima (per esempio 30-75hz), ridotta poi successivamente a sole due volte la frequenza minima (per esempio 40-80hz).
Questa funzione permette di restare sincronizzati anche in presenza di framerate inferiori alla frequenza minima semplicemente raddoppiando la frequenza e ripetendo due volte lo stesso frame.
Per esempio a 25 fps il monitor lavorerà a 50hz ripetendo ogni frame due volte.
In questo modo freesync lavora anche al di sotto della frequenza minima del monitor.
Tearing
Per capire cos'è e come funziona Freesync è necessario chiarire qualche concetto a partire dal Tearing.
Il "tearing" traducibile come "strappo" è un difetto che si crea nelle immagini in movimento a causa della mancata sincronizzazione tra frame generato dalla scheda video e frame disegnato a schermo.
In pratica ad un certo punto lo schermo salterà al frame successivo prima di aver completato quello precedente.
Prima soluzione: vsync
Vsync è la soluzione più classica, i frame generati dalla vga vengono "salvati" in due buffer e solo una volta completi vengono inviati al monitor.
Il problema è che quando un frame non viene completato in tempo al monitor verrà inviato di nuovo il frame precedente.
Questo vuol dire che in un monitor a 60hz se il framerate scende al di sotto dei 60 fps (anche solo 59 fps) a schermo verranno mostrati 30 fps.
Triple Buffering
Una forma di Vsync più avanzato è il triple buffering che inserisce un terzo buffer, in questo modo si ovvia al problema dei 30 fps e con un framerate di 59 fps (a esempio) si avranno a monitor 59 fps.
Tutto risolto quindi?
Non proprio perchè il monitor comunque funziona a 60hz e non si avranno mai 59hz, quindi con 59 fps verranno si mostrati 59 frame diversi ma uno verrà ripetuto due volte generando quello che si chiama "microstuttering".
Più il framerate cala e maggiore sarà il microstuttering.
Inoltre dato che i frame passano in tutti questi buffer aumenta la latenza, cioè il tempo che intercorre da quanto il frame viene generato a quando viene mostrato a video, cosa molto fastidiosa in giochi molto frenetici come gli FPS.
Borderless
Giocando su sistemi Windows si può sfruttare il trucchetto di giocare in finestra senza bordi, alcuni giochi prevedono questa funzionalità altri vanno a finestra e si usano tools per centrarla correttamente.
Questa modalità sfrutta il buffer del desktop manager di windows (DWM) per avere un risultato simile al triple buffering ma con un solo buffer il risultato è di avere meno lag ma non risolve il microstuttering, inoltre bisogna farlo "digerire" ad alcuni giochi.
NOTA: fast-sync introdotto da Nvidia ed enhaced-sync di AMD ottengono un effetto simile senza il fastidio di farlo digerire ai giochi.
Freesync
Veniamo finalmente a Freesync.
Freesync sfrutta un'istruzione della connessione DiplayPort (successivamente introdotto anche su HDMI) chiamato vblank per variare la frequenza di aggiornamento del monitor e sincronizzarla al framerate della scheda video.
In questo modo con 59 fps (sempre per mantenere il nostro esempio) il monitor lavorerà a 59hz e il tutto sarà sincronizzato senza microstuttering e lag aggiuntiva.
Quindi questa volta è veramente tutto risolto?
Teoricamente si ma analiziamo bene la cosa.
Prima di tutto serve un monitor compatibile.
Inoltre ogni monitor ha un range di frequenze in cui freesync può lavorare, al di fuori di esso AMD da due possibilità tra cui scegliere: tornare con il tearing o tornare con il vsync.
Attivando il vsync in presenza di freesync si pone un limite massimo sopra cui il framerate non può salire pari alla frequenza massima supportata dal monitor, inoltre se si scende sotto la frequenza minima verrà attivato il classico vsync, ma almeno a questo si può ovviare con LFC.
Low Framerate Compensation.
O semplicemente LFC, è una funzione inserita successivamente che entra in funzione automaticamente in presenza di un monitor freesync che abbia la frequenza massima pari a due volte e mezzo quella minima (per esempio 30-75hz), ridotta poi successivamente a sole due volte la frequenza minima (per esempio 40-80hz).
Questa funzione permette di restare sincronizzati anche in presenza di framerate inferiori alla frequenza minima semplicemente raddoppiando la frequenza e ripetendo due volte lo stesso frame.
Per esempio a 25 fps il monitor lavorerà a 50hz ripetendo ogni frame due volte.
In questo modo freesync lavora anche al di sotto della frequenza minima del monitor.