Nem lesz konzolon Mantle API, de nem is volt tervben

A Microsoft nemrég beszámolt blogjában az Xbox One grafikus API-járól, ami a DirectX 11.x nevet viseli, utóbbi betűvel utalva a konzol nevére. Erre számítani lehetett, de a vállalat külön kiemelte, hogy az AMD Mantle API-t és az OpenGL-t nem támogatja a rendszer. Technikailag egyik sem meglepetés, de előbbit talán azért tartotta fontosnak megemlíteni a Microsoft, mert sokan félreérthették Johan Andersson korábbi előadásában a Mantle szerepét. Ez nem a programozóknak szól, hiszen ők tisztában vannak a helyzettel, de olvasgatva a külföldi fórumokat sokan még ma is úgy gondolják, hogy a fejlesztők a Mantle API segítségével megírhatják az alkalmazást PC-re, Xbox One-ra és PlayStation 4-re. Ez természetesen nincs így, vagyis a Microsoft jól tette, hogy kihangsúlyozta ezt a tényt.

Az AMD erre rögtön reagált és nyomatékosították, hogy a Mantle célja a PC-n megteremteni a konzolokhoz hasonló alapokat. A konzolokat eleve nem szükséges támogatni, mivel az új generációs masinákra alapból van egy Mantle-höz hasonlóan alacsony szintű grafikus API, így felesleges ennek egy alternatívát kínálni. PC-n viszont utóbbi hiányzik, tehát a Mantle ide való és nem máshova. Az más kérdés, hogy az AMD API-ja sok hasonlóságot mutat a konzolok megoldásával, ami nyilván segíti majd a fejlesztők munkáját, de nem ugyanarról a rendszerről van szó, tehát a kódok közül maximum a shadereket lehet átmásolni.

Bár a Mantle-ről sok írás született már, így az alapvető koncepció már talán érthető, viszont sokakban még mindig nem tiszta, hogy miért kell ez az API és miért nem jó a DirectX vagy az OpenGL. Technikai értelemben a szabványos megoldások is jók, hiszen bármit lehet portolni, még ha nem is ugyanolyan minőséggel. A Mantle csak két dolgot akar elérni. Egyrészt a konzolra írt új generációs effektek az AMD butítás nélkül szeretné viszontlátni PC-n, másrészt az aktuális API-k többletterhelését szeretnék lényegesen csökkenteni. Utóbbi igazából nagyobb sebességet eredményez majd, de ennek a mértéke attól függ, hogy az adott programot mennyire limitálják a DirectX vagy az OpenGL API korlátjai. Az előbbi már egy lényegesebb kérdés, ugyanis a konzolok hardvere nagyon sokat tud, és ennek csak a töredéke használható ki a szabványos felületeken, ami előbb-utóbb oda vezet majd, hogy a konzolon jobb minőségű effekteket lehet megjeleníteni.

A főbb eltérések kapcsán nyitott könyv szinte mindegyik API, így az alábbi táblázat összefoglalja, hogy mik a lényeges különbségek:

API Xbox One
(DirectX 11.x)
PlayStation 4
(libGNM)
PC
(Mantle)
PC
(DirectX 11.2)
PC
(OpenGL 4.4)
Támogatott SRV-k száma nincs korlátozva 128
Támogatott UAV-k száma nincs korlátozva 64
Egyidejűleg írható és olvasható UAV formátumok bármelyik single uint32
Hardveres virtuális textúrázás Partially Resident Textures Tiled Resources TIER_2
Sparse Texture
Shader nyelv HLSL PSSL HLSL HLSL GLSL
Ballot utasítás támogatva nincs támogatva
Atomi számláló minden shader lépcsőn elérhető
elérhető compute shaderben
Memóriavezérlés közvetlen kontroll
közvetett kontroll

A táblázatból látható, hogy a konzolok által használt grafikus API-k messze többet engednek meg funkcionálisan is, mint amit a DirectX vagy az OpenGL. Ennek az oka, hogy ezek csak a GCN architektúra képességeihez igazodnak, míg a PC-n ezt a Microsoft és a Khronos Group sok esetben nem teheti meg ugyanis figyelembe kell venni, hogy mire képes a többi architektúra. Ráadásul a táblázat csak a legjobb eshetőséget vázolja, hiszen a DirectX 11-es hardverek 64 helyett csak 8 UAV-t támogatnak, illetve ezek nem is érhetők el minden shader lépcsőn, ha az alkalmazás nem fut a legmagasabb, feature_level_11_1 szinten.

A hardveres virtuális textúrázás kapcsán igen komoly kavarás van már alapból is. Az OpenGL-ben van egy alapvető ARB_sparse_texture kiterjesztés, ami nagyon korlátozott képességekkel bír, míg a fejlettebb AMD_sparse_texture opció csak a GCN architektúrán érhető el. A Microsoft a Tiled Resources funkciót kedvezőbben oldotta meg. Egyrészt ez csak opcionálisan támogatható, és az alapvető TIER_1 szint nem annyira buta, viszont cserébe NVIDIA Kepler architektúrájú GeForce-ot igényel. A TIER_2 szint hasonlóan fejlett, mint a specifikus OpenGL-es társa, de ehhez GCN architektúrára épülő Radeon szükséges.

Érdekes azonban, hogy a konzolokon az eredeti Partially Resident Textures technika is elérhető, ami még a Microsoft, PC-re szabott Tiled Resources TIER_2 szintjénél is többet tud. Például a CheckAccessFullyMapped függvény a DirectX 11.2-ben csak pixel és compute shaderben használható, míg a konzolokon és a Mantle API-n, valamint az OpenGL-es AMD_sparse_texture kiterjesztés mellett minden shader lépcsőn. Ez alapvetően nem létfontosságú különbség, de világosan látszik, hogy a Mantle célja a konzolon elérhető funkcionalitás biztosítása PC-n, amit sem a DirectX sem pedig az OpenGL nem tesz meg szabványos keretek között.

Alapvetően a Mantle API kapcsán mindenkiben sok kérdés merül fel. Senki sem tudja, hogy jó lesz-e ez a piacnak. Kétségtelen tény, hogy az AMD-től ez a rendszer egy durva beavatkozás az úgymond rendeltetésszerű fejlődésbe, még akkor is, ha a fentiek mellett látható a mögöttes szándék.

Azt sem szabad elfelejteni, hogy a fejlesztők ma szinte csak a DirectX API-ra koncentrálnak, de a Mantle mellett meg kell osztaniuk az erőforrásaikat két eltérő leképző támogatásához az adott PC-s port esetében. Ha kellően jól kezelik a helyzetet, akkor ebből nem lehet gond, de sokan emlékezhetnek, hogy a 3dfx uralkodásának idején főleg a Glide API kiváló támogatása volt a fő szempont, és esetenként előfordult, hogy a szabványos API-t használó felhasználók rosszabb élményben részesültek. Ennek nem kell szükségszerűen megismétlődnie a jövőben, de emberek írják a játékokat, és kellő odafigyelés mellett is lehet hibázni.

A Mantle API abból a szempontból jó lesz, hogy gyakorlatilag biztosan átmenthető rá minden új generációs grafikai effekt, amit a fejlesztők elkészítenek a konzolokra. Másfelől viszont felmerül a kérdés, hogy kell-e ennyire radikális beavatkozás a PC-s evolúcióba. Egyáltalán szükségszerű-e, hogy a PC-s port grafikai minőség pár effekt esetében elérje a konzolos szintet, hiszen a gyengébb grafikának a játékélményre nincs befolyása.

Azóta történt

Előzmények

Hirdetés