在过去几个月时间里,微软做了很多有趣的开发和操作,包括为 Windows Subsystem for Linux (WSL) 使用的开源 Mesa,以及在 Direct3D 12 上支持各种 Khronos API,以便于在 Windows 上缺少本地驱动程序时使用。
到目前为止,这项工作主要集中在 OpenGL、OpenCL和Vulkan上,但微软现在甚至在 Mesa 内实现了对 Direct3D 12 视频 API 的支持,并利用了 Mesa 内的 VA-API 状态跟踪器支持。
简单地说,这项最新的努力允许 WSL GUI 应用程序(如媒体播放器),享受硬件视频加速。在合并到 Mesa 22.2 主线的代码中,D3D12 视频 API 已经被实现,相关的 VA-API 入口也被用于 H.264 编码/解码。因此,支持视频加速API(VA-API)的Linux视频播放器/多媒体软件在WSL(2)中运行时将"神奇地"能够享受Direct3D 12视频加速。
这对那些希望在 Windows Subsystem for Linux 范围内获得更强大的 GUI 软件支持的用户来说是一个相当大的胜利,并且进一步巩固了 VA-API 作为 Linux 视频 API 的主导地位。
虽然在NVIDIA的NVDEC上有一个实验性的、独立的 VA-API 实现,但 VA-API 并不支持所有的 GPU/驱动,所以对 Direct3D 12 视频的支持在技术上使其在Windows上比Linux本身更加强大。当然,至少在目前,它仅限于H.264编解码器,但目前的这段代码被设计为可扩展的,以支持更多的视频编解码器。
微软的工程师们在这个 D3D12 视频支持和 Gallium3D 视频加速前端的变化上做了工作,并成功地用 FFmpeg 编码/解码/转码、MPlayer-forked MPV 和 vaah264 在启用 X11 窗口支持的WSL下测试了VA-API的使用。他们也有可能支持NVIDIA视频解码和Unix演示API(VDPAU),作为D3D12视频之上的另一个支持的实现,一些Gallium3D VDPAU的变化也被作为这次合并的一部分,但最初的重点似乎是VA-API接口。