Diit.cz - Novinky a informace o hardware, software a internetu

WDDM 2.0/2.1, DirectX 10.1, Závěr

DirectX logo
DirectX 10, na jednu stranu by se dalo říci „staré známé“ rozhraní. Na stranu druhou však budou v této verzi představovat takový malý milník. Od uvedení DirectX 9 před několika lety se toho zas tak moc mezi jeho programátory nedělo, zato výrobce grafických procesorů lákala implementace jedné myšlenky za druhou. A právě proto přinese desítková verze několik věcí, které se spolu shodou okolností sejdou ve stejném momentě. Zaprvé se svezou s uvedením na trh ve stejné lodi s OS Windows Vista a tím i „prvním nástřelem“ Windows Display Driver Model. Pak samozřejmě nesmíme opomenout podporu unifikovaných shaderů v nové verzi rozhraní, kterou přinesou do PC světa grafiky s čipem R600 a kterou ATI hlásá do světa patrně nejvíce. Však jí velmi pěkně běhají v GPU Xenos v Xboxu 360 a v chystaném GPU R600 si jistě také nepovedou špatně. Ale nejen ATI, nýbrž i nVidia a hlavně Microsoft hlásají do světa ještě další věci v čele s řadou dalších chystaných technologií v DirectX 10 a 10.1 a také WDDM 2.0 a 2.1. Takže se na tyto vpravdě revoluční inovace podívejme tročičku podrobněji...

Kapitoly článků

3.  WDDM 2.0/2.1, DirectX 10.1, Závěr

Windows Display Driver Model

Když už se bavíme o DirectX 10, bavíme se automaticky o Vistě a tudíž i o WDDM. Nemělo by vás tudíž překvapit konstatování, že všechny zde popsané změny budou implementovány právě v novém modelu ovladačů pro tento operační systém. Vše zde popsané má pak logické vyústění v absenci DirectX 10 pro Windows XP. O Windows Display Driver Modelu však na setkání ATI v Londýně nezaznělo ani slovo. My se však ještě krátce na WDDM a jeho úlohu podívejme.

Windows XP Driver Model WDDM

Vlevo máte model používaný ve Windows XP, vpravo pak ve Vistě. Nejprve si objasněme stávající přístup. Ve Windows XP si aplikace povídají nejdříve s příslušným API, ať již je to Direct 3D, OpenGL nebo 2D. Jedinou výjimku v současné době tvoří OpenGL, neb není součásti Microsoftího OS. Příslušné API tak ihned komunikuje s ovladačem tohoto rozhraní. Všechny tři typy pak směřují svoji komunikaci přímo Windows XP kernelu a teprve „v jeho útrobách“ sídlí to hlavní, tedy samotné ovladače rozhraní 2D, Video a 3D, které komunikují přímo s grafickou kartou.

Naproti tomu Vista zavádí tzv. „User Mode Drivers“ a „Kernel Mode Driver“. Účelem je přesunutí co největší části ovladačů pod správu uživatele (proto je zaveden User Mode). V User Mode tak budou sídlit ovladače pro Direct 3D, OpenGL (jeho pozici ve schématu ignorujte, víme přece, že OpenGL pojede díky iniciativě výrobců GPU ve Vistě nativně) a také DXVA (DirectX Video Acceleration - toto si nepleťte s přehrávačem filmů. O něm víme, že bude kvůli chráněným HD filmům sídlit v kernelové části systému).

Výhoda přesunutí ovladačů rozhraní do uživatelské oblasti je i další. Ve Windows XP, pokud šel ovladač grafiky „do modra“, měli jste útrum. Ve Vistě prostě „zatuhne“ jen ta příslušná část, modelově třeba DXVA ovladač, ale nic jiného. Prostě vám od té chvíle nepoběží akcelerace, ale budete stále schopni pracovat třeba skrze Aero Glass se samotnými Windows, stejně tak budete moci hrát hry přes Direct 3D i OpenGL. Prostě proto, že „zatuhla“ jen jedna nadstavba, zatímco kernelový přímý ovladač zařízení běží dál.

Významu pozdyde i řada dnes v ovladačích implementovaných schopností oživení GPU po výtuhu (VPU Recovery v Catalystech apod.). Tato schopnost se přesune do Windows Vista. Pokud ovladač grafiky na kernelové úrovni shledá GPU ve „vytuhlém stavu“, provede restart GPU sám. Pod Vistu se přesune i správa paměti na grafické kartě.

