Élesben teszteltük végre a Mantle API-t

Az első nekifutás

Az AMD az elmúlt év szeptemberében mutatta be a PC-s játékpiacot azóta is lázban tartó Mantle API-t. A rendszer képességeiről már írtunk egy cikket, így a részleteket nem ismételnénk meg. Az AMD első ígérete szerint tavaly decemberben kellett volna megjelennie a Battlefield 4 című játékhoz készült, a Mantle API használatát engedélyező patchnek, illetve Catalyst meghajtóprogramnak, de erre végül csak idén január végén került sor.

A Battlefield 4 mellett a StarSwarm technikai demonstrációjának személyében még egy, az API-t támogató program is napvilágot látott, ami az elsődlegesen stratégiai játékokhoz fejlesztett Nitrous motor képességeit hivatott demonstrálni. Lényeges megjegyezni, hogy az AMD, a DICE/Frostbite Team és a Oxide Games sem beszél általános teljesítménynövekedésről, mivel ez a beállításoktól és az alkalmazott konfigurációktól függ. Annyi azért elmondható, hogy a Mantle a gyenge CPU és erős GPU párosításánál segít messze a legtöbbet, de ha erős CPU-hoz társít a játékos gyenge GPU-t, ott az új API nem hoz lényeges előrelépést.

Azt persze mindegyik fél megjegyezte, hogy a Mantle még csak most lépett béta fázisba, így magában az API-ban is van kiaknázható teljesítmény, illetve a Battlefield 4 és a StarSwarm implementációi elsősorban a stabilitásra helyezték a hangsúlyt, így egyik cég sem próbálkozott olyan algoritmusok bevetésével, amelyek többek között DirectX alatt nem kivitelezhetőek. A jövőben azonban a Frostbite Team főleg a Mantle lehetőségeit fogja kutatni, így zömében olyan effekteket fejlesztenek, amelyek csak a konzolokon és a Mantle API-n lesznek üzemképesek. Ez persze nem zárja ki a később érkező és kellően fejlett szabványos API-kat sem (pl. DirectX 12), de a mostaniakat igen.

A Battlefield 4 esetében a Mantle egyelőre az újabb, GCN C.I. architektúrára épülő grafikus vezérlőkön működik úgy, ahogy a fejlesztők megálmodták. A régebbi GCN S.I. hardvereken ugyan használható az implementáció, de ezek hamarosan egy új frissítést kapnak, ami eltérő memóriamenedzsmentet épít a Frostbite 3 motorba. Ezzel a régebbi termékek extra sebességre tesznek szert.

A Mantle egyértelmű előnye, hogy megszünteti a rejtett driverszálakat, illetve gyakorlatilag maga a Mantle driver csak egy minimális réteget képez a program és az API, illetve a hardver között. Ennek megfelelően az új API-val elért teljesítmény agresszív kötegelés és pufferelés nélkül valósul meg, ami nagyságrendekkel csökkenti a szoftveres oldalon keletkező késleltetést. Mindemellett jóval következetesebb teljesítményre lehet számítani még komplex jelenetek mellett is, továbbá Mantle alatt megszűnnek azok az akadást vagy komolyabb sebességvesztést eredményező problémák, amelyek a DirectX-hez köthetők. Példaként említhető a shaderek folyamatos újrafordítása, amit nagyon nehéz kezelni a szabványos API-kban.

A Hyper-Threading technológiával felszerelt processzort birtokló felhasználók számára jó hír, hogy Mantle API segít a Frostbite motorok egyik régi problémáján. Nevezetesen arról van szó, hogy Hyper-Threading mellett a rendszer apró akadásokat generál, amit a Battlefield 3 óta próbál kezelni a DICE. A különböző javításokkal és a Frostbite 3 motor bevetésével a gond több processzor esetében is minimalizálódott, de nem tűnt el teljesen, így számos szituációban (főleg komplex jeleneteknél) előjöhetnek az aktív Hyper-Threadingre visszavezethető kisebb akadások.

A probléma alapja a driver aktív rejtett szálaira vezethető vissza, amelyek pont úgy harcolnak az erőforrásért, ahogy a programszálak. Ez Hyper-Threading mellett elképzelhető, hogy a megszokottnál károsabb hatást fejt ki, mivel ennél a technikánál két processzorszál osztozik egy processzormagon, tehát konkrétan ugyanazt az erőforrást szeretnék használni. Ez elvben jó, hiszen biztos van mit futtatni az adott magon, de bizonyos szituációkban hátrányt is jelenthet, és erre a Frostbite működése az egyik példa. Ez a motor rendkívül jól kihasználja a többszálú processzorokat, de ugyanakkor az alkalmazásnak semmilyen kontrollja nincs a driver aktív szálai felett, tehát az olyan szituációra nem lehet igazán jól felkészülni, amikor a grafikus driver bombázza feladatokkal azt a két szálat is futtató processzormagot, ahol a leképzésért felelős számítások történnek. Mantle mellett csupán annyi változott, hogy nem futnak a háttérben rejtett szálak, így a fejlesztők számára a látható erőforrások mindig rendelkezésre állnak.

