Microsoft реализует в WSL доступ к GPU и запуск графических приложений Linux

Компания Microsoft объявила о реализации значительных улучшений в подсистеме WSL (Windows Subsystem for Linux), обеспечивающей запуск исполняемых файлов Linux в Windows:

  • Добавлена поддержка запуска Linux-приложений с графическим интерфейсом. Поддержка реализована через виртуализацию доступа к GPU и предоставление драйверов, через которые смогут работать штатные графические подсистемы дистрибутивов Linux, в том числе на базе Wayland. Графические приложения Linux и Windows смогут выполняться бок о бок на рабочем столе Windows.

    Для ядра Linux подготовлен открытый драйвер dxgkrnl, предоставляющий устройство /dev/dxg с сервисами повторяющими WDDM D3DKMT ядра Windows. Драйвер организует соединение с физическим GPU при помощи VM bus. Linux приложения имеют тот же уровень доступа к GPU, что и родные приложения для Windows, без применения разделения ресурсов между Windows и Linux.

    Более того, для Linux предоставлена библиотека libd3d12.so, предоставляющая графический API Direct3D 12 и собранная из того же кода, что и родная Windows-реализация Direct3D 12 (библиотека d3d12.dll). В форме библиотеки DxCore (libdxcore.so) также предоставлен упрощённый вариант API DXGI (DirectX Graphics Infrastructure). Библиотеки libd3d12.so и libdxcore.so являются проприетарными и поставляются только в бинарных сборках (монтируются в в WSL как /usr/lib/wsl/lib), совместимых с Ubuntu, Debian, Fedora, Centos, SUSE и другими дистрибутивами на базе Glibc.

    Поддержка OpenGL в Mesa обеспечена через прослойку, транслирующую вызовы в API DirectX 12. Метод реализации API Vulkan пока на стадии планирования.

  • Добавлена поддержка компьютерных вычислений на видеокартах, которая позволяет использовать аппаратное ускорение для таких задач как машинное обучение. На первом этапе в WSL-окружениях будет обеспечена поддержка CUDA и DirectML, работающим поверх API D3D12 (например, в Linux-окружении можно запустить TensorFlow с бэкендом для DirectML). Поддержка OpenCL возможна через прослойку, выполняющую маппинг вызовов в API DirectX 12.
  • Установка WSL вскоре будет поддерживаться с помощью простой команды «wsl.exe —install».

Источник: http://www.opennet.ru/opennews/art.shtml?num=52985