Framebuffer - Framebuffer

Sun TGX Framebuffer

Framebuffer ( rámcová vyrovnávací paměť , nebo někdy Framestore ) je část s náhodným přístupem paměti (RAM), která obsahuje bitovou mapu , která řídí zobrazení videa. Jedná se o vyrovnávací paměť obsahující data představující všechny pixely v kompletním video snímku . Moderní grafické karty obsahují ve svých jádrech obvody framebufferů. Tento obvod převádí bitmapu v paměti na videosignál, který lze zobrazit na monitoru počítače.

Při práci na počítači je vyrovnávací paměť obrazovky součástí počítačové paměti, kterou počítačová aplikace používá k reprezentaci obsahu, který se má zobrazit na displeji počítače . Vyrovnávací paměť obrazovky může být také nazývána video vyrovnávací paměť , regenerační vyrovnávací paměť nebo zkráceně vyrovnávací paměť pro regeneraci . Vyrovnávací paměti obrazovky je třeba odlišovat od videopaměti . Za tímto účelem se také používá termín vyrovnávací paměť mimo obrazovku .

Informace ve vyrovnávací paměti se obvykle skládají z hodnot barev pro každý pixel, který se má zobrazit na displeji. Hodnoty barev jsou běžně ukládány v 1bitových binárních (černobílých), 4bitových paletizovaných , 8bitových paletizovaných, 16bitových vysokých barvách a 24bitových formátech skutečných barev . K uchování informací o průhlednosti pixelů se někdy používá další alfa kanál . Celkové množství paměti potřebné pro framebuffer závisí na rozlišení výstupního signálu a na barevné hloubce nebo velikosti palety .

Dějiny

Vzorec paměti na trubce SWAC Williams CRT v roce 1951

Výzkumníci v oblasti počítačů dlouho diskutovali o teoretických výhodách framebufferu, ale nebyli schopni vyrobit stroj s dostatečnou pamětí za ekonomicky proveditelné náklady. V roce 1947 použil počítač Manchester Baby Williamsovu trubici , později trubici Williams-Kilburn, k uložení 1024 bitů na paměť katodové trubice (CRT) a zobrazenou na druhém CRT. Další výzkumné laboratoře tyto techniky zkoumaly s laboratoří MIT Lincoln Laboratory, která v roce 1950 dosáhla 4096 zobrazení.

Na konci šedesátých let byl implementován barevně naskenovaný displej s názvem Brookhaven RAster Display (BRAD), který využíval paměť bubnu a televizní monitor. V roce 1969 A. Michael Noll z Bell Labs implementoval naskenovaný displej s vyrovnávací pamětí snímků pomocí paměti s magnetickým jádrem . Později byl systém Bell Labs rozšířen o zobrazení obrazu s barevnou hloubkou tři bity na standardním barevném televizním monitoru.

Na počátku 70. let 20. století byl díky vývoji čipů s integrovanými obvody MOS ( paměť oxidů kovů a polovodičů ) , zejména čipů DRAM s vysokou hustotou (dynamická paměť s libovolným přístupem ) s pamětí alespoň 1 kb , praktické vytvořit např. poprvé digitální paměťový systém s framebuffery schopnými pojmout standardní video obraz. To vedlo k vývoji systému SuperPaint od Richarda Shoupa na Xerox PARC v roce 1972. Shoup byl schopen použít framebuffer SuperPaint k vytvoření raného digitálního systému pro zachycování videa. Synchronizací výstupního signálu se vstupním signálem Shoup dokázal přepsat každý pixel dat, jak se posunul dovnitř. Shoup také experimentoval s úpravou výstupního signálu pomocí barevných tabulek. Tyto tabulky barev umožnily systému SuperPaint vytvářet širokou škálu barev mimo rozsah omezených 8bitových dat, která obsahovala. Toto schéma se později stalo běžným v počítačových framebufferech.  

