Historie grafických karet v noteboocích – 2. díl: od SVGA k přehrávání DVD
V prvním díle jsem se vrátil do úplných počátků přenosných počítačů typu PC, a protože se lidstvo nespokojilo s 16 barvami a rozlišením 640×480, je i nadále o čem psát. Zavítám do doby, kdy grafické karty začaly ulehčovat práci procesoru, a ukážu, co se změnilo s masivním rozšířením systému Windows.
V minulém díle jsem skončil u grafických čipů, s nimiž většina notebooků zvládala maximálně rozlišení 640×480, a to „jen“ v 16 barvách. Celé vykreslování řešil procesor pixel po pixelu a grafická karta mu příliš nepomohla. Dokud se pracovalo převážně v textovém režimu, bylo to jedno, jenže v roce 1990 se do počítačů dostává systém Windows 3.0 a s ním také ovládání počítače v grafice.
Hromadný přechod na Windows přišel až tak kolem roku 1992, když vyšla verze 3.1. Asi by bylo dobré ve zkratce uvést, v jaké situaci se tou dobou notebooky nacházely. Výkonným stolním počítačům kralovaly procesory 486 a přenosné počítače se staly rychle rostoucím segmentem, z jehož koláče si chtěl každý něco ukousnout. Výsledkem tvrdé konkurence byla (na západě) nízká cena základních systému – notebook s 20MHz procesorem 386SX, 2MB RAM, VGA kartou a výdrží 2-3 hodiny stál jako průměrný lepší stolní počítač. Kdo nelpěl na výkonu, mohl získat tou dobou velmi použitelný mobilní nástroj.
Reklamní kampaň „intel inside“ v InfoWorldu (zdroj: Google Books – přesné číslo už nemohu najít).
Notebooky se dostaly do popředí také na veřejnosti a mnozí výrobci je začali brát vážněji. Intel už u generace 386 začal s výrobou mobilních variant svých procesorů (Intel 386SL). Nemám teď na mysli pouze úspornější výrobní proces (ten už byl například u 80C86-2), ale přepracované jádro vybavené mnoha šetřícími mechanismy pro snížení spotřeby při nečinnosti. Koncem roku 1992 pak Intel představuje nový mobilní procesor Intel 486SL s frekvencí 25 MHz, 8kB cache a integrovaným matematickým koprocesorem (jádro 486DX), čímž otevírá bránu k opravdovým multimediím (při odběru 1000 kusů stál tento procesor 260 USD).
Jako reakci výrobci představili mobilní SVGA čipy s podporou 256 barev ve vysokém rozlišení (tím tehdy bylo myšleno cokoli od 640×480 včetně), které se však po technologické stránce příliš nelišily od svých předchůdců, a zrychlila se práce s pamětí a komunikace s procesorem. Jednou z příjemných novinek, která se touto dobou zařadila mezi standardní funkce, byla možnost současného zobrazení na LCD i externím monitoru, což bylo k užitku především při prezentacích s projektorem. Daleko větší změna se však týkala fyzické realizace. S dalším zmenšováním notebooků bylo nutné minimalizovat počet součástek, které byly ke složení grafické karty potřeba.
Schopnosti řešení jednotlivých výrobců byly podobné, takže se vrátím opět k Cirrus Logicu a jednomu z velmi rozšířených čipů té doby jako příkladu „za všechny“.
CirrusLogic CL-GD6410 a CL-GD6420 (1992)
Výrobce vzal návrh původního řešení (popsaného v minulém díle) a vměstnal většinu obvodů do jednoho čipu o 160 vývodech. Do něj se přesunul i DA (= digitálně-analogový) převodník pro připojení externího CRT monitoru a rozhraní pro řízení LCD panelu. LCD panely ještě nebyly tak standardizované, jako je tomu dnes, takže jednotka pro řízení LCD byla programovatelná a výrobce notebooku mohl její chování upravit pro své potřeby.
Všechno se do jednoho čipu nevešlo a z mnoha praktických (a ekonomických) důvodů zůstaly samostatně paměťové moduly (video-paměť i paměť pro skládání obrazu do LCD) a generátor hodinového signálu. Až o rok novější varianta určená pro sub-notebooky v sobě integrovala všechno až na video-paměť a vystačila si s jediným 512kB paměťovým čipem.
Model CL-GD6420 představoval řešení pro mainstream a mohl se pochlubit možností připojení až 1 MB RAM, což umožnilo na externím monitoru rozlišení 1024×768 při 256 barvách (v praxi se používalo spíše 512 kB postačujících pro 256 barev v 800×600). Kvůli omezené rychlosti pamětí a převodníku však tento režim fungoval jen v prokládaném módu při 43 Hz (to znamená 87 Hz v půlsnímcích při střídání vykreslování suchých a lichých řádků). Kombinace ISA sběrnice a absence jakékoli akcelerace způsobila, že bylo možné takto vysoká rozlišení používat jen pro nenáročnou, prakticky statickou grafiku. Pouhé překreslení okna aplikace přes celou obrazovku trvalo klidně sekundu.
Utility pro nastavení rozlišení a grafického výstupu od Cirrus Logic.
Low-endový model CL-GD6410 umožňoval připojení jen dvou paměťových čipů o maximální kapacitě 256 kB, což stačilo jen na 640×480 při 16 barvách. V této době byly prakticky všechny levné modely o podporu 256 barev ve vyšších rozlišeních ochuzeny, což nebyl zas takový problém. Do notebooků se nejčastěji montovaly monochromatické LCD panely, kde byl přínos vnitřní práce ve 256 barvách malý.
Zajímavější ovšem je, že lowend verze měly stejné pouzdro a byly elektricky kompatibilní. Výrobcům notebooků tak stačilo navrhnout jednu základní desku pro svůj vybavený model a stejnou použít i v ochuzené verzi. Pouze se na desku dal levnější grafický čip a menší množství jeho paměti. Když se pak dále vyhodily méně důležité komponenty jako zvukový čip a modem, osadil se horší procesor, ubrala RAM a barevný displej se vyměnil za menší monochromatický, rázem byla cena notebooku na polovině. Takové sdílení hlavních součástí ve více modelech se používá i dnes a jedná se o výborný způsob snížení výrobních nákladů.
Počátky grafické akcelerace
Příchod Windows ukázal, jak velkou brzdou jsou pro náročnější aplikace stávající grafické čipy. Bylo jedno, k čemu počítač využíváte – dokud jste byli ve Windows, pořád šlo o grafický režim a v aplikacích se pořád něco překreslovalo. Jenže takové překreslování vytěžovalo procesor, čímž se snižoval jeho výkon. Proto přišly na řadu první grafické akcelerátory – jen dva roky po rozšíření akcelerátorů v desktopech.
Původní řešení bez akcelerace mělo dva problémy. První se týkal nutnosti pracovat s grafikou pixel po pixelu. Při tehdejší rychlosti procesorů to znamenalo zátěž i při pouhém přesunu okna po obrazovce, přestože se okna vykreslila vždy až na cílové pozici. Druhý problém se týkal sběrnice, přes kterou se grafická karta připojovala. 16bit sběrnice ISA totiž při (pro notebooky obvyklých) 12 MHz nabízela propustnost jen kolem 11 MB/s a tu si navíc grafická karta nemohla celou zabrat pro sebe (na stejné sběrnici pracovala i ostatní zařízení jako například řadiče pevných disků).
Nové grafické akcelerátory řešily oba problémy. Grafický čip se připojoval přímo k procesoru pomocí 32bit lokální sběrnice nazývané VESA Local Bus (VL-BUS). Takové připojení se využívalo na systémech s procesory 386 (zřídka) a 486 (častěji) a grafická karta komunikovala na rychlosti FSB*1*, což u 486 notebooků dělalo v drtivé většině případů 25 MHz za předpokladu, že byl použit mobilní procesor (levnější notebooky používaly procesory ze stolních počítačů s rychlejší FSB).
Druhý problém vyřešila hardwarová akcelerace vykreslování pomocí takzvaných Bit Block Transfers (zkráceně se používá názvů BitBlt a blitter), kdy procesor nemusí číst/zapisovat ve video-paměti po jednom pixelu. Do registrů grafické karty se zadají parametry pro přenos bloku paměti a grafická karta provede operaci sama. Nejen, že je takové řešení výrazně rychlejší, ale ušetří také čas procesoru. Blitter ale nebyl nic nového. Herní konzole a různé domácí počítače jej s oblibou již dlouhé roky používaly.
Pro větší přiblížení opět popíšu nějaký konkrétní grafický čip. Přímo ideální je pro takový popis hi-end akcelerátor od Western Digital, který si našel cestu do obrovského množství notebooků snad všech výrobců (IBM na nich měla několik let většinu ThinkPadů). Tyto čipy používal například německý Siemens-Nixdorf, jehož notebooky byly u nás v té době velmi rozšířené.
Western Digital WD90C24A – Paradise SVGA (1993)
Akcelerátor WD90C24A patřil k tomu nejlepšímu, co šlo v notebooku najít. Jeho výkon byl téměř na úrovni karet v běžných stolních počítačích. Schválně uvádím slovo „běžných“, neboť do grafických stanic se pomalu dostávala výkonná řešení od Matroxu (Impresion Plus) s až 4 MB paměti a základní podporou 3D akcelerace (existovaly ovladače pro OpenGL i konkrétní aplikace jako AutoCAD).
Čip bylo možné připojit k ISA sběrnici i moderní VL-BUS pouhou úpravou zapojení. V praxi se většinou připojoval k VL-BUS kvůli větší rychlosti a podobným nákladům (připojení bylo přímo na vývody procesoru, takže nebyl potřeba další řadič). K velkému posunu došlo u podpory grafických módů. Vedle 256barevných módů přibyly také módy s 15bit a 16bit barevnou hloubkou, což znamenalo možnost zobrazit najednou 32, resp. 64 tisíc barev. K čipu se přidávala paměť o velikosti (do) 1 MB, ale high-color módy šlo použít jen do rozlišení 640×480 kvůli rychlosti integrovaného DA převodníku. Takty DA převodníku byly vyšší než u starších řešení, a konečně se tak začala objevovat možnost využít vyšší obnovovací frekvenci připojeného CRT monitoru (72/75 Hz v 640×480 a 800×600 při 256 barvách, případně 640×480 při 32 tisících barvách).
Ergonomická obnovovací frekvence 75 Hz v kombinaci s možností zobrazit 32 tisíc barev.
Vylepšení byla znatelná i na jednotce obsluhující LCD panely. U pasivních displejů typu DSTN sice zůstalo omezení na 640×480 při 256 barvách (pokud byl použit výstup do pasivního displeje, polovina paměti grafiky byla vyhrazena pro speciální buffer, ve kterém se výsledný obraz skládal), pro aktivní TFT panely však bylo maximem rozlišení 800×600 a při 640×480 bylo možné zobrazovat high-color režimy. Transmitér digitálního signálu podporoval 18bit přenos, což znamená 6 bitů na jeden barevný kanál (262 tisíc barev celkem). V té době šlo o něco úžasného, ale ani po 17 letech se situace nezměnila a dnešní notebooky mnohdy s displejem stále komunikují pouze s 6 bity na jednu barvovou složku (už naštěstí ne všechny).
Jen tak pro představu uvádím, že v roce 1994 se s tímto čipem v ČR prodával notebook Siemens-Nixdorf PCD-4ND (486DX2 50MHz, 4 MB RAM, ~300 MB disk) s barevným TFT displejem za cenu 90 000,- Kč s DPH a černobílým STN displejem za cenu 60 000,- Kč s DPH. TFT displeje v té době opravdu nebyly pro každého. Tento notebook byl mimochodem v ČR hojně rozšířen a ještě před pár lety jej bylo možné stále vidět v některých průmyslových pracovištích. Sám jsem na takovém notebooku začínal v té nejslabší konfiguraci a měl ho tenkrát „každý druhý“.
Grafický čip se nachází pod deskou procesoru (zde vyjmuta), aby měl přímý přístup k signálům jeho sběrnice.
V předchozí kapitole jsem nakousl Blitter jako jeden ze způsobů urychlení vykreslování. Čip WD90C24A2 jej měl a mimo přesunu bloku dat sloužil také k rychlému vyplnění obdélníkové oblasti jednou barvou, nebo dokonce opakovaným dvoubarevným vzorem do velikosti 8×8 pixelů. Mezi podporovanými funkcemi byla také klíčovaná průhlednost („blitované“ pixely určité barvy se nezkopírují) a akcelerace vykreslování čar.
Díky těmto funkcím se z hloupého adaptéru, který řešil pouze vykreslení obrazových dat na monitor, stal skutečný grafický koprocesor usnadňující práci hlavnímu procesoru v některých specializovaných úkonech. Vzhledem k tomu, že už všichni výrobci šli nad rámec standardů a každý své funkce implementoval jinak, vznikla nutnost instalovat grafické ovladače od výrobce pro zpřístupnění všech funkcí. Tehdy se ještě situace komplikovala, neboť se mimo Windows používal také OS/2 a každá DOSovská aplikace musela mít ovladač speciálně pro sebe. Na druhou stranu tehdejší ovladače grafických karet byly nesrovnatelně jednodušší než dnes. Definice registrů, adres a dalších potřebných parametrů se vešly do ovladače o velikosti jednotek kB).
Konkrétně čipy WD90C24 (A2) a jeho vylepšené verze s větší pamětí bylo možné vidět v noteboocích až do roku 1995 a dostaly se také do některých mobilních pracovních stanic založených na procesorech PowerPC, kde byly většinou doplněny o přídavný akcelerátor videa (včetně nahrávání). Tyto notebooky byly určeny výhradně pro profesionální uživatele a na disku měly přeinstalovaný operační systém UNIXového typu.
Plány Western Digital však směřovaly jinam, a tak byl vývoj grafických čipů postupně zastaven.
Příchod Windows 95 a zaměření na multimedia
Příchod Windows 95 byl určitým mezníkem ve světě počítačů typu PC. Ve svých počátcích byla tato platforma spíše pro smích po stránce grafických schopností, neboť jiné počítače nabízely rychlejší grafiku s vyšším počtem barev a někdy i rozlišením. Jenže v polovině 90. let se situace mění a z PC se stává multimediální platforma. Právě zde Windows 95 výrazně pomohl, neboť pro práci s (2D/3D) grafikou a multimedii nabídl sadu univerzálních rozhraní s volně dostupnou dokumentací pro vývojáře hardware i software.
Do notebooků se pomalu tlačí procesory Intel Pentium a s nimi (s malým zpožděním) také 32bit PCI sběrnice, která nahrazuje připojování zařízení na lokální sběrnici procesoru (VL-BUS). Grafické karty touto dobou (kromě těch v nejlehčích, nebo nejlevnějších noteboocích) zpravidla podporují aspoň 16bit barevnou hloubku (65 tisíc barev), základní grafickou akceleraci a možnost připojit LCD panely s vyšším rozlišením než 640×480.
Kromě toho se v lepších modelech objevují funkce pro přehrávání videa (sem tam doprovázené integrovaným TV výstupem, který po příchodu VGA z notebooků vymizel). Tou základní je tzv. klíčovaný overlay, což je místo na obrazovce, kam grafická karta vykresluje video, které sama zpracuje. V programech se pro něj většinou použije nějaká konkrétní barva, aby karta věděla, kde má obdélník s videem vykreslovat. Při vykreslování videa do overlay vrstvy lze využít dalších funkcí grafické karty. U prvních video-akcelerátorů to byly konverze barevných prostorů*2* (převod ze zdrojového YUV na RGB) a roztažení videa do požadovaných rozměrů na obrazovce. Rázem procesor nemusel zpracovávat vykreslení videa pixel po pixelu. Ušetřilo se tak velké množství procesorového času, který se mohl použít k něčemu užitečnějšímu (například dekódování zdrojového formátu).
Zatímco takový Motion-JPEG a MPEG-1 přehraje notebook s Pentiem a grafickou kartou vybavenou základní akcelerací videa celkem bez problému (v dříve používaném nízkém rozlišení), vyšší rozlišení (PAL) a pokročilejší formáty, jako byl přicházející MPEG-2 (DVD), už jen tak něco nezvládlo. Vybavit grafický čip akcelerací těchto pokročilých dekompřimačních algoritmů by znamenalo výrazné zvýšení jeho složitosti a výrobních nákladů. Výrobci tedy v noteboocích použili jinou fintu – ZV port.
ZV (Zoomed Video) port slouží pro připojení různých dekodérů, které video zpracují a následně odešlou přímou cestou do video paměti, aby jej grafická karta bez většího úsilí vykreslila. ZV port většinou propojoval grafický čip s PC Card sloty, do kterých se přídavné dekodéry vkládaly. Šlo o levný a snadný upgrade.
V této generaci grafických karet se angažovali staří známí výrobci jako Cirrus Logic a Chips & Technologies. V rozvíjejícím se mobilním segmentu viděli budoucnost i další velcí hráči ze světa stolních počítačů jako třeba Trident a S3. Zajímavou kapitolou byl dále NeoMagic, který se do grafických čipů velmi úspěšně pustil v roce 1996 a zaměřil se (nejen) na lehké notebooky, do kterých nabízel MagicGraph 128 – grafickou kartu včetně převodníků, oscilátorů a 1 MB video paměti v jediném čipu se 176 vývody (elektricky kompatibilní verze s oddělenou pamětí, uměla i akceleraci videa).
Z celé škály produktů jsem nakonec vybral k hlubšímu popisu akcelerátor, který považuji za nejpokročilejší. Je jím mobilní prvotina společnosti S3 – Aurora 64V+.
S3 Aurora 64V+ (1997)
Ač v mobilním segmentu bylo S3 nováčkem, s grafickými kartami mělo mnoho let zkušeností a předcházela ho pověst výrobce kvalitních a cenově dostupných grafických čipů. V případě Aurory vsadilo na jistotu a jako základ posloužil velmi úspěšný desktopový čip S3 Trio 64V+. Ten si našel cestu do mnoha stolních počítačů a díky tehdejší velmi příznivé ceně není problém najít dobové karty s ním ještě dnes (i v ČR).
Aurora 64V+ je stejně jako Trio 64V+ plně 64bit true-color akcelerátor do PCI s podporou BitBlt operací a DirectDraw včetně hardwarového blendingu (režimů poloprůhlednosti). Je k němu možné připojit 1-4 MB video paměti (FP nebo EDO) a výkonný (integrovaný) 24bit RAMDAC zvládne na externím monitoru zobrazit rozlišení až 1280×1024 při 256 barvách a vertikální frekvenci 75 Hz (běžnější 1024×768 funguje v 65 tisících barev při ergonomických 85 Hz). Tento akcelerátor se pároval ve výkonných noteboocích s procesory Pentium a Pentium MMX na frekvencích od 100 do 166 MHz.
Schopnosti akcelerace videa byly na svou dobu velmi vyspělé. Konverze barevných prostorů videa byla nezávislá na barevné hloubce desktopu (v okně mohlo běžet true-color video, ačkoli ve Windows byla plocha nastavena na 256 barev) a zvětšování videa na obrazovku používalo bilineární filtr, který zajišťoval roztažení s vyhlazením (ten mělo Trio až ve verzi 64 V2). Plně hardwarově bylo možné přehrávat videa ve formátech Indeo a Cinepak a částečně hardwarově byl akcelerovaný také MPEG-1. Pro připojení samostatných dekodérů byla připravena speciální sběrnice (zde nazvaná S3 Scenic Highway).
Roztažení nižších rozlišení na celou plochu displeje bez vyhlazení je poznat zejména podle kostrbatých písmen.
Zajímavější jsou ovšem ty funkce, které mobilní verze dostala navíc. Přímo v čipu byl integrovaný transmitér pro TFT i DSTN panely s 9, 12 i 18bit rozhraním a podporou centrování a roztahování nižších rozlišení na nativní (roztahování bylo bez vyhlazení). Pro TFT panel bylo maximem rozlišení 1280×1024, které tou dobou měly jen nejdražší mobilní workstation (často s ne-x86 procesorem). Dalším integrovaným obvodem je TV enkodér s podporou PAL a NTSC v kompozitním i S-VHS (S-Video) režimu. Tím zdaleka nejzajímavějším je ovšem bezpochyby druhá, oddělená screen pipeline*3*, kterou lze v materiálech S3 najít pod názvem DuoView.
Dvě samostatné části pro zpracování obrazu mají u notebooků obrovský význam a dnes je jimi vybavena každá grafická karta (poslední dobou už mají alespoň tři). Málokdo však ví, že první je nabídla v PC světě právě S3 (někdo si mylně myslí, že to byl Matrox). Windows 95 ještě nepodporoval správu více obrazovek, takže duální výstup měl smysl hlavně pro klonování obrazu, kde konečně nebylo nutné na všech připojených zařízeních používat stejné rozlišení se stejnou obnovovací frekvencí.
Ukázka kostrbatého obrazu na externím monitoru při klonování bez duálního řadiče (obraz je nejdříve roztažen do rozlišení interního displeje a až následně odeslán do externího monitoru).
Abych vysvětlil výhodu dvou screen pipeline, použiji jednoduchý příklad. Pokud máte notebook (s jednou screen pipeline) vybavený displejem s rozlišením 800×600 a připojíte externí monitor v režimu klonování, bude na něm zapnuté ve všech případech jedině 800×600 při neergonomické frekvenci 60 Hz, protože LCD panel s jinými parametry nedokáže pracovat. Pokud tedy nějaký program zapne rozlišení 640×480, bude obraz v grafické kartě roztažen na 800×600 a tento roztažený obraz se pošle opět i do externího monitoru.
Ukázka klonování s duálním řadičem. Na interním displeji je obraz roztažen do požadovaného rozlišení, ale v sekundární screen pipeline je obraz pro externí monitor v původním rozlišení.
Oddělené zpracování umožňuje například klonování, kdy interní LCD jede stále na svých 60 Hz, ale na externím monitoru je ergonomičtějších 85 Hz. Dále nevyžaduje ani stejné rozlišení obou zařízení. Pokud program zapne 640×480, na LCD se obraz roztáhne, ale na externím monitoru bude v původním rozlišení. Poslední výhodou je možnost zobrazovat současně na LCD i televizoru*4*. S3 už v době vydání hlásalo, že v přicházejících Windows 98 přibude správa více obrazovek, a tím pádem také možnost režimu rozšířené plochy.
Přídavné akcelerátory přímo v notebooku
Zatímco mnoho uživatelů od notebooku nečekalo víc než rychlé vykreslování tabulek v Excelu a aspoň 16bit barevnou hloubku, byly zde také profesionálové s velkými nároky na výkon. Výkonný notebook nikdy nenabídne tolik výkonu jako výkonný desktop. O tom není pochyb. Nicméně desktop si s sebou všude nevezmete, a když někdo při práci výkon potřebuje a je za něj ochoten zaplatit, byla by od výrobců hloupost, nevyjít této skupině vstříc – proto tu už od nepaměti máme i kategorii mobilních pracovních stanic.
Pro sofistikovanější práci s videem nebyly grafické čipy dostatečně vyspělé, a tak výrobci do svých nejvýkonnějších notebooků rovnou integrovaly dekodéry a kodéry pokročilých video formátů. Ty se připojovaly zároveň na PCI sběrnici i přímo ke grafickému čipu. Přídavný čip měl v systému vlastní ovladač a knihovny pro akceleraci podporovaných kodeků (většinou se přidal také nějaký program pro přehrávání).
Grafické karty pro ThinkPad 760: Nahoře širší hi-end verze s 2MB pamětí a MPEG akcelerátorem, dole základ s 1MB pamětí bez přídavných akcelerátorů.
Na přiloženém obrázku je vidět základní modul grafické karty hi-end business notebooku IBM ThinkPad 760XL. Základní modul je vybaven grafickým čipem Trident Cyber9385 (typický představitel této generace) s 1 MB paměti. Do workstation varianty ThinkPad 760XD se modul měnil za vybavenější verzi, která sice nesla stejný čip, ale měla ho taktovaný na vyšší frekvenci. Kromě toho byla paměť navýšena na dvojnásobek a funkcionalitu rozšířily dva další čipy. Ty se staraly o akceleraci MPEG-1 (v PAL rozlišení) i MPEG-2 (PAL s polovičním rozlišením na šířku) a S-Video vstup/ výstup. Rázem byly grafické schopnosti na úplně jiné úrovni.
Na výkonu grafické karty záleží (i bez 3D)
Širší veřejnost začala řešit výkon grafických karet až u 3D akcelerátorů. Do té doby se většinou řešily jen funkce na úrovni má/nemá. Avšak realita je taková, že i mezi grafickými akcelerátory (2D) byly velké rozdíly ve výkonu, a to nejen ve Windows při BitBlt operacích, ale také v DOSovských programech (hrách) používajících VESA.
Duke Nukem 3D: Trhák roku 1996 s procesorem počítaným 3D prostředím uměl využít vyšších rozlišení a (2D) akcelerace některých grafik.
Na vlastní kůži jsem si mohl vyzkoušet, že například tou dobou populární hra Duke Nukem 3D*5* měla na ThinkPadu 760XL stejnou plynulost v 320×240 jako na ThinkPadu 760XDv rozlišení 640×480, ačkoli všechny ostatní součásti jako RAM, procesor a disk byly identické. Přitom se bavíme o jednom grafickém čipu (jen v jiné verzi). Mezi různými čipy byly někdy přímo propastné rozdíly.
V této době byste ovšem narazili, kdybyste se snažili zjistit více o výkonu nějaké grafické karty v notebooku. Recenzenti notebooků se v časopisech grafickou kartou vůbec nezaobírali a z názvu čipu a velikosti paměti toho moc vyčíst nešlo (v českých recenzích se pro jistotu neuvádělo ani to).
Závěrem
V polovině 90. let se s vyšším rozlišením a barevnou hloubkou postupně přidala mezi základní vlastnosti i akcelerace vykreslování, čímž se začal z jednoduchého zobrazovacího čipu stávat velmi komplexní obvod, který do sebe postupně integroval stále více funkcí (např. video, akcelerace dekompresních algoritmů).
V očích uživatelů se stala grafická karta významnějším parametrem. Už se nešlo schovat za nějaký standard (CGA, VGA) a rozhodující byla podpora jednotlivých funkcí. Snaha o větší povědomí v důležitosti dobrých grafických čipů byla patrná i ze strany jejich výrobců, kteří mimo jiné přešli z nic neříkajících číselných značení k lépe zapamatovatelným názvům (Trident Blade, S3 Aurora, NeoMagic MagicMedia,…).
Větší důležitosti se také dostalo ovladačům, které se staly komplexnějšími. Mnoho funkcí se lišilo výrobce od výrobce a ovladač musel všechno správně napojit na aplikační rozhraní v operačním systému, aby mohly programy tyto funkce využít. Ne každý výrobce se s tím dokázal správně vypořádat, a tak se objevilo i pár případů, kdy například akcelerace videa nefungovala korektně, ač ji hardware podporoval, a řešení přišlo buď časem s novou verzí ovladače, nebo vůbec.
Co bude příště?
Příchod 2D/video akcelerátorů byl bezpochyby velkým krokem kupředu, ale svou malou „revoluci“ měly grafické karty teprve před sebou a nebylo jí nic jiného než 3D akcelerace. V příštím díle se přesunu do roku 1998, tedy do doby, kdy se 3D akcelerátory začaly dostávat do notebooků. V této době lze sledovat snad nejrychlejší vývoj v historii grafických karet a platilo zde stejně jako v desktopovém segmentu, že jednotlivá řešení zastarávala do půl roku od svého vydání.
Ne každý výrobce se s tím dokázal vypořádat. Někdo s výrobou grafických čipů přestal, někdo byl odkoupen a jiní naopak přišli, aby také zkusili své štěstí.
*1*) Přímé připojení ke sběrnici procesoru (FSB = front side bus) vyžadovalo od grafického čipu, aby komunikoval stejnou rychlostí, a do příchodu procesorů s dvojnásobnou vnitřní frekvencí (486DX2) komunikoval procesor s okolím svou plnou rychlostí. Mezi grafickým čipem a procesorem při takovém zapojení nebyl žádný další čip, což znamenalo dvě věci. Bylo možné využít maximálního dosažitelného výkonu, ale zároveň byl omezen počet zařízení, která se takto dají připojit, a omezení bylo tím větší, čím větší byla frekvence FSB. Ve světě notebooků si vše odladil výrobce, ale u stolních počítačů byla tato omezení zdrojem velkých problémů, které korunoval příchod Pentia. Přechod k PCI sběrnici byl už jen logickým důsledkem.
*2*) Barevnou hodnotu pixelu lze definovat různými způsoby. Konverze se do grafických akcelerátorů přidaly, neboť ve video-formátech se používala definice YUV (jasová složka + dvě rozdílové barvové informace), zatímco pro vykreslení na displej bylo potřeba získat hodnotu RGB (světlost základní trojice barev – červené, zelené a modré). Tento přepočet byl nutný pro každý bod každého snímku, což bylo náročné pro procesor, ale nepříliš složité na implementaci do specializovaného obvodu.
*3*) Screen pipeline představuje část čipu zajišťující propojení části paměti s libovolným grafickým výstupem (interní displej, výstupní konektory). Přidáním druhé takové části umožňuje současné zpracování dvou samostatných obrazů do dvou výstupů jedním čipem. Každý výstup pak může mít oddělené parametry (rozlišení, obnovovací frekvence) a může vykreslovat jiná obrazová data.
*4*) Do televizorů se vstupem v normě NTSC/PAL se mohl posílat pouze obraz v jednom konkrétním rozlišení s fixní řádkovou synchronizací a tyto parametry byly neslučitelné s tím, co vyžadoval LCD panel notebooku. Do příchodu karet s dvěma screen pipeline tedy nebylo možné klonování obrazu do LCD a TV výstupu zároveň.
*5*) Hra Duke Nukem 3D využívá softwarového vykreslování trojrozměrné scény, kdy procesor počítá pozici každého polygonu a přepočítá na něj jeho texturu (obrázek/vzor). Grafická karta se zde stará čistě o vykreslení procesorem spočítané scény na obrazovku.
1. pavt 3.1.2014 13:39:32
Fakt dobrá práce, swarme, díky za článek! Mimochodem, pamatuji si, že jsem měl na vejšce někdy cca 1993-4 referát o grafických kartách a byl jsem přesvědčen, že budoucností je VL Bus, tehdy byl dost v módě a jestli si dobře pamatuji, umožňoval v desktopu sdílet stejný slot s ISA konektorem…
Příště můžeš zkusit rozebrat také programovou podporu, protože ta byla taky v této době dost problém a mimochodem i to byl problém pomalé grafiky ve Windows – jestli si dobře pamatuji, tehdejší Windows měly interně bitplánovou grafiku, kterou následně konvertovaly na chunky grafiku v grafické paměti. Problémem jejich pomalosti byly právě tyto konverze a neschopnost programů přistupovat přímo do grafické paměti. Nejprve se objevila (cca 1995?) knihovna WinG, určená pro první hry (používala ji např.Civilizace II), posléze samozřejmě Direct X. To se ale dlouhou dobu hodilo jen na ty hry…
Každopádně moc díky, početl jsem si!
2. swarm 3.1.2014 16:16:38
Díky za komentář a za doplnění kolem API.
Lokální sběrnice VL-Bus jednu dobu byla docela žhavé téma. Vem si, že předtím tu bylo MCA a EISA, které mimo servery moc nikoho nezaujaly. VL-Bus se naopak rozšířila dost rychle. Vyšly specifikace a rázem to měl kdejaký stolní počítač a brzy na to i notebooky. Důvodem byly nejspíš úspory na licenčních poplatcích a vlastně taky extrémní jednoduchost. Spousta výrobců jako Compaq a DELL používali lokální sběrnice ještě před VL-Bus, když potřebovali udělat nějaký rozšiřující slot na paměti a rychlé speciální karty. Tady pouze lehce upravili návrh tak, aby zajistili kompatibilitu.
U počítačů přece jen trvalo, než někteří přešli (někteří to ani nestihli), protože již měli své ISA karty nakoupené, ale u notebooku nebylo o čem přemýšlet – ten samý čip šlo připojit buď přímo, nebo přes prostředníka v podobě ISA (většina grafických čipů kombinovaných s 486 uměla ISA, EISA, VL-Bus a často i MCA pouhou změnou zapojení).
Ano, v desktopu bylo možné použít ve VL-Bus slotech i ISA karty. Bylo to vlastně obyčejné ISA a za ní bylo ještě rozšíření o velikosti PCI s lokální sběrnicí. Při designu desky to bylo ušetření, ale u karet to výrobu naopak prodražovalo, neboť plošný spoj karty musel být vždy dlouhý přes obě části, přestože obvykle nebyl z větší části využitý. I to byl jeden z hřebíků do rakve tohoto řešení.
V letech 93/94 nebyl tvůj názor zas tak mimo. Intel si sice skálopevně stál za připravovaným PCI, ale zprvu měl málo spojenců, takže všichni vyčkávali. Navíc s první revizí PCI pak byly nějaké problémy s PCI čipsety pro Pentium taky. Až pak se to v nějakou chvíli zlomilo a bylo jasné, že PCI je budoucnost. Neřekl bych ale, že to bylo úplně jasné před rokem 1995.
—
Přesné důvody pomalosti základní práce s GUI pod Win3x moc neznám. Do toho tolik nevidím. WinG ale tušim vyšlo ještě v roce 1994 a to právě i pro Win3x, než se to pak přepracovalo do komponenty DirectDraw. Rozhraní řeším ve třetím díle, ale je to hlavně v souvislosti s 3D částí, kdy Microsoft skupoval jisté firmy, aby měl na čem stavět.
3. Ladis 4.1.2014 3:32:30
[1] Pokud vím, staré grafiky neuměly svoji videopaměť adresovat najednou (16bit adresace?), to až pozdější (linear video memory). Vybíral jsi chunk, a do něj kreslil. Dokonce to byl požadavek na grafiku od nějaké (možná dokonce první) verze DirectDraw, že musí umět linear memory. Takže tady hádám, že byla ta pomalost – že to Windows před programy skrýval, namísto aby nabídl (zvláště hrám) vykreslovat přímo do chunků (jako dělaly hry v DOSu – musely ale znát různé grafické chipy, protože rozdělení do chunků se mohlo lišit).
4. pavt 4.1.2014 11:45:37
[3] Je to jinak (viz. níže), já teda dělal až v Direct X, pod DOSem jsem nic podobného nezkoušel. Ten důvod, proč Windows toto programátorům nedovolovala, byla snaha o vytvoření abstraktní vrstvy (device context), která udělá software nezávislým na hardware (pod WinNT se to jmenovalo HAL). Prostě šlo o to, aby se na rozdíl od DOSu eliminovala nutnost znát hardware počítače a program pro něj upravovat. Programátor prostě ovládal univerzální zařízení, no a bylo starostí ovladačů to převést na reálný hardware. Pokud to ale potřeboval, mohl si zjistit, zda tu či onu funkci zařízení podporuje a případně tomu program uzpůsobit.
Windows jely (jestli si dobře pamatuji)na bitplánové grafice (graphics device context, GDC) , která samozřejmě umožňovala přístup k obrazové paměti celého okna té které aplikace, kde jste si mohl kreslit dle požadavků a aktuální nálady. Ale nikam jinam a kromě toho jste mohli pouze zapisovat. No a při vytváření reálného obrazu ve videopaměti Windows vzaly obsah virtuální obrazové paměti všech oken, správně to poskládaly dle viditelnosti, no a následně nacpaly do framebufferu karty. Tohle pochopitelně bylo šíleně pomalé, protože se ještě musela převést bitplánová grafika na chunky lineární grafiku. V bitplánové grafice máte každou bitovou rovinu uloženou separátně, zatímco v chunky grafice máte jeden byte=jeden pixel (256 barev), případně 2, 4 či 16, podle počtu barev. V případě 24bitové grafiky máte jeden bod=3 za sebou navazující byty. Důvod, proč byla bitplánová grafika ve své době tak populární, bylo šetření pamětí. Na Amize jste si mohl vytvořit obrazovku se třemi biplány, tedy osmi barvami, a ušetřit tak paměť (což na PC nešlo). Na PC to Windows zpočátky dělaly stejně právě z toho stejného důvodu (aby ušetřily paměť pro device contexty všech oken), ale znamenalo to pomalost celého grafického systému. Dnes je to pochopitelně už překonané.
No a právě zde je ten můj sklerotický problém – já si totiž nejsem zcela jist, zda to Windows interně opravdu dělaly bitplánově. V té době jsem programovával na PC i Amize, takže se mě to možná plete, ale řekl bych, že ano. Pokoušel jsem se to teď nalézt, ale nepodařilo se, takže na férovky přiznávám svou sklerózu:-)
5. Ladis 5.1.2014 14:50:37
[4] To co popisujete, je kompozitní manažer oken (ten má Windows až od Visty). Ten tehdy určitě nebyl, protože by OS měl mnohem větší nároky na systémovou paměť (držet si obraz všech oken). Kreslilo se přímo, ve videopaměti to stejně zabíralo jen počet pixelů na obrazovce (překryté části nikde uložené nebyly) a v systémové paměti to nezabíralo nic (když se okno/část okna odkryla, okno dostalo zprávu o nutnosti překreslit danou oblast).
To s těmi chunky jsem myslel tak (a tohle souhlasí s vámi), že když aplikace kreslila do svého okna, tak neměla možnost vědět, jak jsou rozdělené chunky (pokud grafika neumí linear memory). Takže bez přemýšlení kreslila grafiku napříč celým oknem sem tam a ovladač grafiky neustále přepínal aktivní chunk, a do něj vykreslil část z právě kreslené grafiky.
6. Ladis 5.1.2014 14:57:07
[4] Ke čtení z device kontextu: Až do příchodu kompozitního desktopu ve Vistě šlo z device kontextu displeje (ne samozřejmě tiskárny apod.) číst. Printscreen celé plochy byl jednoduchým čtením z device kontextu 0.
7. Masta 6.1.2014 1:41:10
Mě by zajímalo jak moc se liší dnešní a tehdejší graf. čipy. Předpokládám že blitter jako speciální obvod se asi nepoužívá. A z5ná kompatibilita je zajištěna softwarově.
8. Ladis 6.1.2014 2:25:33
[7] Pokud vim, bitblt je jediny, co zustalo (kopirovat FullHD 24bit pixelu je pekny zahul, a co kdyz chces jeste prevadet mezi ruznymi pixel formaty?). Naopak kresleni car, kruznic apod. grafikou je brzda, protoze CPU ztraci cas komunikaci s GPU.
9. pavt 6.1.2014 8:47:09
Ladis->Asi máte pravdu, už jsem ve věku, kdy mám nárok na sklerózu:-) Na ošetřování WM_REDRAW a Invalidate jsem již pozapomněl… Nejsem si ale jistý tím vaším tvrzením, že GDC vám umožnilo kreslit přímo ve videopaměti. Bylo to přes WinAPI šíleně pomalé a kromě toho si pamatuji, že v dokumentaci Direct X se stále zdůrazňovalo, že nyní konečně programátor může přímo přistupovat do videopaměti. Samozřejmě, Direct X měl zásadní výhodu, že umožnil vytvářet bitmapy přímo ve videopaměti, člověk nad tím měl kontrolu, takže bitblt operace pak probíhaly s HW akcelerací podstatně rychleji. Ale jak říkám paměť je děravá a tyto detaily už jdou mimo mě.
S tím čtení z GDC jsem se to dočetl nyní, když jsem zkoumal ty bitplány (už si to přesně nepamatuji), no a zní to logicky – protože pokud byste zkoumal obsah zakryté části okna, tak nevím, co byste dostal, nikde nebyla uložena. Samozřejmě, GDC 0 pro printscreen byl jiný případ, ale pro jednotlivá okna mi to, jak píšu, dává smysl. Takže bych spíše řekl, že po příchodu kompozitního desktopu se z GDC dá číst… Ale hádat se nemíním, už se tomu léta nevěnuji:-)
Masta->No, neznám sice všechny implementace blitteru, ale jako speciální čip nikde moc nebyl (možná někde na SGI či SUN stanicích), spíše byl vždy součástí nějakého čipu, například na Amize to byl Fat Agnus. Jeho funkcionalita (tedy rychlé bitblt operace s maskováním atd.) je určitě implementována i dnes, ale jak píše Ladis, to kreslení už dnes nehraje roli – tehdejší GUI bylo velmi jednoduché, takže pro okno vykreslené několika čarami a vyplněné jednoduchým vzorkem dávalo smysl mít to vykreslování akcelerované. Dnes už to k ničemu moc není. Kromě toho, i na Amize nakonec došlo k fázi, kdy některé funkce Fat Agnusu (například rychlé přesuny bloků paměti, její mazání atd.) se s turbokartami vyplatilo dělat pomocí CPU, protože byl daleko výkonnější.
10. jarop 6.2.2014 15:32:31
Zdravim.
Píšete, že „Duke Nukem 3D uměl využít vyšších rozlišení a (2D) akcelerace některých grafik.“ Fakt by ma zaujímalo akú akceleráciu (blitting?) a u ktorých kariet. Nič som o tom nenašiel. Vo všeobecnosti sa 2D akceleracia v DOSe takmer nepoužívala, lebo neexistoval programový štandard. Než prišlo VBE/AF, nastala era Windows a DirectX.
Je len pár programov, ktoré dokázali využiť v DOSe 2D akceleraciu – napr. aplikácie ako QuickView. A občas mala niektorá hra vlastné ovladáče pre karty (Dawn Patrol, Flight simulator) ale ktovie, či použili blitting alebo kreslenie čiar.
Vačšina kariet mala jedine ovládač pre Windows GDI a OS/2, prípadne nejaké CAD systémy a na DOS výrobcovia už vtedy kašlali.
11. swarm 6.2.2014 15:57:42
[10] Ad Duke3D: Nemám tu hru u sebe, ale nastavovalo se to přes položku screenmode (tam, kde se dalo zapnout i stereoskopické zobrazení) v duke3d.cfg. V setupu to vyvolat nešlo. S jistotou si pamatuju podporu karet od S3 (kterých, to už nevim).
O zbytku se nepřu, v článku ostatně říkám to samé.
12. jarop 6.2.2014 16:10:47
Ad 7: Hardwarovy blitter sa už nepoužíva, miesto toho texturovacia jednotka kreslí tzv.textured quads. Už sa ani nepoužíva ten starý spôsob blittingu, kde sa presúvali obdlžnikové výrezy vrámci framebuffera. Dnes GPU vytvára kreslí každý frame od piky. Jednoducho výsledný obraz poskladá z offscreen bitmap(textur).