Rise of the Tomb Raider a asynchronní shadery?
DX12 Multi-engine je jednou z klíčových technologií nového 3D API, která spadá do tzv. exekučního modelu 3D API. Pomocí technologie Multi-engine může aplikace (hra) zasílat vícero druhů příkazů po vícero frontách (queues) do grafické karty souběžně. Znamená to, že příkazy typů jako je vykreslování (3D), výpočet (Compute) nebo kopírování (Copy), mohou být na grafickou kartu zasílány paralelně (souběžně) a grafická karta je může paralelně také vykonávat. Kdo by se chtěl o Multi-engine dozvědět něco více a podrobněji, pak doporučuji svůj předchozí článek, který najdete zde.
Pokud je řeč o souběžném zpracovávání 3D a Compute příkazů, mluvíme tak o takzvaných "Asynchronních shaderech". Asi už tušíte, kam tím mířím. Ano, pro grafické karty společnosti Nvidia jsou asynchronní shadery poněkud ožehavým tématem. Asynchronní shadery nejsou na grafických kartách Nvidia podporovány (alespoň doposud ne) a každá hra, která asynchronní shadery podporuje, je pro ně zákonitě také potencionálním výkonnostním problémem.
Veškeré dnešní testy jsou prováděny na vestavěném benchmarku hry Rise of the Tomb Raider
První věcí, kterou tedy budeme muset zjistit je, zda počítačová hra Rise of the Tomb Raider asynchronní shadery podporuje, či nikoliv. K tomuto účelu můžeme využít nástroj od společnosti Microsoft nazvaný GPUView. Sice se jedná se o nástroj poněkud silnějšího kalibru, který disponuje nepřeberným množství funkcí a "udělátek", ale protože nás dnes bude zajímat pouze přítomnost či nepřítomnost asynchronních shaderů v pipeline, práce to nakonec nebude zas až tak složitá - budeme se pídit pouze po přítomnosti a využití Compute Queue.
Podívejme se nejdříve na naměřený výsledek grafické karty GeForce GTX 980:
Jak můžete sami vidět, fronta Hardware Queue (Compute) je prázdná a nebsahuje žádné příkazy (poslední řádek v modrém poli). To ale samozřejmě není žádné překvapení. Co je však poměrně překvapivé, jsou detekované chyby v GPUView - svislé červenobílé čáry. Nechme tedy GTX 980 a pojďme se podívat na chování Radeonu R9 390, na kterém je podpora asynchronních shaderů bezproblémová.
V GPUView po nějaké Compute Queue ani vidu, ani slechu. Stejně tak, jako v případě GTX 980, i zde u Radeonu R9 390 GPUView detekuje časté chyby.
Závěr našeho šetření s GPUView je tedy poměrně prostý. S jistotou můžeme konstatovat, že engine počítačové hry Rise of the Tomb Raider asynchronní shadery nepodporuje. Jedinou neznámou zůstává častý výskyt chyb detekovaný nástrojem GPUView. Příčinou těchto chyb mohou být buďto programátorské chyby v enginu hry (málo pravděpodobné), nebo také možný nějaký nestandardní přístup vývojářů k renderingu pod DX12.
Takže, tu nudnější teoretickou část máme za sebou a je čas se konečně podívat na konkrétní výsledky testů některých grafických karet v počítačové hřa Rise of the Tomb Raider pod taktovkou renderingu nového DirectX 12.