Végre lehet tesztelni

Ugyan a Battlefield 4 már nagyjából két hónapja rendelkezik Mantle-támogatással, de beépített benchmark híján egyelőre nehéz dolga volt a tesztelőknek. Ugyebár a Mantle egy teljesen új API, így az olyan programok, amelyek kijelzik az adott játék sebességét (példaként említve a FRAPS-et) nem használhatók vele, ehhez ugyanis először a program oldaláról kell támogatást írni.

Érdemes szem előtt tartani, hogy a Mantle nagyobb terhelést fejt ki a DirectX-nél, így a korábban esetlegesen beállított tuningok nem biztos, hogy stabilak lesznek. Ez vonatkozik a processzorra, a memóriára és a grafikus alrendszerre is. Instabilitás esetén érdemes visszavenni az órajeleket az alapértelmezett szintre, az új tuningot pedig a Mantle terheléséhez kell igazítani. Főleg a processzorok oldaláról kritikus a helyzet, ugyanis a Mantle a jelenettől függően 20-80%-kal jobban terhelheti a központi processzort, de például a StarSwarm alatt előfordulhat, hogy a DirectX kódhoz képest kétszer-háromszor hatékonyabb a rendelkezésre álló erőforrás kihasználása. Ez olyan változás, ami komolyabb tuning esetén instabilitást okozhat.

Szintén stabilitási problémákhoz vezethet a GPU-khoz készült tuningprogramok használata (példaként említve a népszerű Afterburnert). Ezek módosíthatják a hardverek PowerTune profilját, a Mantle pedig a Catalyst által betöltött, jóval stabilabb profilokhoz van paraméterezve. Később itt is lehet jobb támogatásra számítani, de ez az adott tuningprogram fejlesztőjén múlik. Sajnos manapság általános, hogy a GPU-k leterhelése jellemzően nem több 40-60%-nál, amihez nem muszáj olyan stabil PowerTune profil, mint ami a Catalystban érkezik. A Mantle azonban Battlefield 4 alatt 70-75%-ra is képes leterhelni a mai lapkákat, amihez már csak a Catalyst paraméterezése jó.

A Thief

Már tavaly novemberben napvilágot látott az információ, miszerint a legendás Thief következő epizódja is támogatni fogja a Mantle API-t. Az Eidos Montreal és a Nixxes közös fejlesztésű alkotása az Unreal Engine 3 erősen módosított változatára épül.


[+]

Az eredeti tervek szerint a Thief már a megjelenés időpontjában képes lett volna a Mantle támogatására, de ahogy a Battlefield 4 esetében, úgy itt sem sikerült tartani a kitűzött céldátumot. Végül a Mantle-támogatás egy külön patch formájában érkezett március közepén, amivel a játék a TrueAudio támogatást is megkapta. Ennek ellenére még közel sincs végleges állapotban a támogatás. Egy következő patch formájában a 2 GB-os kártyák további optimalizációt fognak kapni, melynek hatása erős videómemória-használat esetén lesz kézzelfogható. Ezen felül a multi-GPU egyelőre nem működik a Mantle mellett.

A fejlesztőknek kell egy saját és egyben skálázódó, több GPU-s implementációt készíteni. Itt sok lehetőség van, de minden egyéni implementáció előnye, hogy tökéletesen igazodhat a leképző igényeihez, ezzel majdnem lineáris skálázódás érhető el. Sőt a Mantle-ben meg lehet szabadulni az AFR problémáitól is. Utóbbi rendszert főleg azért használjuk, mert a DirectX és az OpenGL API-ra jól ráilleszthető, viszont ennek a gyorsulás mellett több hátránya is van. Elsősorban az, hogy növeli a késleltetést, főleg akkor, ha az adott driveres implementáció a képkockák egyenletes megjelenítésére van kihegyezve. Persze ha ez az optimalizálás nincs bevetve, akkor ugyan a késleltetés nem nő a kelleténél jobban, de jönnek az apró akadások. Az AFR tehát valahol mindenképp kompromisszumos megoldás lesz.

A Mantle előnye ebből a szempontból, hogy közvetlen hozzáférést biztosít az adott gépben található összes kompatibilis grafikus vezérlőhöz. Ez lehetővé teszi a fejlesztőknek, hogy a rendelkezésre álló több GPU-t úgy használják ki, ahogy annak leginkább értelme van. Például az extra sebesség egy GPU-hoz hasonló késleltetéssel is biztosítható, amellett, hogy a képkockák leképzése is egyenletes marad. A skálázhatóság leginkább az implementációtól függ, de az eddigi – belsőleg elvégzett – tesztek szerint nyolc GPU-ra is kiterjeszthető a rendszer, és az élmény lényegében olyan lesz, mint egy GPU-val, csak éppen sokszoros sebességgel.


