Leteszteltük a DirectX 12-t és újításait!

A DirectX 12 és az Ashes of the Singularity

Az Ashes of the Singularity egy valós idejű stratégiai (RTS) játék, mely jelen pillanatban még csak béta formájában érhető el, és március 31-én jelenik meg. Egyike az első olyan címeknek, amelyik független fejlesztőstúdió munkája, és az explicit API-k közül képes a Microsoft DirectX 12-t kihasználni. Ezért ezt a játékot fogtuk be, hogy megvizsgáljuk a gyakorlatban is az új DirectX által ígért előrelépést. Beérik végre a Windows 10 ilyen irányú tudása is, hiszen jelenleg az egyetlen operációs rendszer, ahol a DirectX 12-t használhatjuk. A technikai fejlődés oda vezetett, hogy időszerű volt a DirectX 11 leváltása, ami sokkal finomabban, fokozatosabban megy végbe, mint az eddigi ilyen cserék.

Tesztünk több szempontból is rendhagyó. Soha nem volt még lehetőség például konkurens gyártók videokártyáit együtt dolgoztatni, és sosem kínált még egyetlen API ekkora teljesítménynövekedést. GeForce-ot és Radeont párosítottunk tehát, és ezt úgy is lemértük, amire még külföldi oldalakon sem nagyon akadt példa. Korábban egy alkalommal volt hasonló mérésünk a Mantle API és a DirectX 11 kapcsán, de akkor a kisebb teljesítménynövekedésen kívül mást nem kaptunk. Végül pedig ezúttal egy átfogóbb elemzést is be kellett iktatnunk, hogy a jelentős újításokat ismertethessük.

A DirectX 12

A Microsoft DirectX 12 egy alacsonyszintű hardveres elérésű, úgynevezett explicit grafikus API, mely az előd DirectX 11-hez képest gyökeres változtatásokon ment keresztül. Sokkal közelebbi rokonságot mutat a Mantle és a Vulkan API-val, valamint a konzolok közvetlen hozzáférésű programozási módjával. A kulcsfontosságú kérdés az, hogyan hasznosítjuk az egyre több és több magot kínáló processzorokat? Az idők folyamán a CPU-k és a GPU-k újításai mögött lemaradt a grafikus API-k fejlődése, és egyre inkább problémát okozott a nagymértékű párhuzamosítás optimális kihasználása, amit az alábbi kép kiválóan szemléltet.


Hiába a sok párhuzamos erőforrás, ha nem használjuk ki [+]

Ugyan már az elődnek számító DirectX 11 is lehetővé tett némi többszálú feldolgozást, de a parancslistákat nehéz jól kezelni. A probléma ott kezdődik, hogy nem lehet meghatározni, hogy ezek mikor lesznek elküldve a grafikus vezérlőnek. A működés biztosításához azonban szükséges a megfelelő GPU-címek folyamatos beírása annak érdekében, hogy a parancsok betölthetők legyenek. A DirectX 11 alatt a vezérlést mindenképpen csak egy mag végzi, és ez vagy azonnali kontextust küld a grafikus vezérlőnek, vagy a késleltetett kontextusokhoz tölti fel a GPU-címeket. Emiatt a többszálú parancslisták alkalmazása egyszerre előny és hátrány.

Feltöltött GPU-címek mellett a munka jól skálázható, de amint új parancslisták jönnek, és új GPU-címek kellenek hozzájuk, rögtön jön a hátrány, vagyis a munkavégzés ideiglenes leállása a címek feltöltéséig. Emiatt az első pár percben a parancslisták többszálú kezelése előnyt biztosít, majd a GPU-címek feltöltésének szakaszában a feldolgozás lelassul, és gyakorlatilag ez a körforgás folytatódik a program futtatása alatt. Fentebb linkelt tudástár bejegyzésünk is kitér arra, hogy az NVIDIA ezt alkalmazza, míg az AMD nem engedélyezi. A DirectX 11-es teszteredményeket ennek fényében kell majd értelmezni, a 3 perc hosszú benchmark miatt a fentiek a zöld VGA-k számára kedvezőbbek.

Végezetül pedig nagyon fontos a vörösek és a zöldek most tesztelt hardverei közt fennálló különbségek közül kiemelni az eltérő bekötési modellt. A HBM-es Radeon, az R9 Fury a TIER_3-as, míg a GTX 980 Ti csak a TIER_2-es bekötési modellt tudja kezelni, ez utóbbi valamivel több CPU-időt emészt fel az UAV/SRV/CBV kreálás során, így a Radeon előnyhöz juthat. A DirectX 12 specifikációinak véglegesítéséről is született írásunk, ahol mindez alaposabban körüljárásra került.

A cikk még nem ért véget, kérlek, lapozz!

Azóta történt

Előzmények

Hirdetés