Build 2020 : Microsoft apporte l'accélération matérielle et DirectX à Windows Subsystem pour Linux

Par:
admin

mer, 20/05/2020 - 13:58

WSL, pour Window Subsystem pur Linux connait un très gros succès. De ce fait Microsoft ne cesse à travailler à son amélioration. Après WSL 2, arrivé dans Windows 10 2004 et qui apporte un vrai noyau Linux dans Windows, Microsoft travaille pour amener l'accélération matérielle et DirectX dans WSL. Cette annonce a été faite lors de la conférence Build 2020 et un très intéressant billet, très détaillé, de Microsoft montre que les choses sont déjà très avancées.

Au fil des versions de Windows, Microsoft a développé une technologie de virtualisation de GPU : WDDM GPU Paravirtualization, ou GPU-PV. GPU-PV est désormais une partie fondamentale de Windows, utilisée par Windows Defender Application Guard , Windows Sandbox ou l'émulateur Hololens 2 . Aujourd'hui, cette technologie est limitée aux invités Windows, c'est-à-dire que Windows s'exécute à l'intérieur d'une machine virtuelle ou d'un conteneur. Pour apporter la prise en charge de l'accélération GPU à WSL 2, WDDMv2.9 étendra la portée de GPU-PV aux invités Linux.

D3D12 sous Linux

Le billet mentionné plus haut explique que le projet d'une abstraction compatible WDDM pour le GPU à l'intérieur de Linux a conduit Microsoft à recompiler D3D13 pour l'exécution sous WSL. Microsoft souligne : "Il s'agit de l'API D3D12 réelle et complète, pas d'imitations, de prétendant ou de réimplémentation ici… libd3d12.so est compilé à partir du même code source que d3d12.dll sous Windows mais pour une cible Linux. Il offre le même niveau de fonctionnalités et de performances".

Le D3D12 ne pourrait pas fonctionner sans un pilote en mode utilisateur spécifique au GPU (UMD) fourni par les  fabricants de GPU. Ceux-ci ont recompilé leur D3D12 UMD vers une cible Linux, permettant l'exécution de ces pilotes dans un environnement WSL. Cette prise en charge est en cours d'intégration dans les futurs pilotes WDDMv2.9, de sorte que la prise en charge du GPU dans WSL est transparente pour l'utilisateur final. Les pilotes WDDMv2.9 porteront une version du DX12 UMD compilé pour Linux.

Sous Linux, les utilisateurs utilisent généralement les API Khronos pour les graphiques. Alors, qu'en est-il de la prise en charge de l'accélération GPU pour OpenGL, OpenCL ou Vulkan ?

Microsoft travaille sur le mappage des couches qui apporteront une accélération matérielle pour OpenCL et OpenGL au-dessus de DX12. Ces couches seront utilisée pour fournir OpenGL et OpenCL au WSL accéléré par le matériel via la bibliothèque Mesa. Une fois ce travail terminé, la distribution WSL devra mettre à jour Mesa afin d'activer cette accélération. Pour les distributions recevant cette mise à jour Mesa, l'accélération sera automatiquement activée chaque fois qu'un pilote WDDMv2.9 ou supérieur sera installé sur l'hôte Windows.

En ce qui concerne Vulkan, Microsoft étudie toujours la meilleure façon de prendre en charge Vulkan pour WSL et partagera plus de détails à l'avenir. 

Microsoft annonce encore que l'accélération NVIDIA CUDA arrive également en WSL! Pour mémoire CUDA est une API multi plates-formes qui peut communiquer avec le GPU via l'abstraction du GPU WDDM sous Windows ou l'abstraction du GPU NVIDIA sous Linux.