2017. november 24., péntek

Útvonal

Hírek » Videokártya rovat

A Vulkan API-ra fejlesztők legnagyobb gondját oldhatja meg az AMD VMA

  • (f)
  • (p)
Írta: | | Forrás: PROHARDVER!

A Vulkan Memory Allocator elsődlegesen azok számára lehet segítség, akiknek az új explicit API alacsonyabb szintű elérése inkább teher, mint előny.

Az explicit API-k kapcsán nagyon sokat lehet hallani az előnyökről. Ezek mérhetők és láthatók voltak, hiszen az alkalmazás magas szintű logikájára volt szabható egy alacsony szintű leképezőréteg, ami a minimális többletterheléssel és a párhuzamosítható feldolgozással komoly előnyöket biztosított a tempó tekintetében. Azt azonban nem szabad elfelejteni, hogy a DirectX 12 és a Vulkan API is elég sok dolgot megenged, és a szabadság elsődleges ára, hogy a meghajtók innentől kezdve igen vékony implementációk, amelyek jórészt minimális funkciókat látnak el.

A fejlesztők tehát amellett, hogy egy sokkal szabadabban kezelhető API-kat kaptak, egy komolyabb hátrányt is a nyakukba vettek, ugyanis az explicit API-khoz fejlesztett 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ó. Természetesen ez okkal történik, tehát nem egyfajta szándékos nehezítést terveztek a rendszerekbe, ettől viszont még nem lesz könnyebb a fejlesztők élete.

Az AMD bizonyos tipikus nehézségek könnyebb kezelésére hozta létre a Vulkan Memory Allocator függvénykönyvtárat, amely elérhető az alábbi GitHUB oldalon. Mint ismeretes a Vulkan API alatt a memóriaallokáció és az erőforrások kreálása bonyolultnak hathat a korábbi, Direct3D 11 és OpenGL API-khoz viszonyítva. Ennek az oka, hogy 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, de ez eléggé tipikus a Vulkan API-n belül, hiszen végeredményben ez biztosítja a teljesítményt. Szintén nehézség, hogy az eszköz memóriája az erőforrások kreálásától elszeparáltan lesz allokálva, miközben ezek össze vannak kötve. A bekötés később nem is változtatható meg, tehát az erőforrást újra kell kreálni. Az sem könnyíti meg a feladatot, hogy az az erőforrás, amelynek már nem allokálható kellő mennyiségű memóriaterület a VRAM-ban, nem kerül automatikusan a rendszermemóriába, tehát a VRAM-ból való kifutást szintén le kell kezelni az alkalmazáson belül. Mindezek mellett a meghajtókat le kell kérdezni a támogatott memóriahalmazokról és -típusokról, ami nem lenne gond, de az egyes gyártók implementációi eléggé sok szempontból eltérnek, ami részben a hardverek különbségeire vezethető vissza, és ez az alkalmazás programozásakor szintén komolyabb munkát eredményez.

A Vulkan Memory Allocator a fentiekre kínál megoldást. Magát a függvénykönyvtárat egyszerű integrálni bármilyen Vulkan API-ra írt programba, és három csoportra osztható a függvények hatása. Bizonyos függvények segítenek a megfelelő és optimális memóriatípusok kiválasztásában, mivel a memória kezelése magasabb szintű leírókon keresztül oldható meg a Vulkan flagekhez képest. Más függvények segítenek az allokált memóriablokkok nyomon követésében, meghatározzák a használt és a nem használt részeket, és az új allokációkat megpróbálják az utóbbi helyekre beszúrni – ehhez figyelembe veszik az alignmentáláshoz használt szabályokat. A harmadik csoport az erőforrások létrehozását segíti, allokálja a memóriát hozzájuk, beköti őket, és ehhez az egészhez csupán egy függvényhívás kell.

Az AMD Vulkan Memory Allocator gyártótól független függvénykönyvtár, akármilyen grafikus vezérlővel üzemképes, továbbá nyílt forráskódú is, tehát tetszőlegesen módosítható. Az egész egy jó alap lehet azoknak a fejlesztőknek, akik küzdenek a memóriaallokáció és az erőforrások kreálásának bonyolultságával a Vulkan API alatt, és úgy gondolják, hogy az AMD megoldása a tervezett saját rendszerüknél jobb munkát tud végezni. Mindemellett azok számára is fontos lehet az újdonság, akik a Vulkan előnyeit szeretnék használni, de nem fér bele az idejükbe, hogy az API legbonyolultabb részeit elsajátítsák, viszont a Direct3D 11 és az OpenGL API-khoz közelebb álló bonyolultsággal elfogadnák a rendszert.

Hird​et​é​s

Előzmények

Gyártók, szolgáltatók

Hirdet​és​

Copyright © 2000-2017 PROHARDVER Informatikai Kft.