Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Double buffering

14.3.1999, Vít Zatloukal, zpráva
Double buffering
Další způsob používaný v 3D grafice k vykreslování snímků.
V minulé části jsme si vysvětlili, jak pracuje Single buffering a jaké jsou jeho výhody a nevýhody. Problém s roztržením obrazu u Single bufferingu řeší právě Double buffering.

Jak už název napovídá, ve frame bufferu jsou ukládány snímky dva - jeden z nich je vykreslován grafickým procesorem, zatímco druhý je překreslován DAC převodníkem na obrazovku. Poté, co procesor dokončí vykreslování snímku, čeká, až DAC dokončí zobrazení druhého snímku na obrazovce. DAC převodník pak začne zobrazovat nový snímek a procesor může začít vykreslovat další snímek do uvolněného bufferu. V tomto případě pracují procesor i DAC převodník sychronně, proto se také používá termín "Vsync on". Buffer, který je právě zobrazován na monitoru se označuje jako front buffer, zatímco jako back buffer se označuje buffer, do kterého grafický procesor vykresluje snímek. Schematicky je celý postup znázorněn na obrázcích.



Výhodou Double bufferingu je, že eliminuje roztržení obrazu, protože DAC převodník vždy zobrazí na monitoru celý snímek. Double buffering vyžaduje sice dvakrát více paměti než Single buffering, ale pořád ještě o třetinu méně než Triple buffering, který si vysvětlíme později.

Double buffering má ovšem i své nevýhody. Grafický procesor totiž musí čekat, až DAC zobrazí celý snímek na monitoru - dochází tím ke snížení výkonu. Další nevýhodou je už zmiňovaná potřeba dvojnásobné velikosti paměti ve srovnání se Single bufferingem.

Větší problém při Double bufferingu však může způsobit, pokud je grafický procesor vykreslující snímky do bufferu pomalejší než DAC převodník, který snímky zobrazuje na monitoru. Jestliže v okamžiku, kdy DAC dokončí zobrazování snímku na monitoru, není v back bufferu vykreslen další snímek, DAC převodník začne znovu zobrazovat již zobrazený snímek (DAC totiž musí dodržet obnovovací frekvenci a nemůže čekat, až bude snímek procesorem vykreslen). Jakmile DAC znovu dokončí zobrazování (stejného jako předtím) snímku, může začít zobrazovat další, který mezitím procesor dokreslil v back bufferu (pokud by byl grafický procesor výrazně pomalejší, zobrazoval by DAC stále dokola tentýž snímek i několikrát, dokud by nebyl vykreslen snímek nový). Zkusíme si problém vysvětlit na příkladu. Předpokládejme, že DAC pracuje na frekvenci 60Hz, tedy zobrazí na monitoru jeden snímek za 16,7 ms (milisekund) (což znamená, že rychlost zobrazování je omezena 60 fps - snímky za sekundu). Předpokládejme dále, že procesoru trvá vykreslení snímku v bufferu 20 ms, tedy o něco déle než trvá zobrazení snímku na monitoru (v tomto případě by byla zobrazovací rychlost 50 fps, ale ... v případě Single nebo Triple bufferingu). Podívejme se teď krok po kroku, jak takové zobrazování snímků pomocí Double bufferingu vypadá:

0 ms - grafický procesor začíná vykreslovat příští snímek do back bufferu a DAC začíná zobrazovat snímek z front bufferu na monitoru

16,7 ms - DAC dokončil zobrazení snímku, a protože procesor ještě nevykreslil další, začíná DAC zobrazovat stejný snímek znovu

20 ms - procesor dokončil vykreslování nového snímku a musí čekat, až DAC znovu zobrazí předchozí snímek

33,3 ms - DAC dokončil druhé zobrazení původního snímku, dojde k prohození bufferů (front se změní na back a naopak) a DAC může vykreslovat nový snímek

Zobrazení jednoho snímku tak trvá 33,3 ms místo 20 ms a rychlost zobrazování snímků klesne na 30 fps, což je docela velký propad ve výkonu. To nastává samozřejmě jen v případě, že grafický procesor je pomalejší než DAC. V praxi se také většinou rychlost vykreslování procesorem mírně mění, takže i skutečná rychlost zobrazování poněkud kolísá.

Obnovovací frekvence monitoru (která je daná DAC převodníkem) tedy výrazným způsobem ovlivňuje výkon grafické karty, obecně platí, že čím větší obnovovací frekvence, tím vyšší výkon (snímek je vykreslen rychleji a procesor čeká na opětovné zobrazení snímku kratší dobu). Pokud chcete používat Double buffering, vyplatí se pohrát si s obnovovací frekvencí pro dosažení co nejvyššího výkonu. Tento nedostatek Double bufferingu řeší Triple buffering, o kterém si řekneme příště.

Single buffering
Triple buffering


Podle PVR Gen
Doporučujeme náš velký přehled desktopových grafických čipů.