Recenze Grafiky a hry

DirectX 12 Multi-engine: asynchronní shadery v praxi | Kapitola 6

Pavel Šantrůček

Pavel Šantrůček

17

Seznam kapitol

1. DirectX 12 Multi-engine: asynchronní shadery v praxi 2. Co jsou to Compute shadery 3. DirectX 11 4. DirectX 12: Multi-engine 5. Simultánní Multi-threading 6. Multi-engine - implementace AMD a Nvidia
7. MDolenc test: AMD 8. MDolenc test: Nvidia 9. MDolenc test: Nvidia (CUDA) 10. Ashes of the Singularity (v 0.49) 11. Ashes of the Singularity (v 0.60) 12. Závěr

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.

Reklama

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.

DirectX 12 Multi-engine: asynchronní shadery v praxi

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.


Předchozí
Další
Reklama
Reklama

Komentáře naleznete na konci poslední kapitoly.

Reklama
Reklama