WSL obtendrá soporte para DirectX en Linux con compilaciones 21H1
Microsoft está agregando compatibilidad con DirectX a las distribuciones de Linux que se ejecutan en un entorno WSL 2. El cambio entra en vigencia con las primeras compilaciones 21H1 de la rama de Hierro (Fe) en el Anillo Rápido, que se espera que lleguen en junio.
Microsoft es presentando Modelo de controlador de pantalla de Windows versión 2.9, WDDMv2.9, que traerá la aceleración de GPU a WSL 2. Para hacerlo posible, hay un módulo especial del kernel de Linux en el lado de WSL, dxgkrnl
.
dxgkrnl
Dxgkrnl es un nuevo controlador de kernel para Linux que expone el /dev/dxg dispositivo a modo de usuario Linux. /dev/dxg expone un conjunto de IOCTL que imita de cerca la capa de servicio del kernel nativo WDDM D3DKMT en Windows. Dxgkrnl dentro del kernel de Linux se conecta a través del bus de VM a su hermano mayor en el host de Windows y usa esta conexión de bus de VM para comunicarse con la GPU física.
Si el host tiene varias GPU, todas las GPU se proyectan y están disponibles para el entorno Linux (asumiendo que todas estas GPU ejecutan controladores WDDMv2.9).
Microsoft afirma que la arquitectura no limitará ni interferirá en el rendimiento de las aplicaciones WSL y los recursos de la GPU se compartirá correctamente entre las aplicaciones de Windows que se ejecutan junto con la GUI de Linux y las aplicaciones de consola que utilizan DirectX.
La edición Dxgkrnl Linux se está haciendo de código abierto.
DxCore y D3D12 en Linux
Este proyecto trae la API D3D12 completa a Linux sin imitaciones. Ibd3d12.so se compila a partir del mismo código fuente que d3d12.dll en Windows pero para un destino Linux. Ofrece el mismo nivel de funcionalidad y rendimiento (menos la sobrecarga de virtualización). La única excepción es Present (). Actualmente, no hay integración de presentaciones con WSL, ya que WSL es una experiencia exclusiva de consola en la actualidad. La API D3D12 se puede utilizar para procesamiento y procesamiento fuera de la pantalla, pero no hay soporte de cadena de intercambio para copiar píxeles directamente en la pantalla.
DxCore (libdxcore.so) es una versión simplificada de dxgi donde los aspectos heredados de la API han sido reemplazados por versiones modernas. DxCore está disponible tanto en Windows como en Linux. DxCore también se utiliza para alojar una versión plana de la API D3DKMT utilizada por un controlador basado en WDDM en Windows para hablar con la GPU. Esta API abstrae las diferencias en cómo los distintos servicios WDDM llegan al kernel (tabla de servicios en Windows versus IOCTL en Linux).
libd3d12.so y libdxcore.so son binarios de modo de usuario de código cerrado precompilados que se envían como parte de Windows. Estos binarios son compatibles con distribuciones basadas en glibc y se montan automáticamente bajo /usr/lib/wsl/lib y se hace visible para el cargador. En otras palabras, estas API funcionan desde el primer momento sin la necesidad de instalar paquetes adicionales o modificar la configuración de la distribución. Actualmente, el soporte está limitado a distribuciones basadas en glibc, incluidas Ubuntu, Debian, Fedora, Centos, SUSE, etc.
D3D12 no podría funcionar sin un controlador de modo de usuario (UMD) específico de GPU proporcionado por los socios fabricantes de GPU. El UMD es responsable de cosas como compilar sombreadores en código de bytes específico de hardware y traducir las solicitudes de representación de API en instrucciones de GPU reales en búferes de comando para ser ejecutadas por la GPU. El paquete de controladores de host se monta dentro de WSL en / usr / lib / wsl / drivers y se puede acceder directamente a la API d3d12. Nuevamente se requiere el controlador WDDM 2.9.
Microsoft también está trabajando para llevar la aceleración de GPU para OpenGL, OpenCL y Vulkan en WSL a través de la biblioteca Mesa.
Soporte para DxCore, D3D12, DirectML y NVIDIA CUDA viene a un Windows Insider Construcción rápida pronto. El anillo rápido está actualmente en el Manganeso (Mn) Rama del sistema operativo. Se espera que el anillo rápido cambie al nuevo Rama de hierro (Fe)
hacia finales de junio, que expondrá esta nueva funcionalidad a Insiders.