MSI
Grafická pipeline IV: Monitor
Další a dnes již poslední díl minisérie o grafické pipeline je věnován monitorům. Dnes si ukážeme, jak se přenáší obraz z naší počítačové hry na monitor, co je to Swap Chain, Double a Triple Buffering, jak funguje vertikální synchronizace obrazu a jak se díku ní můžeme zbavit nepříjemného Tearingu.
gpureport.cz  Pavel Šantrůček  22.09.2016

OBSAH:
1. Swap Chain a Double Buffering          
4. VSync          
2. Monitor          
5. Triple Buffering a VSync          
3. Screen Tearing          
6. Závěr          
 

Screen Tearing

Vrátíme-li se zpět ke kapitole o Double Bufferingu pak víme, že grafická karta renderuje snímky do pracovního Back Bufferu a jakmile tento snímek dokončí, je ihned proveden Swap a obsah Back Bufferu je překlopen do Front Bufferu, ze kterého je pak obraz přenášen do monitoru.

Paralelně, tedy nezávisle na práci grafické karty s Back Bufferem, pracuje Video Controller (VC) s Front Bufferem. VC kopíruje data z Front Bufferu a přenáší je na nosném videosignálu do monitoru. Jak už víme, tento přenos se musí dít v souladu s možnostmi elektroniky monitoru, které jsou dány hodnotou Pixel Clock. V případě 60 Hz monitorů tak přenos jednoho snímku trvá 16,66 ms (Pixel Clock 148,5 MHz).

VC tedy čte data z Front Bufferu postupně pěkně řádek po řádku, ke každému řádku připojí přidružená data (Horizontal Blanking) a odesílá je na monitor. Jakmile jsou všechny řádky z Front Bufferu přečteny a odeslány, musí VC ještě připojit další řádky s přidruženými daty (Vertical Blanking). No a my už víme, že celá tato činnost trvá u monitoru s obnovovací frekvencí 60 Hz celkem 16,66 ms, kdy 16 ms trvá přenos viditelných dat z Front Bufferu a zbylých 0,66 ms pak připadá na ony řádky Vertical Blanking.

V každém případě je jasné, že VC přenáší na monitor snímky z Front Bufferu konstantní rychlostí, která je dána obnovovací frekvencí monitoru, kdežto rendering, tedy doba, po kterou grafické kartě trvá vytvoření snímku v Back Bufferu, konstantní rozhodně není, protože obtížnost renderované scény je v čase variabilní.

Pokud bychom si práci jak Back Bufferu, tak také Front Bufferu přenesli do diagramu, vypadalo by to nějak takto:

 

Tearin diagram

 

Hned při prvním skenování Front Bufferu video kontrolérem se v průběhu odesílání dat na monitor provedl Swap Front/Back Bufferu, o kterém VC neměl ani zdání, takže prvních 11 ms kopíroval data z jednoho úložiště (starého Front Bufferu) a zbylých 5,66 ms kopíroval data z druhého úložiště (nového Front Bufferu alias bývalého Back Bufferu).

 

Tearing Ovčáček

Někdo nám přesekl Ovčáčka? Ale kdepak, to je jen Tearing!

Výsledný snímek, který je v průběhu oněch 16,66 ms zasílán k zobrazení na monitor, se tedy ve výsledku skládá ze dvou či více fragmentů snímků, které v tomto intervalu stihla vyrenderovat grafická karta a provést Swap. Tomuto jevu se tedy říká Screen Tearing a vysvětluje také, proč můžeme ve hře dosahovat vyšších snímkových frekvencí, než je konstantní obnovovací frekvence monitoru schopna. Prostě jeden obraz na monitoru se skládá z několika snímků, lépe řečeno jejich fragmentů, které vyrenderovala grafická karta.

Samozřejmě Tearing je vadou obrazu a spousta hráčů počítačových her je na něj „alergická“, takže co s tím? Věřte nebo nevěřte, ale existuje pouze jediné řešení, jak se nepříjemného tearingu zbavit a tím je zapnutí VSync!

         
Předchozí kapitola   Další kapitola
         

SPONSORS & PARTNERS

Asus  Alza  MSI  Gigabyte
AMD  Sapphire  Asbis  EVGA  Nvidia

Copyright (c) 2019 InfoTrade Powered by ASP.NET & MS SQL Server