在允许 WSL 使用 OpenGL、OpenCL 和 Vulkan API 进行 GPU 加速之后,微软又正式发布了针对 Linux 的 Windows 子系统 (WSL2) 的 Direct3D 12 GPU 视频加速支持。
这项 Direct3D 12 for WSL 工作在 Mesa 内构建,允许在 WSL2 下使用 GPU 加速视频的编码/解码工作。用户现在可以使用支持 VA-API 的 Linux 原生多媒体应用程序(如:FFmpeg 或 GStreamer),在 WSL 中运行解码、编码和视频处理等视频工作负载,同时使用 GPU 硬件对其进行加速。
▲ 图为 WSL 中的 Gstreamer 执行 GPU 加速 alpha 混合合成,并渲染到 X11 窗口中
利用视频硬件加速取代 CPU 加速有几个好处:提高性能、降低功耗,且释放 CPU 周期以用于 WSL 或 Windows 主机中的其他任务,从而提高整体性能。具体加速效率取决于特定的 VA-API 功能,用户可以在 Windows 任务管理器中查看启用 WSLg 硬件视频加速和使用 CPU 的 CPU/GPU 使用差异,详细的教程可参考该博客:《任务管理器中的 GPU – DirectX》 。
在软件方面,Direct3D 12 GPU 视频加速需要更新到 Microsoft WSL 的最新版本,且需要 Mesa 22.2~22.3。硬件方面,该功能支持 AMD 的 RX 5000 / 锐龙 4000 系列 ,英特尔 11 代以上 CPU 和 Iris® Xe / Arc® 显卡系列,以及英伟达的 GTX 10 / RTX 20 / Quadro RTX / NVIDIA RTX 工作站系列。
有关该功能具体的 VA 入口点和配置文件、使用教程等内容,可参考微软官方博客的细节。