[+]

A patch mellé egy újabb béta Catalyst is érkezett, melyet a 14.3 jelzéssel látott el az AMD.


[+]

A mérésekhez ez említett meghajtócsomag telepítése is szükséges, illetve lényeges, hogy az új Catalyst 14.3 béta drivert nem ajánlott a korábbi Catalyst meghajtókra telepíteni, mivel rengeteg dolog megváltozott benne. Frissítés előtt le kell törölni a korábbi drivert a Catalyst Install Manager szolgáltatással; ezen lépés kihagyása instabil működést eredményezhet.

Mérési eredmények

A mérésekhez két grafikus kártyát és két processzort választottunk ki. Az első számú processzor az AMD A10-7850K APU volt, mely CPU-szinten valahol az i3-ak környékén tanyázik, vagyis a középkategória alsó szegmensében tanyázó megoldásról beszélhetünk. A második számú alany az Ivy Bridge i7-3770K processzor 4,3 GHz-re húzott verziója. A VGA-tesztekben ezt a processzort használjuk, így kézenfekvő volt az alkalmazása, hisz ezzel viszonylag kicsi az esély CPU-limitre.

Tesztkörnyezet
Videokártyák AMD Radeon R9 290 4096 MB (Catalyst 14.3 Beta)
Sapphire Radeon R9 270 2048 MB (Catalyst 14.3 Beta)
Processzor Core i7-3770K (3,6 GHz) – túlhajtva 4,3 GHz-en
AMD A10-7850K (3,7 GHz)
Alaplap MSI Z77 MPOWER (BIOS: V17.5) – Intel Z77 chipset
ASUS A88X-PRO (BIOS: 0904) – AMD A88X chipset
Memória G.Skill RipjawsX 16 GB (4 x 4 GB) DDR3-1866 F3-14900CL9Q-16GBXL
DDR3-2133 beállítás, 11-12-11-30-2T időzítések
Háttértárak Intel SSD 320 160 GB SSDSA2CW160G310 (SATA 3 Gbps)
Seagate Barracuda 7200.12 500 GB (SATA, 7200 rpm, 16 MB cache)
Tápegység Seasonic Platinum Fanless 520 – 520 watt
Monitor Samsung Syncmaster 305T Plus (30")
Operációs rendszer Windows 8.1 64 bit

A grafikus kártyák közül a középkategóriás Sapphire Radeon R9 270 és a felsőkategóriás referencia R9 290 került be a meccsbe, illetve még az A10-7850K IGP-jét is bedobtuk a mérések körébe.

A méréseket a Thief beépített benchmarkjával végeztük el, míg a részletességi szintet és a felbontást az adott GPU szintjének megfelelően állítottuk be. A mérések során észrevettük, hogy az első, illetve bizonyos esetekben még a második eredmény sem konzisztens, így minden mérést legalább négyszer futtattunk le.

Elsőként a jelenleg elérhető leggyorsabb Kaveri IGP-jét mértük meg. Nos, az eddigi eredmények alapján a beépített GPU alacsony órajelén a Mantle sem tud segíteni, ugyanis az új API itt nagyjából annyit ért, mint halottnak a csók, pedig a részletességi beállításban már majdnem a legalacsonyabb szinten jártunk.

Az R9 270 esetében már csak CPU-ként üzemelt az A10, így ott jól látható előrelépést tudtunk mérni. Ezzel szemben a húzott i7-3770K esetében nem hogy gyorsult, de inkább lassult a játék a Mantle bekapcsolásának hatására. Először mérési hibára gyanakodtunk, de az eredmény több (kb. tíz) mérés során sem változott.

A csúcskategóriás R9 290 kártyával jelentőset lépett előre az A10-7850K-val szerelt rendszer a Mantle bekapcsolása után, ugyanakkor még ez a nagy ugrás sem volt elég ahhoz, hogy beérje a DirectX módban mért i7-3770K eredményét. A Mantle engedélyezésére itt már az Intel processzorra épülő tesztplatform is gyorsult, bár messze nem olyan mértékben, mint a gyengébb CPU-teljesítménnyel bíró AMD-alapú rendszer.

Összegzés, vélemények

Oliverda: Méréseink alapján a Mantle egyelőre leginkább a gyengébb CPU-teljesítmény kompenzálására jó, ami jelen állás szerint sok esetben épp az AMD saját központi egységeinek lehet mankó. Ennek tükrében talán nem is csoda, hogy a vállalat szinte mindent megtesz az API terjedésért. Kérdés, hogy vajon meddig jutnak, hisz jövőre már a DirectX 12 is befut, ami megnehezítheti a Mantle terjedésének dolgát. Ilyen felállásban később nem kizárt, hogy egyes játékok esetében majd megfelelő (anyagi) támogatás lehet a saját API implementálásának ára. Már csak az a kérdés, hogy az AMD-nek ez meg fogja-e érni, és ha igen, meddig, hisz nyilván nem hobbiból fejlesztenek, ergo üzleti szempontból a befektetett erőforrások többszörös megtérülése lenne optimális.

Eddigi tapasztalatink alapján a Mantle egyelőre közel sem kiforrott, így valószínűleg még nem láthattuk a benne rejlő teljes potenciált. Ennek tükrében ugyanakkor jelenleg nem lehet komoly fegyvertényként emlegetni a Radeon VGA-k melletti érvelés esetében. A már valamilyen GCN-alapú VGA-val rendelkező felhasználók részben örülhetnek, hisz a DirectX-hez viszonyítva semmilyen plusz költség nem áll fenn, ha egy, az AMD API-ját támogató játékot szeretnének kipróbálni. Persze a kiforratlanságból adódóan még érhetik az embert kisebb kellemetlen meglepetések, ahogy például nálunk is lassult az R9 270 és az i7 kettőse a Mantle bekapcsolásával. Ennek tudatában érdemes lesz majd mindkét API-val lemérni az adott, erre lehetőséget kínáló játékot.

Abu85: Nehéz ítélkezni két játék és egy technikai demó alapján. A Thief eredményeiből látszik, hogy a többletterhelés csökkent, és még rendkívül limitált, képkockánként alig kétezer rajzolási parancs mellett is lehet olyan konfigurációt találni, ahol nem csak hibahatáron belül gyorsabb a DirectX 11-es kódnál. A kétezer rajzolási parancs pedig fontos, ugyanis a DirectX 11-ben ez az optimális működés mellett elérhető felső határ, míg a százezer rajzolási parancsra tervezett Mantle ebben a módban nem is igazán erőlteti meg magát. Éppen ezért a konzolok kódjához hasonlóan a Thief Mantle-verziója sem kötegeli a parancsokat, így az eredményeket nagyjából kilencezer rajzolási paranccsal éri el. Amire várunk, az a képkockánként ötvenezer rajzolási parancs, és az új generációs API-k (Mantle és DirectX 12) ezt a jövőt készítik elő a PC-nek, igazodva az új generációs konzolok valós képességeihez.

Az év későbbi részében persze vissza lehet térni az újabb Mantle játékokban elért eredmények elemzésére. A Battlefield 4 és a Thief mellé ugyanis érkezik a Plants vs. Zombies: Garden Warfare és a Sniper Elite 3 is, és az év második felében is lesz pár Mantle játék.

Ami biztos, hogy az alacsony szintű elérés létjogosultsága megkérdőjelezhetetlen. E nélkül a PC nem lesz életképes igazán új generációs AAA játékokban, és ezzel az iparág minden gyártója és fejlesztője kivétel nélkül egyetért. A kérdés az, hogy mennyi API-ra van szükség. A DirectX és az OpenGL elfogadott, míg a Mantle harmadik szereplőként szeretne ide beférkőzni. Mindhárom API, ezen belül is ezek létező vagy érkező új verziói kínálnak valamilyen megoldást az alacsony szintű elérésre. A modern OpenGL a DirectX 12-től és a Mantle-től egy picit eltérő módon, de a koncepció a példaprogramokban működik.

Az AMD-nek a végeredmény szempontjából tulajdonképpen teljesen mindegy, hogy DirectX 12-t vagy Mantle-t használ az adott alkalmazás. Ezek hatása megegyezik, a cél pedig amúgy is a konzolos optimalizációk direkt átmásolása PC-be a konzolokra fejlesztett HLSL kódokkal együtt. A Mantle a szabványos opciók mellett egy gyorsan fejlődő API-ként maradhat fent. Mivel ezt a felületet semelyik konkurens sem fogja támogatni, ezért különféle egyeztetés nélkül le lehet vezényelni az új funkciók beépítését. Ha a fejlesztőpartnereknek igényük van valamire, akkor az egy saját API-ba akár egy-másfél évvel hamarabb bekerülhet, mint a DirectX új verziójába. Ez az iparág számára abból a szempontból lehet hasznos, hogy a DirectX-szel korábban elégedetlenkedő stúdiók ezzel a módszerrel folyamatos fejlesztésre kényszeríthetik a Microsoftot.

Oliverda és Abu85

  • Kapcsolódó cégek:
  • AMD

Azóta történt

Előzmények

Hirdetés