A Microsoft anunciou o início dos testes para a possibilidade de executar aplicativos Linux com interface gráfica em ambientes baseados no subsistema WSL2 (Windows Subsystem for Linux), destinado à execução de arquivos executáveis do Linux no Windows. Os aplicativos integram-se completamente com a área de trabalho principal do Windows, permitindo, entre outras coisas, a colocação de atalhos no menu Iniciar, reprodução de som, gravação com um microfone, aceleração de hardware OpenGL, exibição de informações sobre os programas na barra de tarefas, alternância entre programas usando Alt-Tab e cópia de dados entre programas do Windows e do Linux por meio da área de transferência.

Para organizar a exibição da interface dos aplicativos Linux na área de trabalho principal do Windows, é utilizado o gerenciador de composição RAIL-Shell, desenvolvido pela Microsoft, que utiliza o protocolo Wayland e é baseado no código de base Weston. A saída é feita usando o backend RDP-RAIL (RDP Remote Application Integrated Locally), que se diferencia do backend RDP anteriormente disponível no Weston, pois o gerenciador de composição não realiza a renderização da área de trabalho em si, mas redireciona superfícies individuais (wl_surface) através do canal RDP RAIL para exibição na área de trabalho principal do Windows. Para executar aplicativos X11, é utilizado o XWayland.

A saída de áudio é organizada utilizando servidor PulseAudio, que também interage com o Windows por meio do protocolo RDP (um plugin rdp-sink é utilizado para a saída de áudio, enquanto o rdp-source é utilizado para a entrada). O servidor de composição, XWayland e PulseAudio são empacotados na forma de uma mini-distribuição universal WSLGd, que inclui componentes para abstrair o subsistema gráfico e de áudio, e é baseada na distribuição CBL-Mariner Linux, também utilizada na infraestrutura em nuvem da Microsoft. O WSLGd é iniciado utilizando mecanismos de virtualização, e para o compartilhamento entre o ambiente convidado com Linux e o sistema host Windows, utiliza-se o virtio-fs.
Como Servidores RDP, executado no ambiente Linux WSLGd, utiliza FreeRDP, enquanto o cliente RDP no lado do Windows é o mstsc. Para identificar os aplicativos gráficos do Linux disponíveis e exibi-los no menu do Windows, foi preparado o manipulador WSLDVCPlugin. Com distribuições Linux comuns instaladas no ambiente WSL2, como Ubuntu, Debian e CenOS, o conjunto de componentes executado em WSLGd interage através da disponibilização de sockets, que processam solicitações nos protocolos Wayland, X11 e PulseAudio. As interfaces preparadas para WSLGd são distribuídas sob a licença MIT.
Para instalar o WSLGd, é necessário ter o Windows 10 Insider Preview, versão mínima 21362. No futuro, a possibilidade de instalação do WSLGd será disponibilizada também para as edições normais do Windows, sem necessidade de participar do programa Insider Preview. A instalação do WSLGd é feita através do comando padrão "wsl --install", por exemplo, para o Ubuntu — "wsl --install -d Ubuntu". Para ambientes WSL2 existentes, a instalação do WSLGd é realizada através do comando "wsl --update" (só são suportados ambientes WSL2 que utilizam o kernel Linux, e não a tradução de chamadas). Os aplicativos gráficos são instalados através do gerenciador de pacotes padrão da distribuição.
O WSLGd fornece apenas mecanismos para a saída de gráficos 2D, enquanto que para acelerar gráficos 3D baseados em OpenGL nos distribuições instaladas em WSL2, é sugerido utilizar uma GPU virtual (vGPU). Drivers vGPU para WSL estão disponíveis para chips AMD, Intel e NVIDIA. A aceleração gráfica é garantida através da disponibilização de uma camada com implementação de OpenGL sobre DirectX 12. Essa camada é apresentada como o driver d3d12, que foi incluído na versão principal do Mesa 21.0, sendo desenvolvido em colaboração com a empresa Collabora.
O funcionamento da GPU virtual é implementado no Linux através do dispositivo /dev/dxg com serviços que replicam o modelo de driver de exibição do Windows (WDDM) D3DKMT do núcleo do Windows. O driver organiza a conexão com a GPU física através do barramento VM. Aplicativos Linux têm o mesmo nível de acesso à GPU que aplicativos nativos do Windows, sem o uso de compartilhamento de recursos entre Windows e Linux. Testes de desempenho em um dispositivo Surface Book Gen3 com GPU Intel mostraram que, no ambiente nativo Win32, o teste Geeks3D GpuTest apresenta 19 FPS; no ambiente Linux com vGPU, 18 FPS; e na renderização por software no Mesa, 1 FPS.

Fonte: opennet.ru
