Microsoft je najavio početak testiranja mogućnosti pokretanja Linux aplikacija s grafičkim sučeljem u okruženjima temeljenim na WSL2 podsustavu (Windows Subsystem for Linux), dizajniranom za pokretanje Linux izvršnih datoteka na Windowsima. Aplikacije su u potpunosti integrirane s glavnom radnom površinom sustava Windows, uključujući podršku za postavljanje prečaca u izbornik Start, audio reprodukciju, snimanje mikrofona, OpenGL hardversko ubrzanje, prikaz informacija o programima na programskoj traci, prebacivanje između programa pomoću Alt-Tab, kopiranje podataka između Windowsa - i Linux programe putem međuspremnika.
Za organiziranje izlaza sučelja Linux aplikacije na glavnu Windows radnu površinu, koristi se RAIL-Shell kompozitni upravitelj koji je razvio Microsoft, koristeći Wayland protokol i temeljen na Weston bazi koda. Izlaz se izvodi pomoću pozadine RDP-RAIL (RDP Remote Application Integrated Locally), koja se razlikuje od pozadine RDP prethodno dostupne u Westonu po tome što kompozitni upravitelj ne renderira samu radnu površinu, već preusmjerava pojedinačne površine (wl_surface) preko RDP-a. RAIL kanal za prikaz na glavnoj radnoj površini sustava Windows. XWayland se koristi za pokretanje X11 aplikacija.
Audio izlaz je organiziran pomoću PulseAudio poslužitelja, koji također komunicira sa Windows-om koristeći RDP protokol (za audio izlaz se koristi dodatak rdp-sink, a za unos rdp-source plugin). Kompozitni poslužitelj, XWayland i PulseAudio upakirani su u obliku univerzalne mini distribucije pod nazivom WSLGd, koja uključuje komponente za apstrahiranje grafičkog i audio podsustava, a temelji se na CBL-Mariner Linux distribuciji, koja se također koristi u Microsoftovoj cloud infrastrukturi. . WSLGd radi pomoću mehanizama virtualizacije, a virtio-fs se koristi za dijeljenje pristupa između Linux gostujućeg okruženja i Windows glavnog sustava.
FreeRDP se koristi kao RDP poslužitelj pokrenut u WSLGd Linux okruženju, a mstsc djeluje kao RDP klijent na Windows strani. Za otkrivanje postojećih grafičkih Linux aplikacija i njihov prikaz u Windows izborniku, pripremljen je rukovatelj WSLDVCPlugin. Uz redovne distribucije Linuxa kao što su Ubuntu, Debian i CenOS instalirane u WSL2 okruženju, skup komponenti koje rade u WSLGd-u međusobno djeluju pružajući utičnice koje obrađuju zahtjeve koristeći protokole Wayland, X11 i PulseAudio. Vezovi pripremljeni za WSLGd distribuiraju se pod licencom MIT-a.
Instalacija WSLGd-a zahtijeva Windows 10 Insider Preview najmanje verziju 21362. Ubuduće će WSLGd biti dostupan za redovita izdanja Windowsa bez potrebe za sudjelovanjem u programu Insider Preview. Instalacija WSLGd-a provodi se izvršavanjem standardne naredbe “wsl —install”, na primjer, za Ubuntu - “wsl —install -d Ubuntu”. Za postojeća WSL2 okruženja, instaliranje WSLGd-a vrši se pomoću naredbe "wsl --update" (podržana su samo WSL2 okruženja koja koriste Linux kernel, a ne prijevod poziva). Grafičke aplikacije instaliraju se putem standardnog upravitelja paketa distribucije.
WSLGd pruža samo motore za izlaz 2D grafike, a za ubrzavanje 3D grafike temeljene na OpenGL-u, distribucije instalirane u WSL2 nude korištenje virtualnog GPU-a (vGPU). vGPU upravljački programi za WSL dostupni su za AMD, Intel i NVIDIA čipove. Grafičko ubrzanje osigurano je pružanjem sloja s implementacijom OpenGL-a preko DirectX-a 12. Sloj je dizajniran u obliku d3d12 drajvera, koji je uključen u glavni dio Mesa 21.0 i razvija se u suradnji s Collaborom.
Virtualni GPU implementiran je u Linuxu pomoću /dev/dxg uređaja s uslugama koje repliciraju WDDM (Windows Display Driver Model) D3DKMT Windows kernela. Upravljački program uspostavlja vezu s fizičkim GPU-om pomoću VM sabirnice. Linux aplikacije imaju istu razinu GPU pristupa kao izvorne Windows aplikacije, bez potrebe za dijeljenjem resursa između Windowsa i Linuxa. Testiranje performansi na Surface Book Gen3 uređaju s Intel GPU-om pokazalo je da u izvornom Win32 okruženju Geeks3D GpuTest test pokazuje 19 FPS, u Linux okruženju s vGPU-om - 18 FPS, a sa softverskim renderiranjem u Mesa - 1 FPS.
Izvor: opennet.ru