Tvrtka Microsoft najavila je početak testiranja mogućnosti pokretanja Linux aplikacija s grafičkim sučeljem u okruženjima temeljenim na WSL2 (Windows Subsystem for Linux), namijenjena za pokretanje izvršnih Linux datoteka u Windowsima. Aplikacije se potpuno integriraju s glavnim radnim stolom Windows, uključujući podršku za postavljanje prečaca u Start izbornik, reprodukciju zvuka, snimanje putem mikrofona, hardversko ubrzanje OpenGL-a, prikaz informacija o programima na traci zadataka, prebacivanje između programa pomoću Alt-Tab i kopiranje podataka između Windows i Linux programa putem međuspremnika.

Za organizaciju prikaza sučelja Linux aplikacija na glavnom radnom stolu Windows korišten je kompozitni upravitelj RAIL-Shell koji je razvio Microsoft, a koji koristi Wayland protokol i temelji se na kodnoj bazi Weston. Prikaz se vrši putem RDP-RAIL (RDP Remote Application Integrated Locally) backend-a, koji se razlikuje od prethodno dostupnog RDP backend-a u Westonu po tome što kompozitni upravitelj ne izvršava samu iscrtavanje radnog stola, već preusmjerava pojedinačne površine (wl_surface) putem RDP RAIL kanala za prikaz na glavnom radnom stolu Windows. Za pokretanje X11 aplikacija koristi se XWayland.

Izlaz zvuka organiziran je korištenjem poslužitelja PulseAudio, koji također komunicira s Windowsom putem RDP protokola (za izlaz zvuka koristi se rdp-sink plugin, a za ulaz — rdp-source). Kompozitni poslužitelj, XWayland i PulseAudio su upakirani u obliku univerzalnog mini-distribucije WSLGd, koji uključuje komponente za apstrahiranje grafičkog i zvučnog sustava, a temelji se na CBL-Mariner Linux distribuciji, koja se također koristi u Microsoftovoj oblaku infrastrukturi. WSLGd se pokreće korištenjem mehanizama virtualizacije, a za zajednički pristup između gostujućeg Linux okruženja i domaćinske Windows sustava koristi se virtio-fs.
Kao RDP poslužitelj, pokrenut u Linux okruženju WSLGd, koristi FreeRDP, dok RDP klijent na strani Windows-a predstavlja mstsc. Za identifikaciju postojećih Linux grafičkih aplikacija i njihovo prikazivanje u Windows izborniku pripremljen je WSLDVCPlugin handler. U postavljenim WSL2 okruženjima s običnim Linux distribucijama poput Ubuntu, Debian i CenOS, komponenta koja se izvršava u WSLGd komunicira putem pružanja soketa koji obrađuju zahtjeve putem Wayland, X11 i PulseAudio protokola. Pripremljene obloge za WSLGd distribuiraju se pod MIT licencom.
Za instalaciju WSLGd potrebno je imati Windows 10 Insider Preview najmanje verzije 21362. U budućnosti, mogućnost instalacije WSLGd bit će dostupna i za obične verzije Windows-a, bez potrebe za sudjelovanjem u Insider Preview programu. Instalacija WSLGd vrši se izvršavanjem standardne naredbe „wsl —install“, na primjer, za Ubuntu — „wsl —install -d Ubuntu“. Za postojeće WSL2 okruženje, instalacija WSLGd vrši se pomoću naredbe „wsl —update“ (podržavaju se samo WSL2 okruženja u kojima se koristi Linux jezgra, a ne prevoditelj poziva). Grafičke aplikacije instaliraju se putem standardnog paketnog menadžera distribucije.
WSLGd pruža samo mehanizme za iscrtavanje 2D grafike, dok se za ubrzanje 3D grafike temeljenog na OpenGL-u u instaliranim WSL2 distribucijama preporučuje korištenje virtualnog GPU (vGPU). VGPU drajveri za WSL dostupni su za čipove AMD, Intel i NVIDIA. Ubrzanje grafike omogućeno je kroz pružanje sloja s implementacijom OpenGL-a iznad DirectX 12. Ovaj sloj je predstavljen kao d3d12 drajver koji je uključen u osnovni set Mesa 21.0, a razvija se u suradnji s tvrtkom Collabora.
Rad virtualnog GPU-a realiziran je u Linux-u putem uređaja /dev/dxg s uslugama koje repliciraju WDDM (Windows Display Driver Model) D3DKMT jezgre Windows-a. Drajver organizira vezu s fizičkim GPU-om putem VM bus-a. Linux aplikacije imaju isti razinu pristupa GPU-u kao i izvorne Windows aplikacije, bez primjene razdvajanja resursa između Windows-a i Linux-a. Testiranje performansi na uređaju Surface Book Gen3 s Intel GPU-om pokazalo je da u izvornoj Win32 okolini test Geeks3D GpuTest demonstrira 19 FPS, dok u Linux okruženju s vGPU-om — 18 FPS, a pri softverskom iscrtavanju u Mesi — 1 FPS.

Izvor: opennet.ru
