Hirdetés

A memóriamenedzsment miatt köhög a Frostbite DirectX 12 módja

Eddig javításokról nem lehetett hallani, de már dolgozik a problémán a SEED csoport. Kár, hogy ez még kutatási státuszban van.

A Frostbite néven ismert videojáték-motor talán az egyik legnagyobb talánya az iparágnak. A rendszer alapvetően kifejezetten jól muzsikál, de az explicit API-k támogatása szempontjából hiába kezdték mindenki előtt a fejlesztéseket, egyszerűen a memóriamenedzsment tekintetében még mindig vannak problémáik.

A Frostbite esetében két nagyobb lépcsőre oszthatók a korábbi fejlesztések. Első körben a DICE az AMD Mantle API-ját implementálta, aminek például a Battlefield 4-es megoldása viszonylag sok VRAM-ot igényelt, de a későbbi címekben az optimalizálások ezen sokat segítettek, így a Dragon Age: Inquisition és a Battlefield Hardline érkezésére már jóval kedvezőbbé vált a fejlesztés. Ezután egy kisebb szünet következett, hiszen egyrészt a Frostbite Team átültette a videojáték-motort teljesen PBR-re, másrészt tudni lehetett, hogy jön a szabványos DirectX 12, ami így leválthatta a Mantle API-t. Ez a Battlefield 1 esetében be is következett, de az egész DirectX 12-es mód küzdött bizonyos problémákkal, így furcsa akadozásokat generált a legtöbb PC-n.

A most érkező, szintén DirectX 12 támogatással rendelkező Battlefield V is hasonlóan viselkedik, legalábbis a nyílt béta alapján, így továbbra sincs teljesen kibékülve a DICE az explicit API-kkal. Pedig ezek igazából nem rosszak, elvégre másnak sikerül megoldani a megfelelő támogatást, és nem is a régi Mantle-ről beszélünk, hanem a szabványos Vulkan vagy DirectX 12 megoldásokról. Ezekkel látszólag semmi baj nincs, elvégre ha a problémák az API szintjén keletkeznének, akkor a frissen megjelent Strange Brigade, vagy a korábban elérhetővé vált Wolfenstein 2: The New Colossus is küzdene hasonló jelenségektől, de az említett játékoknak semmi baja, illetve ez még elmondható pár további címről is, csak nem soroljuk fel őket.

Információink szerint a probléma a memóriamenedzsmentnél keletkezik, ami természetesen egy neuralgikus pontja a Vulkan és a DirectX 12 API-knak. Úgy tudjuk, hogy a Frostbite ezt alapvetően nem tervezte újra a szabványos megoldásokhoz, hanem a Mantle-höz kialakított rendszert portolták. Ennek elvileg működnie kellene, de a gyakorlatban azért az már jelentős különbség, hogy a Mantle csak az AMD-hez kínált támogatást, míg a szabványok mindenkihez utat nyitnak. Ugyanakkor azt tudni kell, hogy a Khronos Group és a Microsoft nem szabja meg, hogy egy gyártó milyen memóriastruktúrát alkalmazzon, ez a Vulkan és a DirectX 12 specifikációjával egyszerűen nem szükséges erre koncentrálni, mivel jól definiálva van a memóriahalmaz és a memóriatípus a különböző, elérésre vonatkozó flagekkel, vagyis amíg igazodik a gyártó ezekhez, addig nem lehet baj. És igazából nincs is gond a meghajtó oldali implementációkkal, ott kezdődnek a problémák, ha az alkalmazás nem különösebben veszi figyelembe azt, hogy az elérhető memóriahalmazok különböző sebességűek, leszámítva persze az integrált grafikus vezérlőket, ahol ugye minden memóriahalmaz ugyanolyan gyors. Erre persze igazán érdemes figyelni, de más az, amikor egy régi kódot használ fel egy fejlesztő, és más, amikor újat ír, látva azt, hogy a gyártók milyen memóriastruktúra mellett tették le a voksaikat. Gyakorlatilag a Frostbite itt szenved, még mindig túl sok szempontból épít a Mantle API-hoz írt kódokra, ami nem éppen ideális a DirectX 12-höz, de alapvetően még az AMD-hez sem, mert az említett cég régebben eltérő memóriastruktúrát használt a saját API-jának implementációjához. Ezt pedig nagyon nehéz kikerülni, gyakorlatilag az IGP-ken működhet jobban a rendszer, illetve a Vega architektúrára épülő dedikált GPU-kon, amennyiben a HBCC szegmens aktív a meghajtóban. De a legtöbben nem ilyen konfigurációkat használnak, tehát a játékosok zöménél jönnek is a problémák.

A gyártók eltérő memóriastruktúrája a DirectX 12 implementációkon belül A gyártók eltérő memóriastruktúrája a DirectX 12 implementációkon belül A gyártók eltérő memóriastruktúrája a DirectX 12 implementációkon belül
A gyártók eltérő memóriastruktúrája a DirectX 12 implementációkon belül [+]

Javításokról sem lehetett eddig hallani, de megtudtuk, hogy a SEED csoport dolgozik már az új generációs videojáték-motor alapjain, ami már csak explicit API-kat támogat, vagyis Vulkan és DirectX 12 mód lesz. Ez a projekt Halcyon néven fut, és alapvetően itt próbál ki mindent a cég, amire a jövőt építik. A jövő viszont távoli, mivel a Halcyon legtöbb, alapjaiban reformot jelentő fejlesztése az új generációs konzolokhoz készül, amelyek közelednek ugyan, de még mindig messze vannak, vagyis rövidebb időtávon belül a fenti gondot csak kezelgetni lehet, megoldani nem.

A Halcyon egyébként nem saját memóriamenedzsmenttel dolgozik, hanem az AMD Vulkan Memory Allocator (VMA) függvénykönyvtárával, de azt nem tudjuk, hogy pontosan melyik verzióval. Utóbbi nem is olyan fontos, mert a SEED csoport valószínűleg kiindulási pontnak használja a headert, ami a jelenlegi projektnek megfelel, a továbbiakban pedig úgyis átírják, illetve esetlegesen portolják DirectX 12-re a számukra megfelelő állapotokat.

Hosszabb távon tehát lesz megoldás a fentiekre, de a mikor az nagyon nagy kérdés. Eléggé hátráltatja a fejlesztések beépítését, hogy az Electronic Arts jellemzően évi egy Battlefront vagy Battlefield játékot igényel, és ezek fejlesztései komoly erőforrást visznek el, tehát nem nagyon lehet mélyen belenyúlni a Frostbite aktuális állapotába, különben veszélybe kerülne az adott évre készülő lövölde. Ha úgy tetszik a probléma valós megoldását csak csúsztatják maguk előtt, és ha belegondolunk, akkor a Frostbite DirectX 11-es módja ugyan ki van tömve gyártói kiterjesztésekkel, de gyorsan működik, egészen kellemesen skálázódik is, tehát idén is mondhatja a kiadó, hogy jó az még egy körre, aztán a Halcyon projekt úgyis megold mindent. Nem mellesleg a konzolokon nincs gond, és amúgy is az a lényeg, hogy jövőre is legyen új Battlefront vagy Battlefield, amitől a részvényesek szemében dollárjelet mintázva törik meg a fény.

Azóta történt

Előzmények

Hirdetés