WSL získa podporu DirectX v systéme Linux so zostavami 21H1
Microsoft pridáva podporu DirectX do Linuxových distribúcií bežiacich v prostredí WSL 2. Zmena sa spustí s prvými zostavami 21H1 z pobočky Iron (Fe) v Fast Ring, ktoré by mali prísť v júni.
Microsoft je uvádzanie Windows Display Driver Model verzie 2.9, WDDMv2.9, ktorý prinesie zrýchlenie GPU na WSL 2. Aby to bolo možné, na strane WSL existuje špeciálny modul linuxového jadra, dxgkrnl
.
dxgkrnl
Dxgkrnl je úplne nový ovládač jadra pre Linux, ktorý odhaľuje /dev/dxg zariadenia do užívateľského režimu Linux. /dev/dxg odhaľuje súbor IOCTL, ktorý presne napodobňuje natívnu vrstvu služieb jadra WDDM D3DKMT v systéme Windows. Dxgkrnl v jadre Linuxu sa pripája cez VM Bus k svojmu veľkému bratovi na hostiteľovi Windows a používa toto pripojenie VM bus na komunikáciu s fyzickým GPU.
Ak má hostiteľ viacero GPU, všetky GPU sú projektované a dostupné pre prostredie Linuxu (za predpokladu, že všetky tieto GPU používajú ovládače WDDMv2.9).
Microsoft tvrdí, že architektúra nebude obmedzovať ani zasahovať do výkonu aplikácií WSL a prostriedkov GPU budú správne zdieľané medzi aplikáciami Windows bežiacimi spolu s grafickým používateľským rozhraním Linux a aplikáciami konzoly, ktoré využívajú DirectX.
Vydanie Dxgkrnl pre Linux sa vytvára ako open source.
DxCore a D3D12 v systéme Linux
Tento projekt prináša plné D3D12 API do Linuxu bez napodobenín.ibd3d12.so je kompilovaný z rovnakého zdrojového kódu ako d3d12.dll na Windows, ale pre Linux. Ponúka rovnakú úroveň funkčnosti a výkonu (bez réžie virtualizácie). Jedinou výnimkou je Present(). V súčasnosti neexistuje žiadna integrácia prezentácií s WSL, pretože WSL je dnes iba konzolový zážitok. Rozhranie D3D12 API možno použiť na vykresľovanie a výpočty mimo obrazovky, ale neexistuje podpora swapchainu na kopírovanie pixelov priamo na obrazovku.
DxCore (libdxcore.so) je zjednodušená verzia dxgi, kde boli staršie aspekty API nahradené modernými verziami. DxCore je k dispozícii pre Windows aj Linux. DxCore sa tiež používa na hosťovanie plochej verzie D3DKMT API, ktorú používa ovládač založený na WDDM v systéme Windows na komunikáciu s GPU. Toto API abstrahuje rozdiely v tom, ako sa rôzne služby WDDM dostanú do jadra (tabuľka služieb v systéme Windows verzus IOCTL v systéme Linux).
libd3d12.so a libdxcore.so sú predkompilované binárne súbory v užívateľskom režime s uzavretým zdrojovým kódom, ktoré sa dodávajú ako súčasť Windows. Tieto binárne súbory sú kompatibilné s distribúciami založenými na glibc a sú automaticky pripojené pod /usr/lib/wsl/lib a viditeľné pre nakladač. Inými slovami, tieto rozhrania API fungujú hneď po vybalení bez potreby inštalovať ďalšie balíčky alebo upravovať konfiguráciu distribúcie. Podpora je momentálne obmedzená na distribúcie založené na glibc vrátane Ubuntu, Debian, Fedora, Centos, SUSE atď.
D3D12 by nemohol fungovať bez ovládača používateľského režimu špecifického pre GPU (UMD), ktorý poskytujú partneri výrobcov GPU. UMD je zodpovedná za veci, ako je kompilácia shaderov do hardvérovo špecifického bajtového kódu a preklad požiadaviek na vykresľovanie API do skutočných inštrukcií GPU v vyrovnávacích pamätiach príkazov, ktoré sa majú vykonať GPU. Balík hostiteľského ovládača je namontovaný vo WSL na /usr/lib/wsl/drivers a je priamo prístupný pre d3d12 API. Opäť je potrebný ovládač WDDM 2.9.
Microsoft tiež pracuje na zavedení akcelerácie GPU pre OpenGL, OpenCL a Vulkan vo WSL prostredníctvom knižnice Mesa.
Podpora pre DxCore, D3D12, DirectML a NVIDIA CUDA prichádza do a Windows Insider Rýchla výstavba čoskoro. Rýchly prsteň je momentálne zapnutý mangán (Mn) pobočka OS. Očakáva sa, že rýchly prsteň prejde na nový Železná (Fe) vetva
koncom júna, ktorý túto novú funkciu predstaví zasväteným.