Van még egy titkos patron a DirectX 12-ben?

Lehet, hogy tévedünk, ha azt hisszük, hogy az előzetes specifikációk ismeretében már mindent kiderült a Microsoft új API-járól. A vállalat a hónap elején részletezte a DirectX 12 újításait, beleértve a leghasznosabb, ugyanakkor opcionális funkciókat is. Ezek persze még mindig előzetes specifikációk alapján születtek, vagyis véglegesítésről még nincs szó, de jó alapot kínálnak a kiindulásra.

Egyetlen egy dolog azonban nem került szóba, és ráadásul egy olyan területről van szó, amelyet szintén szoktak kritizálni a fejlesztők. A HLSL (High-Level Shader Language) nyelv lassan túlkoros lesz, így érdemes lenne továbblépni, illetve a kompatibilitást biztosító egységesített Direct3D bájtkód is nagyon öreg, hiszen az alapjai majd egy évtizedre nyúlnak vissza.

Bár nem ez számít a legnagyobb problémának, de szinte állandó kritika tárgya, hogy a Direct3D bájtkód még mindig négykomponenses vektoroperációkat fordít, miközben a mai modern GPU-architektúrák, ideértve például az Xbox One konzolban találhatót, már jóval fejlettebbek, így ideje lenne létrehozni egy új egységesített bájtkódot. Annál is inkább, mert az aktuális rendszerrel rengeteg információ elvész a fordítási lépcsők során, így a meghajtókba épített véglegesítést végző fordítók nem mindig tudnak jó kódot generálni a hardver számára. Többek között jellemző probléma, hogy a szükségesnél nagyobb lesz a regiszterhasználat a rossz allokáció következtében.

Úgy hírlik, hogy a Microsoft nem aludt el, és tisztában vannak azzal, hogy ez még egy problémás terület a DirectX API-n belül. A friss pletykák szerint az aktuális Direct3D bájtkód a kompatibilitás érdekében megmarad a DirectX 12-ben, hiszen egyik napról a másikra nem várható el a fejlesztőktől a megújulás, de készül egy új egységesített bájtkód is.

Érdekesség, hogy a Vulkan API pont ezen a területen dobta le a bombát, hiszen a SPIR-V a GLSL (OpenGL Shading Language) nyelv mellett megengedné az OpenCL C és C++ használatát, vagy akár egy saját nyelvet is, tehát komoly lehetőségeket kínál a fejlesztőknek. A Microsoft is hasonlóban gondolkodhat, hiszen lassan ideje eltüntetni az elavult shader nyelvek és az aktuális Direct3D bájtkód limitációit.

Információink szerint bejelentés még azért nem történt, mert a Microsoft győzködi a gyártókat, hogy álljanak át egy közös virtuális utasításarchitektúrára, illetve egy közös parancslistákra vonatkozó nyelvre. Ezzel a lehető legalacsonyabb szinten lenne biztosítható a tökéletes kompatibilitás.

Elméletben a Microsoft koncepciója működhet, ha a szebb jövő érdekében a gyártók hajlandók a büszkeségüket félretenni és egymással kooperálva a felhasználók és a fejlesztők érdekeit előtérbe helyezni. Ilyen esetében a magas szintű shader kódból születhet meg az új bájtkód, amely végül lefordulhat a közös virtuális utasításarchitektúrára, ahonnan a hardver megkapja a kódot a véglegesítésre vonatkozó fordítás után. Ha nem sikerül megegyezni a gyártóknak, akkor sincs igazából katasztrófa, de ebben az esetben az új bájtkód és a virtuális utasításarchitektúrák közé szükséges egy extra futtatási környezetet iktatni, amelyhez a gyártók megírhatják a saját fordítóikat. Ilyenkor a futtatási környezeten keresztül minden gyártó egyedi virtuális utasításarchitektúrájára generálható kód, amiből jön a véglegesítésre vonatkozó fordítás és megint eljutottunk a hardverhez.

A közös parancslistákra vonatkozó nyelv esetében is gyártói megegyezés szükséges. Ha sikerül, akkor minden gyártó ugyanazt a csomagformátumot használja majd, vagyis a hardverek képesek közvetlenül futtatni a szabványosított csomagokat. Ha nem sikerül elérni az egységesítést, akkor a mostani modellt kell használni, vagyis az operációs rendszernek kell szoftveresen menedzselnie a csomagokat, amelyeket egy gyártók által írt kernel meghajtó fordít le gyártóspecifikus csomagformátumokra.

Úgy tudjuk, hogy a Microsoft a koncepció bevezetését is késleltetné, ha a gyártók megegyeznének, ugyanis technikailag semmi akadálya nincs annak, hogy mindenki ugyanazt a virtuális utasításarchitektúrát és csomagformátumot használja. Pusztán a piacpolitikai érdekellentétek tehetnek keresztbe ennek a nagyszerű ötletnek.

Előzmények

Hirdetés