A Microsoft máris a DirectX 12 továbbfejlesztéséről beszél

A Microsoft az idei GDC-n már nem a DirectX 12-ről, hanem a folyamatban lévő frissítési tervezetről beszélt, amely némi betekintést ad a jövőbe. A vállalat magával az API-val elégedett, de vannak olyan igények, amelyekre nem tudtak gyorsan reagálni. Ezek beépítése vagy nehézkes volt, vagy új technológiákról van szó, amelyek szabványosítása időbe kerül.

A Max McMullen, a Microsoft DirectX fejlesztéséért felelős vezető szakembere szerint a legkorábban az UWP Swapchain API-k fognak érkezni, amelyek a program oldaláról szabványos formában teszik kihasználhatóvá a variálható frissítési frekvenciát. A Microsoft végül egy olyan modellt épít fel, amellyel szabványos kód formájában egyszerre lehet támogatni a VESA Adaptive-Sync technológiára épülő implementációkat, mint például az AMD FreeSync-et, vagy az NVIDIA G-Sync rendszerét. Mivel a technológiák bizonyos szempontok szerint különböznek, így egy olyan közös alap lesz specifikálva, amelyet az elérhető gyártói implementációk gond nélkül kezelni tudnak.

A működés úgy néz majd ki, hogy a gyártóknak a saját implementációikat ki kell egészíteni az UWP Swapchain API-k támogatásával, és ha az alkalmazás tartalmaz direkt támogatást a Microsoft új Swapchain API-jaira, akkor az megfelelően lefordul a gyártói implementációkra. Ez az új modell azt is biztosítaná, hogy a most érkező alkalmazások a jövőben befutó összes variálható frissítési frekvenciára vonatkozó implementációt támogathassák, ha az adott gyártó az ehhez szükséges API-kat direkten kezeli az adott meghajtóban.

Később, de még idén kiegészül a DirectX 12 a PSO (Pipeline State Object) könyvtárakkal, amely egy jól kezelhető, de azért mégis kellemetlen problémára reagál. Nevezetesen arról van szó, hogy számos PSO ugyanazt a shadert használja, ami tulajdonképpen nem baj, de ilyenkor egyenként vannak kezelve a PSO-k, ami rengeteg redundáns munkát jelent, illetve mindegyik PSO-t külön kell tárolni. A PSO könyvtárakkal ez a helyzet sokkal kellemesebben kezelhető, ami a fejlesztők munkáját megkönnyítheti, illetve csökken a tárhelyigény is.

Érkezik még a GPU-alapú validátor, illetve az Xbox One-on nagyon kedvelt PIX PC-s verziója, amely egy rendkívül jó képességű teljesítményelemző eszköz a DirectX API-ra írt alkalmazásokhoz.

A nagy meglepetés azonban az új Shader Model, ugyanis jön a 6.0-s verzió, amely radikális változásokat vezet be az aktuális, mára elavultnak tekinthető rendszerbe. A mai Shader Model verziók egyik legnagyobb problémája, hogy még mindig az fxc fordítóra épülnek, ami a HLSL forráskódot D3D bájtkódra, vagy kevésbé ismert néven DXBC-re fordítja. Ezt kapja meg a grafikus meghajtó, de egyrészt a D3D bájtkód nagyon régi alapra épül, vagyis a régi GPU-architektúrákhoz lett tervezve, másrészt a gyártók ma már úgy próbálnak optimalizálni, hogy a driveren belül a D3D bájtkódot fejtik vissza annak érdekében, hogy gyorsabb gépi kód születhessen. Röviden sok a probléma ezen a területen és nincs semmi értelmes megoldás. Illetve tulajdonképpen van, de ahhoz a Vulkan API-t kell használni, ami a Microsoft számára nyilván nem jó alternatíva.

A Shader Model 6.0-val a Microsoft gyakorlatilag minden gondot egyben szeretne megoldani. Egyrészt teljesen kidobják a manapság alkalmazott fordítási modellt. Persze a kompatibilitás miatt fxc és a D3D bájtkód megmarad a rendszerben, de annyira elavultak, hogy mindenkit az új modell használatára biztatnak majd. Az új fordítási út esetében a HLSL forráskódból először a Clang HLSL fordító készít egy úgynevezett HLSL Top IR-t. Ez egy olyan köztes reprezentáció, amelyet a következő lépcsőben különböző LLVM fordítási fázisokon lehet optimalizálni. Itt jön a lényeg, ugyanis ehhez a programfejlesztők tetszőlegesen adhatnak hozzá egyedi fordítási fázisokat, a jobb teljesítmény érdekében. Az új reprezentációs formátum DXIL (DirectX Intermediate Language) lesz, és ez jut el a driverbe ahonnan a kód lefordítható a grafikus vezérlők utasításarchitektúrájára.

A jelentősen átdolgozott fordítási modellel 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 lesz a teljesítmény optimalizálására. Az új fordítási út egyébként HLSL 5.1-es, vagy újabb verziójú nyelven írt kódot fogad el.

A Shader Model 6.0 mellé érkezik a HLSL 6.x nyelv is, amely számos régóta igényelt újítást vezet be, mint például wave szintű operációk, a 64 bites uint formátumok, illetve a Lambda funkciók. A Shader Model 6.0-t és a hozzá kapcsolódó HLSL 6.x-et az Xbox One már támogatja, mivel ezen a konzolon történik a rendszer fejlesztése. A PC-piacon belüli hardvertámogatásról még nincs konkrét adat, de minden olyan grafikus vezérlő alkalmas lesz rá, amely rendelkezik az Xbox One konzol IGP-jének tudásával.

Az előzetes adatok szerint a Shader Model 6.0 leghamarabb az év végén jelenhet meg. Az újításokat a Windows 10 a Windows Update szolgáltatáson keresztül kapja majd meg.

Azóta történt

Előzmények

Hirdetés