GPU kontra LCD: co je V-Sync, Buffering a jak to nastavit? | Kapitola 2
Seznam kapitol
V-Sync, fps, obnovovací frekvence, triple buffering nebo i G-Sync a Lightboost – řada technologií, které jsou různě provázány. Každý se alespoň s některými setkal, víme však, jak fungují? Máte příležitost nahlédnout do problematiky hlouběji a třeba i zjistit, že můžete své PC nastavit lépe! Dnes se podíváme na ty základní, které umí každé PC.
Zmínili jsme, že fixní obnovovací frekvence je špatné řešení. Proč? Existuje řada situací, kdy by událostně řízené vykreslování nového obrazu bylo mnohem přirozenější a výhodnější. Jmenovitě jde o tři známé a velmi obtížně odstranitelné „vady“ zobrazování: neplynulost, roztrhání obrazu a zpoždění (stutter, tearing, lag).
Začněme u zcela běžného přehrávání obsahu – videa, televize nebo filmu. Zatímco televize vysílá obraz natočený na frekvencích, které jsou shodné s obnovováním obrazovky, tak u filmu a podobného obsahu lze předpokládat rozladění – odlišnou frekvenci. Nezdá se to jako velký problém přehrávat 24fps film na 60Hz obrazovce, ale neplynulost tohoto řešení je velká v porovnání s korektním řešením jako je 24 fps na 24 Hz (a celočíselných násobcích). Například projekce v kině je na trojnásobku frekvence filmu, tzn. 72 Hz. Neshodu fps a Hz si lze představit jako snahu použít dvě ozubená kola s různými zuby nebo natáhnout řetěz z motorky na kolo a podobně. Je zajímavé, že to, co nám přijde v mechanickém světě jako nemyslitelné, tak u počítačů bereme jako normální. Nekompatibilní frekvence produkují fenomén „neplynulosti“ označovaný jako stutter.
Jako první problém jsme uvedli neshodu frekvencí v neinteraktivním prostředí. Daleko horší situace nastane, pokud produkce obrazu nebude synchronizovaná s jeho zobrazováním. Zde už se dostáváme k problematice V-Sync. Nejdříve ale musíme objasnit princip vykreslovaní na LCD panelu. Nedochází zde k jednorázovému překlopení všech bodů najednou, ale k postupnému natáčení po řádcích podobně jako v případě CRT.
Nyní k problémovému případu. Pokud budeme mít snímek hotový na GPU v polovině vykreslování monitoru a tento snímek bude zaslán na vykreslení, dojde k tomu, že část obrazu bude novější než ta zbývající. To vede k roztrhání obrazu (image tearing) - artefakt, kdy jsme schopni na obraze určit linii zlomu (přechodu ze starého snímku na nový). Čím rychlejší změna v obraze nastane, tím větší skok bude pozorovatelný.
![Ukázka tearingu na demonstrační aplikaci Pendulum. Oblast zlomu je označena červeným obdélníkem.](https://storage.googleapis.com/pctuning-cz/media/images/1pr7wpk4boht2346113d52a47deb610609498.jpg)
Nakonec se u fixní obnovovací frekvence dostáváme do problému v interaktivním prostředí. Jde o problém latence (lag) – zpoždění. Pokud se obraz obnovuje v pravidelných a plánovaných intervalech, tak interakce se systémem může demonstrovat zpoždění o délce až jednoho obnovovacího cyklu (a to je teoretické minimum, obvykle je zpoždění horší). Stačí si představit situaci, kdy se zaznamená vstupní požadavek na změnu polohy kurzoru těsně po zadání vykreslení snímku. Celý zobrazovací proces musí doběhnout jedno kolo, než zobrazí aktuální data. Pokud by bylo vykreslování řízeno událostmi, tak by změna polohy kurzoru mohla být zobrazena prakticky ihned.