Seznam kapitol
Co jsou to asynchronní shadery a k čemu vlastně slouží? Jak zapadají do kontextu DirectX 12? Které grafické karty je podporují, které zase ne a proč? V dnešním článku odpovíme právě na takovéto otázky.
Multi-engine - implementace AMD a Nvidia
Jistě jste si všimli, že jsme zatím prakticky všechny naše příklady demonstrovali na grafických kartách architektury
GCN
společnosti AMD. Je to z jednoho prostého důvodu, tato architektura je dnes poměrně dobře zdokumentována a v případě DirectX 12, společnost AMD do světa vypustila spoustu informací o tom, jak dobře jsou její grafické karty GCN na paralelní workload připraveny.
Pokud byste se nás zeptali na to, jak je na tom společnost Nvidia se svými architekturami Kepler a Maxwell, museli bychom vám prostě a jednoduše odpovědět, že nevíme. Jistě, na internetu se objevuje spousta „zaručených“ informací o tom, jak to či ono tyto grafické karty podporují či nepodporují, ale věřte, že většina těchto informací jsou pouze spekulace, navíc většinou nesprávné.
Prakticky všechny převzaté informace o podpoře Multi-engine na grafických kartách Nvidia pocházejí z článku
Amd dives deep on asynchronous shading (anandtech.com)
, který je však uváděl chybně. Dnes je tento článek již opraven (některé chyby však v článku stále přetrvávají), nicméně objasnění podpory Multi-engine na grafických kartách Nvidia stále nenabízí.
Společnost Nvidia o tom, jak je technologie Multi-engine na jejich grafických kartách podporována, mlčí a my můžeme jen přemýšlet o pravých důvodech tohoto mlčení. Tajemství? Není se čím chlubit? V každém případě si na bližší informace přímo z úst Nvidia budeme muset ještě nějaký ten čas asi počkat.
To nám však nebrání v tom, abychom si vše na dostupných testech a hrách, které podporují DirectX 12, nezměřili a nepokusili se najít vysvětlení sami. Jak s co tedy budeme dnes měřit?
Dnešní testy budou specifické a budeme k nim potřebovat také poněkud sofistikovanější nástroje. Nástroje
FRAPS
ani
FLA Calculator
nám dnes stačit rozhodně nebudou, protože budeme potřebovat zejména zjistit, co přesně se v pipeline DirectX 12 v danou chvíli testu děje. Proto dnes využijeme nástroj opravdu silného kalibru, o kterém jste určitě již někdy slyšeli, ale zřejmě málokdo s ním již kdy pracoval. Tímto nástrojem je
GPUView
společnosti Microsoft. Kdo tento nástroj zná a ví, co přesně ukazuje, bude mít dnes velkou výhodu. Pro ty ostatní se pokusíme vše popisovat detailněji.
	Pro zvětšení klikněte na obrázek
Kdo s
GPUView
ještě nikdy nepracoval, rozhodně se nemusí ničeho obávat, dnes rozhodně nepůjdeme do hlubokých analýz a profilování her. Pro dnešní účely nám bude stačit pouze zjistit, do kterých hardwarových front GPU jsou odesílány příkazy (
Command buffers
) z kontextu zařízení (kontext aplikace, ve kterém se Command buffers vytvářejí).
Na obrázku odshora vidíte červeně orámovanou grafickou frontu GPU (
Hardware Queue 3D
), pomocí které jsou na GPU zasílány příkazy grafické. Modře orámovaná fronta (
Hardware Queue COMPUTE_0
) představuje frontu výpočetní, pomocí které jsou zas na GPU odesílány příkazy výpočetní.
Aplikace s názvem
AsyncCompute.exe
disponuje dvěma kontexty (
Device Context
), kdy jeden vytváří příkazy grafické a druhý zase příkazy výpočetní. Šipky pak ukazují, do kterých hardwarových front GPU jsou příslušné příkazy odesílány. Věřte, že toto nám pro naše účely dnes bude bohatě stačit.