V roce 1974 vydala společnost Evans & Sutherland první komerční framebuffer, Picture System, který stál asi 15 000 $. Byl schopen produkovat rozlišení až 512 x 512 pixelů v 8bitových stupních šedi a stal se požehnáním pro grafické výzkumníky, kteří neměli prostředky na vybudování vlastního framebufferu. New York Institute of Technology by později vytvořit první 24-bitový barevný systém využívající tři z Evans & Sutherland framebuffery. Každý framebuffer byl připojen k barevnému výstupu RGB (jeden pro červenou, jeden pro zelenou a jeden pro modrou), přičemž minipočítač Digital Equipment Corporation PDP 11/04 ovládal tři zařízení jako jedno.

V roce 1975 britská společnost Quantel vyrobila první komerční plnobarevný rámcový vysílač Quantel DFS 3000. Poprvé byl použit v televizním pokrytí olympijských her v Montrealu 1976 ke generování vložky obrazu v obraze olympijské hořící pochodně, zatímco zbytek obrázku představoval běžce vstupujícího na stadion.

Rychlé zdokonalení technologie integrovaných obvodů umožnilo mnoha domácím počítačům z konce 70. let 20. století obsahovat framebuffery s nízkou barevnou hloubkou. Dnes téměř všechny počítače s grafickými možnostmi používají pro generování video signálu framebuffer. Počítače Amiga , vytvořené v 80. letech minulého století, se vyznačovaly zvláštním designem zaměřeným na grafický výkon a obsahovaly jedinečný framebuffer Hold-And-Modify schopný zobrazit 4096 barev.

Framebuffers se také v 80. letech staly populární ve špičkových pracovních stanicích a arkádových systémových deskách . Společnosti SGI , Sun Microsystems , HP , DEC a IBM v tomto období vydaly framebuffery pro počítače svých pracovních stanic. Tyto framebuffery měly obvykle mnohem vyšší kvalitu, než jakou bylo možné najít ve většině domácích počítačů, a byly pravidelně používány v televizi, tisku, počítačovém modelování a 3D grafice. Framebuffery používala Sega také pro své špičkové arkádové desky , které byly také ve vyšší kvalitě než na domácích počítačích.

Režimy zobrazení

Sun cgsix framebuffer

Framebuffery používané v osobních a domácích počítačích často měly sady definovaných režimů, ve kterých může framebuffer fungovat. Tyto režimy překonfigurují hardware tak, aby poskytoval různá rozlišení, barevné hloubky, rozložení paměti a časování obnovovací frekvence .

Ve světě unixových strojů a operačních systémů se takové vymoženosti obvykle vyhýbaly ve prospěch přímé manipulace s nastavením hardwaru. Tato manipulace byla mnohem flexibilnější v tom, že bylo možné dosáhnout jakéhokoli rozlišení, barevné hloubky a obnovovací frekvence - omezeno pouze pamětí dostupnou pro framebuffer.

Nešťastným vedlejším účinkem této metody bylo, že zobrazovací zařízení bylo možné řídit mimo jeho možnosti. V některých případech to mělo za následek hardwarové poškození displeje. Běžněji to jednoduše produkovalo zkreslený a nepoužitelný výstup. Moderní monitory CRT tento problém řeší zavedením ochranných obvodů. Když se změní režim zobrazení, monitor se pokusí získat zámek signálu na nové obnovovací frekvenci. Pokud monitor není schopen získat signální zámek nebo pokud je signál mimo rozsah jeho návrhových omezení, monitor bude ignorovat signál framebuffer a případně uživateli zobrazí chybovou zprávu.

LCD monitory obvykle obsahují podobné ochranné obvody, ale z různých důvodů. Protože displej LCD musí digitálně vzorkovat zobrazovací signál (a tím emulovat elektronový paprsek), nelze žádný signál, který je mimo rozsah, fyzicky zobrazit na monitoru.

Paleta barev

