A DirectX 12-n is megoldja a fejlesztők legnagyobb gondját az AMD

A Vulkan Memory Allocator mintájára itt a DirectX 12 Memory Allocator, amely leegyszerűsíti a memóriamenedzsmentet.

Az AMD nagyjából két éve állt elő a Vulkan Memory Allocator (VMA) függvénykönyvtárral, amely kifejezetten azokat a fejlesztőket célozta, akiknek az új explicit API alacsonyabb szintű elérése inkább teher, mint előny. Ennek az oka az lehetett, hogy a Vulkan API-ra írt alkalmazásnál mindent előre meg kell mondani, ezáltal lekezelni az egyes olyan szituációkat, amelyeket a korábbi API-knál kezelt a meghajtó. Tipikusan a memóriaallokáció és az erőforrások kreálása hathat bonyolultnak a Direct3D 11 és OpenGL API-khoz viszonyítva, mivel az egész alkalmazás működéséhez rengeteg olyan kódot kell a programba írni, amelyek önmagukban nem csinálnak semmit, csak a programozó munkáját segítik a különböző automatizálásokkal, végeredményben viszont ez biztosítja a teljesítményt.

A VMA-t viszonylag sokan használják, és egy ideje az AMD olyan igényekkel szembesül, hogy DirectX 12-höz is jó lenne egy hasonló, elvégre a Microsoft API-jánál is pontosan ugyanazok a problémák kerülnek elő, amelyeket tulajdonképpen ugyanúgy lehet is kezelni. A redmondi óriáscég kínál is egy Residency Starter Library-t, de ennek a képességei nagyon messze vannak attól, amit az AMD VMA biztosít a Vulkan tekintetében.

Mivel a VMA a 2.2-es verziójával már kellően átfogó megoldásnak tekinthető, az AMD úgy döntött, hogy engednek a fejlesztői igényeknek, és elkészítik ennek a DirectX 12-es verzióját is, DirectX 12 Memory Allocator (D3D12MA) néven, és ez elérhető az alábbi GitHub oldalon. A koncepció nem változik, lényegében egy olyan függvénykönyvtár lesz ez is, amely jelentősen könnyít az érintett API esetében a memóriaallokációra vonatkozó problémák kezelésében.

A D3D12MA egyelőre az 1.0-s verziónál jár, és emiatt közel sem tud annyit, mint a VMA, de az alapvető funkciókat így is biztosítja, továbbá automatikusan betartja a létrehozott erőforrások alignmentálásra vonatkozó követelményeit, illetve automatikusan kezel az erőforráshalmaz szintjeit, azaz nem számít, hogy a programot futtató GPU a D3D12_RESOURCE_HEAP_TIER_1 vagy a D3D12_RESOURCE_HEAP_TIER_2 szintet támogatja, a D3D12MA az adott grafikus vezérlő képességeit figyelembe véve működik. Mindezeken túl a függvénykönyvtár többszálú parancsgenerálás mellett is biztonságosan alkalmazható.

Az AMD szerint a D3D12MA lényegében ugyanazokra a problémákra való, mint a VMA, illetve a Vulkan és a DirectX 12 API sem különbözik olyan mértékben, hogy ne lehessen az egyes nehézségekre ugyanolyan, vagy csak picit eltérő megoldását alkalmazni, így a D3D12MA fejlődése is a VMA-hoz lesz hasonló. Ez komoly segítség lehet a fejlesztők számára, hiszen az új videojáték-motorok lassan kezdik elhagyni az elavult API-kat, de a memóriamenedzsment tényleg nem túl könnyű az explicit API-knak, így erre sokak szívesen elfogadnak egy tipikus problémákat automatikusan kezelő függvénykönyvtárat. Természetesen a D3D12MA a VMA-hoz hasonlóan nyílt forráskódú, így tetszőlegesen módosítható, emellett szabványos is, vagyis nem csak az AMD grafikus vezérlőit képes működtetni, teljesen kompatibilis a konkurens hardverekkel is.

  • Kapcsolódó cégek:
  • AMD

Azóta történt

Előzmények

Hirdetés