Hirdetés

Új és egyben nyílt shader fordító jár a friss Windows 10 Creators előzeteshez

A Microsoft előkészítette a shader modell 6.0-hoz szükséges rendszerkomponenseket, amelyeket már mindenki elérhet.

A Microsoft töretlenül halad a Windows 10 Creators verziójának kiadása felé, amire majd tavasszal kerülhet sor, de addig is érkeznek az Insider Preview verziók, és ezek közül az új 15007-es rendszer igazán fontosnak számít. A redmondi óriáscég még az előző év tavaszán beszélt a shader modell 6.0-ról, amelyről természetesen be is számoltunk. Az új konstrukció háttérbe helyezi az elavultnak tekinthető D3D bájtkódot (D3BC), és a helyére egy modern reprezentációs formátum kerül DXIL néven. Az átalakításoknak hála a fejlesztők a programfordítás viszonylag nagy részét láthatják, illetve korlátozott mértékben kontrollálhatják, így több lehetőségük adódik a teljesítmény optimalizálására.

Ahhoz, hogy a lehető legnagyobb szabadságot adják meg a partnereiknek, a Microsoft már az elején bejelentette, hogy az új shader fordítójuk a Clang/LLVM keretrendszerre épül és nyílt forráskódú is lesz. A jó hír, hogy ezt az ígéretet a cég betartotta, ugyanis végre elérhetővé tették a teljes projektet az alábbi GitHUB oldalon keresztül. A jelenlegi verzió még előzetesnek tekinthető, de hamarosan véglegesítésre kerül. Az aktuális tervek szerint a ténylegesen kész kiadást a Windows 10 Creators frissítés publikálásának idejére tervezik, de ha ezt a dátumot esetleg nem sikerül tartani, akkor egy kisebb frissítésben megkapja a rendszer az új generációs shader infrastruktúrát.

A Microsoft egyébként elég nagyot lép előre a shader programozás területén, ami rá is fért a Direct3D API-ra. Többek között olyan új jelentőségek érkeznek, mint a wave operation intrinsics. A HLSL természetesen eddig is tartalmazott különböző intrinsics, azaz beépített függvényeket, de maga a feldolgozási modell alapvetően egy szálú volt a GPU-n belül, vagyis egyértelmű korlátozásokat kellett megszabni ahhoz, hogy a szálak a hardverben párhuzamosan dolgozhassanak. Ez a modell leginkább a tipikus SIMD hardvereknek kedvezett, ugyanakkor látni kell, hogy az iparág egyre inkább a SIMT konstrukciók felé tereli a fejlesztéseket. Ilyen rendszert alkalmaz az AMD (összes GCN) és az NVIDIA (Fermi, Kepler, Maxwell, Pascal), illetve az Intel (Gen7.5, Gen8, Gen9, Gen9.5) is képes ilyen formában működni, nem megfeledkezve az ultramobil piacról, ahol a SIMT konstrukciók szintén kezdi átvenni a korábbi elven tervezett dizájnok helyét, kiemelve az új ARM BiFrost architektúrát.

A váltás szükségességét az adja, hogy SIMT-re optimalizálni nagyságrendekkel egyszerűbb, mint klasszikus SIMD-re. Bár maga a HLSL igen magas szintű nyelv ahhoz, hogy ez ne okozzon problémát fejlesztőknek, a rendszerprogramozók számára már egyáltalán nem ilyen egyszerű a helyzet, így a gyártók máig küzdenek azzal, hogy a D3D bájtkód elavultságát a hardver felé irányuló fordítási rétegeknél leküzdjék. Az új DXIL viszont sokkal jobban fekszik majd a modern hardvereknek, így mai viszonylatban jóval egyszerűbb lesz hatékony fordítót írni hozzá, illetve a Clang/LLVM keretrendszer alkalmazásának és a nyílt forráskódnak hála olyan közösségi projektek születhetnek, amelyekkel a fejlesztők élete is jóval egyszerűbb lehet, és komplexebb kódok készülhetnek rövidebb idő alatt.

A Microsoft koncepciója a DXIL-lel kifejezetten hasonlít arra, amit a Khronos Group gondolt el a SPIR-V kapcsán. Adott egy nyílt specifikációjú alap, arra kezdésnek elérhető egy shader nyelv, és persze a nyílt forráskódú fordító. Az egész rendszer innentől kiegészíthető kvázi akármilyen formában. A SPIR-V célja többek között az volt, hogy felgyorsítsa a programnyelvek evolúcióját, és talán nem lesz meglepetés, hogy ugyanez a célja a DXIL-nek is. Pont annyira nem kötelező HLSL-ben írni a shadert a DXIL-hez, mint amennyire nem kötelező a GLSL-t használni a SPIR-V-hez.

A fentiek mellett a DXIL ugyanúgy kiegészíthető, ahogy a SPIR-V. A gyártók adhatnak hozzá kiterjesztéseket, így olyan funkciókat kaphatnak a fejlesztők, amelyek alapból, szabványos formában nem érhetők el. A DXIL ebből a szempontból persze nem mutathatta meg, hogy mit tud, hiszen még nincs is kész, de a SPIR-V-t például az AMD előszeretettel egészíti ki különböző újításokkal, amelyek egy részét a Doom című játék Vulkan módja már használ is. A Microsoft célja az, hogy a DXIL-t is így pátyolgassák a gyártók. Utóbbi azért lényeges elem, mert a gyártóspecifikus funkciók beépítésének engedélyezése végeredményben meggyorsítja magának a rendszernek a fejlődését is.

Az új fordítóinfrastruktúra akkor használható, ha az adott hardverhez telepített grafikus eszközillesztő jelzi a shader modell 6.0 támogatását. Ez a publikus meghajtókkal jelenleg kizárt, így a gyártóktól kell kérni megfelelő támogatással felvértezett csomagot. Éppen ezért a Microsoft aktuális bejelentése inkább a fejlesztőket érinti, hiszen ők már kísérletezhetnek az új alapokra épített rendszerrel, amire szükségük is lesz, ugyanis nem árt már most elkezdeni az aktuális projektek fejlesztését és tesztelését.

A DXIL és a SPIR-V valójában együtt lesz igazán hasznos a piac számára, mivel ezekkel a reprezentációs formátumokkal, a felépített nyílt alapok mellett, a fejlesztők megoldhatják azt, hogy egyetlen shader nyelvből szolgáljanak ki több platformot is, ami óriási előny lehet a teljes iparág számára.

Azóta történt

Előzmények

Hirdetés