Další zajímavostí jež by rozhodně neměla uniknout vaší pozornosti je „Paralel Engine Support“. Tento prvek ovladačů Radeonů je vyvíjen přímo v ATI a jeho základní myšlenkou je poskytnutí možnosti provozovat pod jedním ovladačem grafiky více grafických rozhraní současně. Tedy ve stejný moment provozovat například jak Direct 3D tak DXVA, nebo OpenGL, zajímavé má být zejména ve spojitosti s CrossFire. U této příležitosti nelze nezmínit vlastnost, která bude ve Vistě nativně implementována: tzv. „Linked Adapters“. Ta má poskytnout schopnost provozovat v systému více GPU tvářících se jako jediné, přičemž všechna GPU a paměti na kartách mají být společně sdílené. Zní to sice šíleně, ale na PCI Express sběrnici si dá zjevně vymyslet (a doufejme i zprovoznit) takřka cokoliv. Na Linked Adapters se tak víceméně můžete dívat jako na jakousi speciální univerzální variaci SLI/CrossFire.

DirectX 10.1

Ale svět nekončí s DirectX 10. Ty nás sice teprve čekají, ale to neznamená, že bychom si nemohli popovídat i o verzi následující. Jedna z hlavních věcí, kterou má tato novější verze přinést, bude zlepšený přístup ke shaderům, specielně pak lepší kontrola při práci s multi-sample antialiasingem. Vývojáří budou moci mimo jiné vytvářet vlastí downsamplovací filtry. Vylepšení dozná i Floating Point Blending, Shadow Filtering. Obecně mají být DirectX 10.1 lépe optimalizovány pro chod na víceprocesorových systémech. Sníží se počet potřebných volání API pro tvorbu a renderování při počítání odrazů a lomů. Změn dozná Cube Mapping, s nímž půjde rychleji pracovat za přispění indexovacích polí.

Z novinek pak všichni hráči zaplesají na 32bitovým floating-point filtrováním, které bude oproti 16bitovému v DirectX 9/10 představovat zlepšení vizuální kvality (a také zvýšení nároků na výpočetní výkon GPU). To by mimo jiné mělo vyústit i ve vyšší kvalitu HDR renderování. Zvýší se i celková preciznost výpočtů v celé renderovací pipeline, podrobnosti však zatím nebyly zveřejněny.

Dále bude aplikacím předána plná kontrola na antialliasingem. Aplikace tak bude moci rozhodovat o kvalitě antialiasingu i požité metodě (multisampling, supersampling) a také o volbě vzorků pro antialiasing, počítá se přitom s minimálně čtyřmi vzorky na jeden pixel, tedy 4×AA (což ale nevylučuje možnost použití např. 2×AA). Aplikace dostane kontrolu i nad Pixel Coverage Mask, která se využívá např. při práci (mimo jiné i antialiasingu) s vegetací, Motion Blurem, obecně mnoha malými „částicemi“.

WDDM 2.1

Windows Display Driver Model ve verzi 2.1 přinese oproti svému předchůdci některá podstatná vylepšení. Jedním z hlavních bude navýšení výkonu tohoto „rozhraní“ při použití DirectX 10.1 kompatibilních grafických karet. Zlepší se implementace context switchingu. WDDM 2.1 bude schopno daleko rychlejšího přepínání grafických úloh využívajících extrémně dlouhé shaderové výpočty, v typických úlohách bude rychlost přepínání srovnatelná s WDDM 2.0. V současnosti, pokud chcete ve Windows XP přepnout z jedné „grafické úlohy“ (přesněji dílčího výpočetního vlákna zpracovávajícího grafické úlohy) do jiné, musí se nejprve vyprázdnit všechny používané buffery. WDDM 2.0 má v tomto přinést zlepšení, záměna „úloh“ bude proveditelná po doběhnutí aktuálního příkazu (resp. „trojúhelníku“, domnívám se, že je tím myšlen aktuálně renderovaný elementární objekt Aero Glass rozhraní, ale blíže toto specifikováno není). Ve WDDM 2.1 vše dojde ještě podstatně dále, úlohy půjde přepnout přesně v okamžiku, kdy vzejde požadavek, tedy bez nutnosti doběhnutí aktuálního elementárního příkazu „na popředí“ (ale neptejte se mě v diskusi jak, tohle je už „magie“ :-). Vše přitom bude akcelerováno pomocí GPU (ano, vizuální stránka s názvem Aero Glass byla zjevně jenom začátkem :-). Z tohoto samozřejmě logicky plyne, že grafika v operačním systému v obecném slova smyslu poběží tak paralelizována, že je lepší si to ani nepředstavovat. I zde tak vstupuje na scénu nutnost co nejvíce eliminovat prodlevy, kdy se jen „řeší doprovodné záležitosti“ a nepočítá se přímo grafika. Tak, jak jsme si to psali o kousek zpět.

