Hirdetés

A Microsoft részletezte a DirectX 12 új funkcióit

A Microsoft a GDC alkalmával lényegében teljesen leleplezte a DirectX 12 véglegeshez nagyon közeli specifikációját. Bár véglegesítés még mindig nincs, de már nagyon kicsi az esély, hogy bármi változzon.

Magáról az API-ról már igen sokat írtunk, így arról is elmélkedtünk, hogy mi kellhet a támogatásához. Szerencsére nem változtak jelentősen a specifikációk, így a korábbi írásaink lényegében továbbra is helytállóak, de van ami módosult. Többek között a bekötési modell esetében apró változások álltak be. Az új és végleges szintekről az alábbi táblázat ad felvilágosítást:

A DirectX 12 bekötési modellje
Szint TIER_1 TIER_2 TIER_3
Leíróhalmaz mérete 65 536 1 048 576 nincs limitálva
Leírótáblák száma 5 5 nincs limitálva
UAV-k száma az összes shader lépcsőn 8 64 teljes leíróhalmaz
CBV-k száma shader lépcsőnként 14 14 teljes leíróhalmaz
SRV-k száma shader lépcsőnként 128 teljes leíróhalmaz teljes leíróhalmaz
Mintavételezők száma shader lépcsőnként 16 teljes leíróhalmaz
teljes leíróhalmaz

A korábbi opcióhoz képest annyi változott, hogy a TIER_1 szint esetében az UAV-k száma az összes shader lépcsőn maximum 8 lehet, szemben a korábbi 64-gyel. Ez tulajdonképpen annyit jelent, hogy az Intel Haswell és Broadwell lapkákban található IGP-k tudása részben elvész. A Gen7.5 és Gen8 architektúra ugyanis képes lenne 64 UAV-t kezelni, de más szempontok miatt a TIER_1 szintre lesz limitálva, így a támogatott UAV-k száma is 8-ra lesz korlátozva a hardveres tudás ellenére is.

A Microsoft az előadáson egyébként azt jelezte, hogy a TIER_2 szintet a DirectX 12-t támogató, Steam statisztikákban szereplő hardverek szempontjából a játékosok 44%-a eléri, de ezt nehezen tudtuk elképzelni, hiszen a technikai specifikációk szerint csak a GeForce GTX 960, 970 és 980 jelzésű VGA-k sorolhatók ide. Erre vonatkozóan rákérdeztünk a lehetőségekre, és kiderült, hogy a vállalat úgy hitte, hogy több NVIDIA architektúra is képes 64 UAV-t kezelni, így érthető miért jött ki a furcsa eredmény.

Némi kutatás után lényegében elmondható, hogy a TIER_1 szintet az Intel Haswell és Broadwell lapkákban található IGP-k, azaz a Gen7.5 és Gen8 architektúra támogatja, kiegészítve az NVIDIA Fermi és Kepler architektúrára épülő grafikus vezérlőkkel, illetve az NVIDIA GM107-es lapkával, amely az első generációs Maxwell architektúrára alapoz. A TIER_2 szintet a második generációs Maxwell architektúra támogatja, értve ezalatt a GM204-es és a GM206-os lapkákat, míg a TIER_3-as szint az Xbox One és az AMD GCN architektúrájára épülő Radeonok kiváltsága.

Az egyéb újításokra rátérve visszaköszön mindaz, amit a Microsoft a DirectX 11.3 bemutatásakor már megismerhettünk. Ezek be lesznek sorolva az új Feature Level szintekbe. Utóbbiról általánosan még a DirectX 11.1-et elemző cikkünkben írtunk, így az friss információk megértéséhez érdemes elolvasni az alábbi oldalt.

A DirectX 12 négy futtatási szintet különböztet meg, vagyis a kiöregedett szinteket a Microsoft eltávolította. Az új API-ban elérhető futtatási szintek különbségeit az alábbi táblázatban foglaljuk össze:

Feature Level: 12_1 12_0 11_1 11_0
Shader modell 5.0 5.0 5.0 5.0
Geometry shader támogatás van van van van
Stream out támogatás van van van van
Compute shader támogatás van van van van
Tesszelláció támogatás van van van van
Gather4 támogatás van van van van
BC4/BC5 támogatás van van van van
BC6H/BC7 támogatás van van van van
Occlusion query-k támogatása van van van van
Alpha-to-coverage támogatás van van van van
Logikai operációk támogatása van van van opcionális
TIR funkció elérhetősége van van van nincs
Minimálisan előírt bekötési szint TIER_2 TIER_2 TIER_1 TIER_1
Raster order views támogatás opcionális nincs nincs nincs
Opcionális Typed UAV loads szint TIER_2 TIER_1 nincs nincs
Konzervatív raszterizáció opcionális nincs nincs nincs

A futtatási szintek támogatása szempontjából a DirectX 12 nagyon laza pórázon lóg. A D3D_FEATURE_LEVEL_11_0 lényegében nem változott. A D3D_FEATURE_LEVEL_11_1 szint esetében viszont a Microsoft elengedte a 64 UAV kezelésének követelményét, így ezt a szintet mostantól az NVIDIA Kepler és Fermi architektúrája is képes kezelni, ahogy az első generációs Maxwell architektúrára alapozó GM107-es lapka, illetve az Intel Gen7.5 és Gen8 architektúrára épülő IGP-i is. Itt megint az Intel húzta a legrövidebbet, ugyanis a raster order views funkciót a hardvereik képesek lennének támogatni, de ez a D3D_FEATURE_LEVEL_11_1 szinten nem elérhető, tehát ismét buktak egy képességet. Erre valószínűleg egy gyártófüggő kiterjesztést fognak készíteni, amit egyébként a DirectX 12 megenged.

A D3D_FEATURE_LEVEL_12_0 és a D3D_FEATURE_LEVEL_12_1 szint alapvető igénye lényegében csak a bekötési modell TIER_2 szintje, így a többi opcionális funkció miatt a GM204-es és a GM206-os NVIDIA lapkák, illetve a GCN architektúrára épülő Radeonok képesek támogatni. Az igazi kérdés az, hogy az opcionális funkciókból mit támogatnak ezek a hardverek. Erre vonatkozóan a Microsoft nem válaszolt. Erről részleteket majd a gyártók közölnek. Nagyon valószínű, hogy a GM204-es és a GM206-os lapkákon meg lesz oldva a támogatás, de erre lehetőség van az GCN architektúráján is.

A Typed UAV loads esetében a GCN architektúrára épülő Radeonok biztosan kezelik a legmagasabb szintet, míg a GM204-es és a GM206-os NVIDIA lapkáknál biztosan adott a TIER_1 szint, és nagyon valószínű a TIER_2 támogathatósága.

Végül újítás lesz még a Volume Tiled Resources funkció, amely a Tiled Resources képesség kiegészítése a 32 bites 3D-s textúrák kezelésével. Ez egy abszolút opcionális funkció lesz ugyanis a GM204-es és GM206-os lapkák, illetve a GCN architektúrára épülő Radeonok kezelik magát a képességet, de eltérő 3D-s textúraméret mellett. Éppen ezért ezt a funkciót a programokba kétszer kell majd implementálni. Fontos kiemelni azt is, hogy az explicit memóriamenedzsment következtében a Tiled Resources működése megváltozott, így nagyrészt az adott videojáték-motorba kell implementálni magát a funkciót, így a DirectX 12 erre csupán csoportosítást kínál.

Azóta történt

Előzmények

Hirdetés