DirectX 12 - zlepšení nového API Windows 10 pro mobilní zařízení
18. 11. 2015 08:00 Rubrika: Technologie Autor: Jakub Pavlis
S vydáním Windows 10 je k dispozici také nové programovací rozhraní DirectX 12. Jaké novinky a jaké praktické použití mohou očekávat uživatelé mobilních zařízení, především notebooků? A co na to výrobci grafických karet nebo jiných operačních systémů? Otázek je určitě bezpočet, některé si zodpovíme právě teď.
Začít by bylo určitě dobré tím, co to vlastně DirectX je. Jedná se o soubor knihoven určených pro platformu Windows 10, které poskytují aplikační rozhraní (API - application programming interfaces) pro přímé ovládání hardwaru. Účelem je co nejlepší využití hardwaru, který je k dispozici a je s danou verzí DirectX kompatibilní, což není samozřejmé. Knihovny řeší celou radu úloh – zpracování zvuku (DirectMusic), používání vstupních zařízení (DirectInput), fontů (DirectWrite), přehrávání zvukových samplů (DirectSound) a samozřejmě 2D (DirectDraw, Direct2D) a 3D (Direct3D) grafiky. Právě ta představuje jednu z nejnáročnějších a nejžádanějších úloh v počítačovém světě, samozřejmě kvůli hrám, proto je na ni upnuta největší pozornost.
DirectX vznikl v roce 1994 a vyšel v roce 1995 jakou součást Windows 95. Plnit měl dvě úlohy. Umožnit co nejširší nabídku aplikací, především her, na novém operačním systému a dát vývojářům do ruky efektivní nástroj k programování nových her, potažmo jakýchkoli aplikací. Druhou úlohou bylo především usnadnit uživatelům instalaci a provoz her bez velkých zásahů do systému. Pamětníci se slzou v oku vzpomenou na pokoutně šířené návody k úpravám autoexecu a config.sys kvůli alokaci paměti pro Dune 2 na 386. Úkol se povedl a jednotlivé verze DirectX nás provází již 20 let.
Jaká je hlavní výhoda nového API? Není ničím překvapivým, že stále stejná – vyšší grafický výkon na stávajícím „železe“, tedy hardwaru. U her optimalizovaných pro DirectX 11 to jsou obvykle zlepšení v řádech jednotek fps, ale stále tu zlepšení je. A zejména pro uživatele low-endových grafik, tedy většinu mobilního světa, to může znamenat rozdíl mezi nehratelností a jakouž-takouž hratelností. Výhod však bude více.
Především Microsoft si slibuje od DirectX 12 snazší vývoj aplikací napříč různými přístroji. Toto API potkáme jak u PC, tak v mobilech s Windows 10 a v konzoli Xbox One (sám název Xbox je údajně zkratkou za DirectX Box). To znamená především znazší porty aplikací, tedy i her, mezi těmito zařízeními. A zejména v oblasti mobilních aplikací na tom není dlouhodobě Microsoft dobře. A Xbox také bývá vnímán spíše jako ten druhý vzadu za Playstationem.
Nejzajímavější technologií, kterou DirectX přinese, bude bezesporu Multiadapter. Přes DirectX lze „donutit“ spolupracovat grafické karty různých výrobců. Hráči už radostně zkoušejí nejrůznější kombinace špičkových herních monster a nejvíce si mne ruce AMD, které díky vývoji API Mantle má docela náskok i ve využívání některých technologií v DirecX 12, protože v těchto nasazeních boduje lépe. Zásadní ale je, že prakticky všechny běžné počítače, notebooky obzvláště, mají integrované grafické jádro, obvykle od Intelu. A některé i dedikovanou grafickou kartu. Proč tedy nespojit jejich výkony? První vlaštovkou bylo modifikované Crossfire zapojení u integrovaných a dedikovaných Radeonů, teď už ovšem nejsme omezeni téměř ničím a můžeme se těšit na nové notebooky vyrobené pro Windows 10. Zvýšení výkonu sice není tak markantní, jak bychom rádi, ale u spojení integrovaných a dedikovaných karet se mluví o navýšení výkonu o 10-20 %, což při nulových nákladech není vůbec špatné.
Zajímavostí je, že u Multiadaptéru není jedno, kterou grafickou kartu pověříte řízením výpočtů. Obecně lze říci, že Radeony od AMD si vedou mnohem lépe, i když v testech jednotlivých karet mají horší skóre, než srovnatelné NVIDIA.
Velkou událostí je také zřízení asynchronních shaderů. Jde o jakousi obdobu Hyper-threading technologie. DirectX umožňuje grafickým kartám pracovat s více frontami úloh najednou, paralelně. Mohou například počítat obecné výpočty mezi grafickými ve chvílích, kdy grafický výpočet čeká například na dokončení práce rasterizační nebo texturovací jednotky. Takovým výpočetním úkolem může být třeba postprocessing scény, takže za stejnou dobu vypočtete lepší výsledný obraz, případně můžete mezi grafické výpočty vmísit něco zcela jiného v případě multitaskingu.
A opět zajímavost – NVIDIA v současnosti doporučuje vývojářům minimalizovat přepínání front asynchronních shaderů, protože její karty výrazně zpomaluje. Navíc se považuje za prokázané, že jde o hardwarový problém, vyřeší ho tedy až nástup nové architektury Pascal, nikoli jen úprava ovladačů. Naopak Radeony přepínání zvládají bravurně a dost z toho těží. Chcete vysvětlení?
AMD od roku 2013 vyvíjelo a později v roce 2014 představilo vlastní API Mantle, které přinášelo řadu podobných technologií, DirectX 12 lze z tohoto úhlu pohledu chápat jako reakci Microsoftu na nebezpečnou konkurenci. AMD samotné však nedokázalo jinak dobrý Mantle prosadit do obecného používání, časem svůj projekt přestalo rozvíjet, ovšem nasbíralo řadu zkušeností a její karty s ním počítají už v návrzích. NVIDIA takovou zkušenost nemá, je tedy v tomto směru vývoje poněkud pozadu. Mantle však nezmizel úplně. AMD ho předalo OpenGL konsorciu, které na jeho základech vyvíjí API Vulkan, které bude jakýmsi next-gen OpenGL. A tady DirectX 12 vzniká velká konkurence s jednou zásadní výhodou. Zatímco DirectX je jednoplatformní, byť se „roztahuje“ na různých zařízeních, Vulkan je multiplatformní – bude podporovat Windows 7/8/10, Linux i Android a poběží na zařízeních nejen od Intelu, NVIDIA a AMD, ale také Qualcommu, Samsungu, ARM a dalších. A podpora je také velká, nechybí například Google. A sen všech nadšenců do Linuxu – pořádné hraní pod GNU/Linuxem, by tak mohlo být velice blízko.
Zbývá zodpovědět poslední otázku – jak je to s podporou hardwarem? Kompatibilní je široká nabídka karet vzniklých v posledních letech, u NVIDIA se jedná o všechny karty s architekturou nazvanou po významných vědcích, tedy Fermi, Kepler i Maxwell. U AMD pak jsou plně kompatibilní Karty se všemi verzemi architektury GCN. Kompatibilita ovšem znamená fakt, že na tomto hardwaru můžete DirectX 12 provozovat a že z některých jeho výhod mohou tyto grafiky čerpat. Plnou podporu, tedy využití všech technologií nabízených pod značkou DirectX 12 (či spíše Direct3D) však aktuálně neumí žádná karty. Nejblíže jsou tomu desktopové grafiky NVIDIA založené na aktualizované architektuře Maxwell 2.0 a Radeony s jádrem Fiji, i těm ale k úplnosti podpory DirectX 12_1 chybí vždy alespoň jedna technologie.