Framebuffery tradičně podporovaly širokou škálu barevných režimů. Kvůli nákladům na paměť používala většina raných framebufferů barevné hloubky 1 bit (2 barvy na pixel), 2 bit (4 barvy), 4 bit (16 barev) nebo 8 bitů (256 barev) . Problém tak malých barevných hloubek spočívá v tom, že nelze vytvořit celou škálu barev. Řešením tohoto problému byla indexovaná barva, která přidává vyhledávací tabulku do framebufferu. Každá barva uložená v paměti framebufferu funguje jako index barev. Vyhledávací tabulka slouží jako paleta s omezeným počtem různých barev, zatímco zbytek je použit jako indexová tabulka.

Zde je typický indexovaný 256barevný obrázek a jeho vlastní paleta (zobrazená jako obdélník vzorníku):

Adaptační 8bitová paleta ukázkový obrázek.png   Adaptační 8bitová paleta.png

V některých provedeních bylo také možné zapisovat data do LUT (nebo přepínat mezi stávajícími paletami) za běhu, což umožnilo rozdělit obraz na vodorovné pruhy vlastní paletou a vykreslit tak obraz, který měl mnohem širší paletu. Například při prohlížení venkovní fotografie lze obrázek rozdělit na čtyři pruhy, horní s důrazem na tóny oblohy, další s listy, další s tóny pleti a oblečení a spodní se základními barvami. To vyžadovalo, aby každá paleta měla překrývající se barvy, ale pečlivě provedené, umožňovalo velkou flexibilitu.

Přístup do paměti

Zatímco k framebufferům se běžně přistupuje prostřednictvím mapování paměti přímo do prostoru paměti CPU, není to jediný způsob, jak k nim lze přistupovat. V metodách používaných k přístupu do paměti se framebuffery značně lišily. Mezi nejběžnější patří:

  • Mapování celého framebufferu na daný rozsah paměti.
  • Portové příkazy pro nastavení každého pixelu, rozsahu pixelů nebo záznamu palety.
  • Mapování rozsahu paměti menšího než paměť framebufferů, poté přepínání bank podle potřeby.

Organizace framebufferů může být zabalena pixelově nebo planárně . Framebuffer může být adresovatelný pro všechny body nebo může mít omezení, jak jej lze aktualizovat.

RAM na grafické kartě

Grafické karty mají vždy určité množství paměti RAM. Tato RAM je místo, kde je bitmapa obrazových dat „uložena do vyrovnávací paměti“ pro zobrazení. Pojem rámcová vyrovnávací paměť je tedy často používán zaměnitelně, když se odkazuje na tuto RAM.

CPU odesílá aktualizace obrazu na grafickou kartu. Videoprocesor na kartě vytváří obraz obrazu obrazovky a ukládá jej do vyrovnávací paměti snímků jako velkou bitmapu v paměti RAM. Bitmapu v RAM používá karta k neustálému obnovování obrazu na obrazovce.

Virtuální framebuffery

Mnoho systémů se pokouší emulovat funkci zařízení framebuffer, často z důvodu kompatibility. Dva nejběžnější virtuální framebuffery jsou zařízení Linux framebuffer (fbdev) a X Virtual Framebuffer ( Xvfb ). Xvfb byl přidán do distribuce X Window System, aby poskytl metodu pro spuštění X bez grafického framebufferu. Zařízení Linux framebuffer bylo vyvinuto tak, aby abstrahovalo fyzickou metodu pro přístup k základnímu framebufferu do zaručené mapy paměti, ke které mají programy snadný přístup. To zvyšuje přenositelnost, protože programy se nemusí zabývat systémy, které mají nesouvislé paměťové mapy nebo vyžadují přepínání bank .

Převrácení stránky