Výkon context switchingu ve WDDM 2.0 by se měl rychlostí přepínání vyrovnat stávajícím Windows XP. WDDM 2.1 si pak u úloh s extrémně dlouhými shadery povede podstatně lépe, takže je šance, že se to pozitivně projeví v subjektivním dojmu uživatele ohledně svižnosti OS. Předpokládá se při renderování GUI s 60 fps (tedy jeden snímek každým 17 ms), že rychlost přepnutí úlohy se vejde do 100 µs. Přepínání mezi třemi aplikacemi má tuto dobu navýšit jen o přibližně 2 %.

Dalším významným zlepšení projde reakce grafického systému na „page fault“ (volně řečeno, selhání požadavku na data, která se nenacházejí na místě v paměti, kde jsou očekávána). Doposud je s tímto celkem problém a GPU se s tím neví „rozumně“ vyrovnat. WDDM 2.0 již zařídí slušnou nápravu. GPU při page fault prostě „zastaví“, informuje operační systém o chybějící stránce v paměti a restartuje ve chvíli, kdy se v ní objeví správná data. WDDM 2.1 k tomu bude přistupovat ještě o něco elegantněji. GPU by v té době měla mít dodatečnou podporu pro ošetřování těchto stavů na elementární úrovni právě ve spolupráci s WDDM 2.1. Právě díky „našlapanému“ context switchingu nebude muset GPU na page fault místě zastavit, ale automaticky se „switchne“ na následující, tentokrát již zdravou, část paměti a pokračuje dál v úloze (tedy zobrazování grafických dat). To si bude moci dovolit právě díky tomu, že context switching bude možno provést i okamžitě uprostřed elementárního příkazu, uživatel tak vlastně nic nepostřehne. Tiše pak předpokládejme, že, než by GPU v „dalším cyklu“ mělo na toto místo znovu narazit, bude již příslušná oblast paměti naplněna správnými daty. Jen tak mimochodem, Vista bude používat heuristickou analýzu pro přednačítání grafických dat do stránek paměti.

Závěr

Tak, máme to za sebou, oddychněte, povolte opasky a relaxujte. Já osobně se tak nějak nemohu zbavit dojmu, že Aero Glass a implementace ochran HD videa měla lid připravit na následný šok. Asi každému je jasné, že implementace moderních technologií do operačního systému není žádná legrace, ale tento článek vás možná donutí se zamyslet, že ono to neustálé oddalování Visty má možná své opodstatnění. Jakákoliv byť sebemenší chybička v implementaci dnes popisovaných technologií by mohla mít nedozírné následky v chybovosti tohoto OS. Bez ohledu na to však začínám mít nekalý pocit, že Radeon na bázi GPU R600 asi bude tou nejnižší vhodnou kartou pro svižný operační systém a hry ve vysokých rozlišeních v letech následujících. No ... možná ty R600 grafiky rovnou dvě do CrossFire a přidat k nim jednu „pomalejší“ na fyziku :-)...

Kapitoly článků
3.  WDDM 2.0/2.1, DirectX 10.1, Závěr

David "David Ježek" Ježek

Bývalý zdejší redaktor (2005-2017), nyní diskusní rejpal.

více článků, blogů a informací o autorovi

Diskuse ke článku Pod pokličkou unifikovaných shaderů, DirectX 10/10.1 a WDDM 2.0/2.1

Neděle, 8 Duben 2007 - 11:22 | Anonym | Zajímalo by mě kde budou "lidé konzumentní...
Středa, 6 Září 2006 - 21:20 | Anonym | 2 Paja666: ATI pouziva USA v Xenosu? Ano mas...
Středa, 6 Září 2006 - 20:19 | Anonym | Myslim ze je to cele ptakovina, od dlouhe...
Středa, 6 Září 2006 - 16:20 | Anonym | TOM: Taktiku nV bych nazval "vychcanejsi...
Středa, 6 Září 2006 - 14:45 | Anonym | nova verze neceho od ms bude rychlejsi nez ta...
Středa, 6 Září 2006 - 13:36 | Anonym | iLAMA: Podle slovniku je to firma, ktera nerada...
Středa, 6 Září 2006 - 12:38 | Anonym |  Tom: Co je to nVidia ? ;-)
Středa, 6 Září 2006 - 08:04 | Anonym | Jouda: http://www.3dfx.cz/glossary/slovnicek.htm
Středa, 6 Září 2006 - 00:26 | Anonym | To xR: S tim heslem je to vystizne :) Navic bych...
Středa, 6 Září 2006 - 00:07 | Anonym | Ale Tom ma vlastne pravdu. V DX10 samozrejme dale...

Zobrazit diskusi