WSL bo dobil podporo za DirectX v Linuxu z različicami 21H1
Microsoft dodaja podporo za DirectX distribucijam Linuxa, ki delujejo v okolju WSL 2. Sprememba je zaživela s prvimi različicami 21H1 iz veje Iron (Fe) v Fast Ringu, ki naj bi prišle junija.
Microsoft je uvajanje Model gonilnika zaslona Windows različice 2.9, WDDMv2.9, ki bo prinesel pospeševanje GPU na WSL 2. Da bi to omogočili, je na strani WSL poseben modul jedra Linuxa, dxgkrnl
.
dxgkrnl
Dxgkrnl je popolnoma nov gonilnik jedra za Linux, ki izpostavlja /dev/dxg naprave v uporabniški način Linux. /dev/dxg razkrije nabor IOCTL, ki natančno posnema izvorno storitev jedra WDDM D3DKMT v sistemu Windows. Dxgkrnl znotraj jedra Linuxa se prek vodila VM poveže s svojim velikim bratom na gostitelju Windows in uporablja to povezavo vodila VM za komunikacijo s fizičnim GPU.
Če ima gostitelj več grafičnih procesorjev, so vsi grafični procesorji projicirani in na voljo okolju Linux (ob predpostavki, da vsi ti grafični procesorji izvajajo gonilnike WDDMv2.9).
Microsoft trdi, da arhitektura ne bo omejevala ali ovirala delovanja aplikacij WSL in virov GPU bo pravilno deljen med aplikacijami za Windows, ki se izvajajo poleg GUI Linuxa, in konzolnimi aplikacijami, ki jih uporabljajo DirectX.
Izdaja Dxgkrnl Linux je odprtokodna.
DxCore & D3D12 v Linuxu
Ta projekt prinaša polni D3D12 API v Linux brez imitations.ibd3d12.so je preveden iz iste izvorne kode kot d3d12.dll v sistemu Windows, vendar za cilj Linux. Ponuja enako raven funkcionalnosti in zmogljivosti (minus stroški virtualizacije). Edina izjema je Present(). Trenutno ni predstavitvene integracije z WSL, saj je WSL danes le konzolna izkušnja. API D3D12 se lahko uporablja za upodabljanje in računanje zunaj zaslona, vendar ni podpore za zamenjavo verige za kopiranje slikovnih pik neposredno na zaslon.
DxCore (libdxcore.so) je poenostavljena različica dxgi, kjer so starejše vidike API-ja nadomestile sodobne različice. DxCore je na voljo tako v sistemu Windows kot Linux. DxCore se uporablja tudi za gostovanje ravne različice API-ja D3DKMT, ki jo uporablja gonilnik na podlagi WDDM v sistemu Windows za pogovor z GPU. Ta API abstrahira razlike v tem, kako različne storitve WDDM pridejo do jedra (tabela storitev v sistemu Windows v primerjavi z IOCTL v Linuxu).
libd3d12.so in libdxcore.so sta zaprtokodni, vnaprej prevedeni binarni datoteki uporabniškega načina, ki sta na voljo kot del sistema Windows. Te binarne datoteke so združljive z distribucijami, ki temeljijo na glibc, in so samodejno nameščene pod /usr/lib/wsl/lib in vidna nakladalcu. Z drugimi besedami, ti API-ji delujejo takoj iz škatle, ne da bi bilo treba namestiti dodatne pakete ali prilagajati konfiguracijo distribucije. Podpora je trenutno omejena na distribucije, ki temeljijo na glibc, vključno z Ubuntu, Debian, Fedora, Centos, SUSE in tako naprej.
D3D12 ne bi mogel delovati brez gonilnika za uporabniški način za GPU (UMD), ki ga zagotovijo partnerji proizvajalca GPU. UMD je odgovoren za stvari, kot je prevajanje senčil v strojno specifično bajtno kodo in prevajanje zahtev za upodabljanje API-ja v dejanska navodila GPU v ukaznih medpomnilnikih, ki jih je treba izvesti GPU. Paket gonilnika gostitelja je nameščen znotraj WSL v /usr/lib/wsl/drivers in je neposredno dostopen API-ju d3d12. Ponovno je potreben gonilnik WDDM 2.9.
Microsoft si prizadeva tudi za pospeševanje GPU za OpenGL, OpenCL in Vulkan v WSL prek knjižnice Mesa.
Podpora za DxCore, D3D12, DirectML in NVIDIA CUDA prihaja k a Windows Insider Hitra gradnja kmalu. Hitri zvonec je trenutno na mangan (Mn) veja OS. Fast ring naj bi prešel na novo Železna (Fe) veja
proti koncu junija, ki bo to novo funkcionalnost razkrila insajderjem.