Vyrovnávací paměť snímků může být navržena s dostatečnou pamětí pro uložení dvou dat v hodnotě video dat. V technice známé obecně jako dvojité ukládání do vyrovnávací paměti nebo konkrétněji jako převrácení stránky používá framebuffer polovinu své paměti k zobrazení aktuálního rámce. Zatímco se tato paměť zobrazuje, druhá polovina paměti je naplněna daty pro další snímek. Jakmile je sekundární vyrovnávací paměť naplněna, framebuffer dostane pokyn, aby místo toho zobrazil sekundární vyrovnávací paměť. Z primárního bufferu se stane sekundární buffer a ze sekundárního bufferu se stane primární. Tento přepínač se často provádí po intervalu svislého zatemnění, aby se zabránilo roztržení obrazovky, kde je polovina starého rámečku a polovina nového rámečku zobrazena společně.

Překlápění stránek se stalo standardní technikou používanou programátory her pro PC .

Grafické akcelerátory

Jak rostla poptávka po lepší grafice, výrobci hardwaru vytvořili způsob, jak snížit množství času CPU potřebného k naplnění framebufferu. Běžně se tomu říká akcelerace grafiky . Běžné příkazy kreslení grafiky (mnoho z nich geometrických) jsou odesílány do grafického akcelerátoru v jejich nezpracované podobě. Akcelerátor poté rastruje výsledky příkazu do framebufferu. Tato metoda uvolňuje CPU k další práci.

Rané akcelerátory se zaměřovaly na zlepšení výkonu 2D GUI systémů. Při zachování těchto 2D schopností se většina moderních akcelerátorů zaměřuje na vytváření 3D snímků v reálném čase. Běžný design používá grafickou knihovnu, jako je OpenGL nebo Direct3D, která je v rozhraní s grafickým ovladačem k překladu přijatých příkazů do pokynů pro grafickou jednotku akcelerátoru (GPU). GPU používá tyto pokyny k výpočtu rastrovaných výsledků a výsledky jsou bitově přeneseny do framebufferu. Signál framebufferu je pak produkován v kombinaci s vestavěnými zařízeními pro překrytí videa (obvykle se používá k produkci kurzoru myši bez úpravy dat framebufferu) a všemi konečnými speciálními efekty, které jsou vytvářeny úpravou výstupního signálu. Příkladem takových finálních speciálních efektů byla technika prostorového vyhlazování používaná kartami 3dfx Voodoo . Tyto karty dodávají výstupnímu signálu mírné rozmazání, díky čemuž je aliasing rastrované grafiky mnohem méně zřetelný.

Najednou existovalo mnoho výrobců grafických akcelerátorů, včetně: 3dfx Interactive ; ATI ; Herkules ; Trojzubec ; Nvidia ; Poloměr ; Grafika S3 ; SiS a křemíková grafika . Od roku 2015 na trhu grafických akcelerátorů pro systémy založené na x86 dominují společnosti Nvidia (získala 3dfx v roce 2002), AMD (která získala ATI v roce 2006) a Intel (která v současné době produkuje pouze integrované GPU, nikoli diskrétní grafické karty).

Srovnání

U framebufferu je elektronovému paprsku (pokud ho zobrazovací technologie používá) přikázáno provést rastrové skenování , což je způsob, jakým televize vykresluje vysílaný signál. Informace o barvách pro každý takto zobrazený bod na obrazovce je během skenování stažena přímo z vyrovnávací paměti snímků, čímž se vytvoří sada diskrétních obrazových prvků, tj. Pixelů.

Framebuffery se výrazně liší od vektorových displejů, které byly běžné před příchodem rastrové grafiky (a následně i konceptu framebufferu). Při vektorovém zobrazení jsou uloženy pouze vrcholy grafických primitiv. Elektronového paprsku na displeji výstupu je pak přikázáno pohybovat od vrcholu k vrcholu, hledání vedení přes oblasti mezi těmito body.

Podobně se framebuffery liší od technologie používané v režimech raného textového režimu , kde vyrovnávací paměť obsahuje kódy pro znaky, nikoli pro jednotlivé pixely. Zařízení pro zobrazení videa provádí stejné rastrové skenování jako u framebufferu, ale generuje pixely každého znaku ve vyrovnávací paměti, když směruje paprsek.

Viz také

Reference

externí odkazy