A Microsoft bejelentette a Linux-alapú grafikus alkalmazások futtatásának tesztelését a Windows számára készült WSL2 (Windows Subsystem for Linux) környezetekben. Az alkalmazások teljes mértékben integrálódnak a Windows fő asztalával, beleértve a Start menüben történő parancsikonok elhelyezését, a hanglejátszást, a mikrofonbeszédet, az OpenGL hardveres gyorsítást, a programinformációk megjelenítését a tálcán, az Alt-Tab közötti programváltást, valamint az adatok másolását a Windows és Linux programok között a vágólapon keresztül.

A Linux-alkalmazások Windows fő asztalra történő kimenetének megszervezéséhez a Microsoft által kifejlesztett RAIL-Shell kompozit menedzser van használatban, amely a Wayland protokollt használja, és a Weston kódalapján alapul. A kimenet az RDP-RAIL (RDP Remote Application Integrated Locally) backend segítségével történik, amely eltér a Westonban korábban elérhető RDP backendtől abban, hogy a kompozit menedzser nem önállóan rajzolja meg az asztalt, hanem külön felületeket (wl_surface) irányít át az RDP RAIL csatornán a Windows fő asztalára történő megjelenítéshez. Az X11 alkalmazások indításához XWayland alkalmazandó.

A hangkimenet megszervezése a szerver a PulseAudio segítségével történik, amely szintén kapcsolatba lép a Windows rendszerrel az RDP protokollon keresztül (a hangkimenethez az rdp-sink plugint, míg a hangbevitelnél az rdp-source-t alkalmazzuk). A kompozit szerver, az XWayland és a PulseAudio egy univerzális mini-distróból, a WSLGd-ből van csomagolva, amely magában foglalja a grafikus és hangalrendszer absztrakciós összetevőit, és a CBL-Mariner Linux disztribúción alapul, amelyet a Microsoft felhőinfrastruktúrájában is használnak. A WSLGd a virtualizációs mechanizmusok segítségével indul el, míg a Linux vendégkörnyezete és a Windows hoszt rendszer közötti közös hozzáféréshez a virtio-fs-t alkalmazzák.
Mint RDP-szerver, Linux környezetben futó WSLGd-hoz a FreeRDP kerül alkalmazásra, míg Windows oldalon az RDP kliens az mstsc. A WSLDVCPlugin kezelői segítségével határozzák meg a meglévő grafikus Linux alkalmazásokat és azok megjelenítését a Windows menüben. A WSL2 környezetében telepített, hagyományos Linux disztribúciókkal, mint az Ubuntu, Debian és CenOS, a WSLGd-ben futó összetevők a Wayland, X11 és PulseAudio protokolloknak megfelelő socketek révén kommunikálnak. A WSLGd-hoz készült csatolókat MIT licenc alatt terjesztik.
A WSLGd telepítéséhez Windows 10 Insider Preview legalább 21362-es verziója szükséges. Később a WSLGd telepítési lehetősége a normál Windows kiadások számára is elérhetővé válik, anélkül, hogy részt kellene venni az Insider Preview programban. A WSLGd telepítése a tipikus „wsl —install” parancs végrehajtásával történik, például Ubuntu esetén — „wsl —install -d Ubuntu”. A meglévő WSL2 környezetekben a WSLGd telepítése a „wsl —update” paranccsal történik (csak WSL2 környezetek támogatottak, amelyek Linux magot használnak, nem pedig hívás-transzlációt). A grafikus alkalmazások a disztribúció alapértelmezett csomagkezelőjén keresztül telepíthetők.
A WSLGd csak 2D grafikai megjelenítési mechanizmusokat biztosít, a 3D grafika OpenGL alapú gyorsításához pedig virtuális GPU (vGPU) használatát javasolja a WSL2 disztribúciókban. A WSL-hez készült vGPU driverek az AMD, Intel és NVIDIA chipjeihez érhetők el. A grafikai gyorsítást egy OpenGL-t valósító réteg biztosít a DirectX 12 fölött. Ez a réteg a d3d12 driverként jelenik meg, amely a Mesa 21.0 fő összetevőjeként került bevezetésre, és a Collabora céggel együttműködésben fejlesztik.
A virtuális GPU működése Linux alatt a /dev/dxg eszközzel valósul meg, a WDDM (Windows Display Driver Model) D3DKMT szolgáltatásait utánozva a Windows magjában. A driver kapcsolatot létesít a fizikai GPU-val a VM busz segítségével. A Linux alkalmazások azonos szintű hozzáférést kapnak a GPU-hoz, mint a natív Windows alkalmazások, anélkül, hogy erőforrás-elosztásra lenne szükség a Windows és Linux között. A Surface Book Gen3 Intel GPU-val végzett teljesítménytesztek azt mutatták, hogy a natív Win32 környezetben a Geeks3D GpuTest teszt 19 FPS-t produkál, Linux környezetben vGPU-val 18 FPS-t, míg a Mesa szoftveres renderelés esetén 1 FPS-t.

Forrás: opennet.ru
