Majdnem végleges a DirectX 12 bekötési modellje

A Microsoft eredetileg a GDC-n leplezte le a DirectX 12 bekötési modellje, amelyről az alábbi hírben be is számoltunk. de a vállalat szinten azonnal módosította az előzetes specifikációkat, amelyről szintén írtunk egy részletes hírt. Az idei Build konferencián kiderült, hogy ez sem a végleges változat, mivel ismét módosítani kellett a rendszer képességeit, amit most főleg a fejlesztők javaslataira építve tettek meg.

A visszavont modellekre vonatkozó táblázatokat beszúrjuk ide, hogy könnyebb legyen értelmezni a változásokat:

A DirectX 12 eredetileg tervezett bekötési modellje - VISSZAVONVA!
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 DirectX 12 legutóbbi bekötési modellje - VISSZAVONVA!
Szint TIER_1 TIER_2 TIER_3
Leíróhalmaz mérete 55 296 1 048 576 több mint 1 048 576
Leírótáblák száma 5 nincs limitálva nincs limitálva
UAV-k maximális száma az összes shader lépcsőn 64 teljes leíróhalmaz teljes leíróhalmaz
CBV-k maximális száma shader lépcsőnként 14 14 teljes leíróhalmaz
SRV-k maximális száma shader lépcsőnként 128 teljes leíróhalmaz teljes leíróhalmaz
Mintavételezők maximális száma shader lépcsőnként 16 teljes leíróhalmaz
teljes leíróhalmaz

Az új bekötési modell lényegében végleges, bár a gyártók még nem fogadták el, de ez a Microsoft szerint csak formalitás. A frissítésre vonatkozó adatokat az alábbi táblázat foglalja össze:

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

A változások szempontjából az egyik legfontosabb lépcső, hogy a leíróhalmaz mérete minden esetben minimum 1 048 576. Ezt a fejlesztők kiváltképp szorgalmazták, mivel már az eredeti 65 536-ot rendkívül korlátozó tényezőnek találták, a módosított 55 296-ot pedig nem voltak hajlandók elfogadni. A Microsoft annak érdekében, hogy az igényeket kielégítse, előállt egy új bekötési rendszerrel, amely lehetővé teszi azokon a hardvereken is a nagyméretű leíróhalmazt, amelyek funkcionálisan nem támogatják az úgynevezett bindless bekötést. Ez a mód csak TIER_1 szinten működik, mivel a TIER_2 szint alapvetően megköveteli a bindless bekötés támogatását az SRV-k maximális száma miatt.

A Microsoft új bekötési rendszere azonban áldozatokkal jár. A vállalat csak emulációval tudta kiszolgálni a fejlesztők igényeit, így a TIER_1 szinten üzemelő hardverek ugyan nagyméretű leíróhalmazt kapnak, de ennek jelentős processzoridő az ára, vagyis a DirectX 12 ebben a módban sokkal több erőforrást elvesz a processzortól, mint a modernebb szinteken. Ennek lényeges hatása lesz a többletterhelés növekedése, és ezzel az elméletben elérhető teljesítmény is csökken.

A leírótáblák száma TIER_2 szinten vissza lett minősítve 5-re, ami azzal magyarázható, hogy ennél többet csak a GCN architektúrára épülő Radeonok támogatnak, és a Microsoft azt szeretné, ha a jövőben minden új hardver a TIER_3 szintet kezelné, így a hardveres fejlesztéseket ebbe az irányba próbálják erősíteni.

Az UAV-k számát is visszaminősítették 64-re a TIER_2 szinten. Ennek főleg az az indoka, hogy a tervezett virtuális UAV-kre vonatkozó koncepció önmagában jó terv, de kontrollálatlanul rendkívül lassan futhat az Xbox One-ra tervezett kód, márpedig a PC-s DirectX 12 API-n futó alkalmazásokat az Xbox One konzolhoz fogja igazítani a fejlesztők többsége. Mivel a felhasználók nem valószínű, hogy megértenék melyik effekt aktiválható, így a Microsoft úgy döntött, hogy a legjobb az lesz, ha maga a programfejlesztő dönti el, hogy a TIER_1 és TIER_2 szinteken mely eljárásokat nem engedik futni.

A fentiek mellett az UAV-k maximális száma attól is függ, hogy az adott hardvert melyik D3D_FEATURE_LEVEL szintre minősítette az erőforrás-ellenőrzés. Amennyiben a grafikus vezérlő nem lett besorolva minimum a D3D_FEATURE_LEVEL_11_1 szintre, akkor az UAV-k maximális száma az összes shader lépcsőn a TIER_1 szinten csak 8 lehet. A TIER_2 szinten azonban az UAV-k maximális száma shader lépcsőkre is egyedire szabható. Ez azt jelenti, hogy ilyen formában shader lépcsőnként lehet 8 UAV-vel számolni, amit pótolhatnak a virtuális UAV-k.

A hardverek szempontjából az új bekötési modell most nem jelent módosítást. A GCN architektúrára épülő Radeonok (ide sorolva a Microsoft Xbox One konzolt is) továbbra is a legjobb TIER_3 szintet támogatják, míg az Intel Broadwell és Haswell lapkáiban található Gen8 és Gen7.5 architektúrára alapozó IGP-k esetében is megmarad a TIER_1 szint 64 valós UAV-vel, illetve ide sorolható még az NVIDIA Fermi architektúrája is, de az összes shader lépcsőre levetítve csak 8 valós UAV támogatásával.

Az NVIDIA Kepler architektúrára épülő GeForce-ok megmaradnak a TIER_2 szinten shader lépcsőnként 8 valós UAV kezelésének lehetőségével, illetve az NVIDIA GM107-es lapkája is ilyen körülmények között fog működni. A GM200, GM204 és GM206 lapkák esetében is marad a TIER_2 szint 64 valós UAV támogatásával.

Azóta történt

Előzmények

Hirdetés