Сегодня ночью на // build 2020 рассказали, а позже в официальном блоге Microsoft была опубликована запись, что теперь DirectX доступен в Windows Sybsystem — среде разработки Linux-приложений из-под Windows.

Основная цель — повысить комфорт Linux-разработчиков и ML-специалистов и позволить им эффективнее тестировать и развивать свои приложения, в том числе и через использование ресурсов штатного GPU-ускорителя.

По словам представителей Microsoft, поддержку DirectX в Windows Subsystem они внедрили на основании многочисленных запросов со стороны коммьюнити, причиной которых была недоступность GPU-ускорителей в Bash.

Теперь работа GPU-ускорителей в WSL будет обеспечиваться стандартным для Windows драйвером WDDMv2.9, для работы в WSL будет использоваться драйвер Dxgkrnl.

Однако не все так гладко, как показывают специалисты Microsoft. По факту, Dxgkrnl — абстракция-костыль, который работает в стиле прокси поверх WSL и общается из виртуальной машины через VM-шину с основным драйвером WDDM. Впрочем, Microsoft сами показывают это на своем слайде:



Для полноценной работы этого решения потребуется WSL 2 — вторая версия WSL для Windows, на первой версии доступа к GPU не будет.

Поддержка DX12 и DxCore тоже сомнительна. Microsoft заявляют, что для корректной работы WSL им потребовалось связываться с партнерами-производителями — для того чтобы перекомпилировать D3D12 UMD под Linux. Фактически, мы получаем еще один закрытый проприетарный DirectX, адаптированный конкретно под условия WSL.

Поверх DX12 в текущей реализации работает только OpenCL и OpenGL, а над внедрением поддержки Vulkan в показанную выше схему инженеры компании «еще думают и ищут варианты». Однако, по заверениям Microsoft, уже созданный инструментарий позволит решать задачи в области ML и AI с помощью библиотеки ML Framework.



Также была анонсирована доступность DirectML — API машинного обучения поверх API D3D12, которое позволит эффективнее решать задачи из сферы AI и обучения нейросетей. В основной своей массе DirectML ориентирован на студентов и новичков для того, чтобы снизить порог вхождения в работу в ML. Изначально DirectML будет поставляться с пакетом Tensorflow.

Из прочих важных вещей в анонсе стоит выделить то, что скоро в WSL подвезут поддержку графических приложений, хотя изначально эта среда задумывалась исключительно как консоль. Также реализована поддержка NVIDIA CUDA.

Этими шагами компания Microsoft в очередной раз показала, что придерживается курса повышения комфорта разработчиков, в том числе Linux-разработчиков, за счет внедрения новых возможностей в свои среды и расширения инструментария. Однако насколько удачными и комфортными окажутся предлагаемые решения, покажет только практика. Много вопросов вызывает закрытый перекомпилированный код, а также общая «костыльность» всей системы, в которой WSL не может напрямую общаться с GPU и делает это через шину VM в самой Windows. Также вызывает вопрос отсутствие во всей этой истории Vulkan.