Windows上でLinuxアプリケーションを実行できるWindows Subsystem for Linux(WSL)において、Direct3D 12(D3D12)のサポート拡張によるGPUアクセラレーションを利用できるようになった。これによって、WSL上で動作するVideo Acceleration API(VAAPI)をサポートするアプリケーションで、GPUを利用した高速化を実現することができる。
2月9日、Microsoftの公式ブログ「Windows Command Line Blog」の「D3D12 GPU Video acceleration in the Windows Subsystem for Linux now available!」において、その詳細を伝えている。
WSLでGUIアプリを実行するWSLgでは、オープンソースの3DグラフィックライブラリであるMesa 3DにD3D12バックエンドを追加することで、OpenGLおよびOpenCLのGPUアクセラレーションをサポートしている。Microsoftは最近のアップデートで、D3D12バックエンドのMesa 3DにVAAPIのMesaフロントエンドを統合し、VAAPIを通じてより多くのアプリケーションがGPUアクセラレーションを利用できるようにしたという。
VAAPIは、LinuxやBSDなどのOS上でアプリケーションがGPUアクセラレーション機能を利用可能にするオープンソースのAPIである。VLCメディアプレイヤーやFFmpeg、GStreamerなどのLinuxアプリケーションは、VAAPIを利用することでGPUアクセラレーションによる高速なビデオエンコードやデコードを提供している。今回のWSLgの拡張によって、VAAPIをサポートするLinuxアプリケーションは、WSL上でもD3D12のGPUアクセラレーションを利用することが可能になったとのことだ。
GPUアクセラレーションを利用するには、Mesaをバージョン22.2(一部プロファイルはバージョン22.3)以上が必要。本稿執筆時点では、次のハードウェアプラットフォームがWSLgでのGPUアクセラレーションをサポートしている。
- AMD Radeon RX 5000シリーズ以上
- AMD Ryzen 4000シリーズ以上
- インテル 第11世代インテル Core プロセッサー・ファミリー (Tiger Lake、Rocket Lake)
- インテル 第12世代インテル Core プロセッサー・ファミリー (Alder Lake)
- インテル 第13世代インテル Core プロセッサー・ファミリー (Raptor Lake)
- インテル Iris Xe専用グラフィックス・ファミリー (DG1)
- インテル Arc グラフィックス・ファミリー (Alchemist)
- NVIDIA GeForce GTX 10 シリーズ以降
- NVIDIA GeForce RTX 20 シリーズ以降
- NVIDIA Quadro RTX
- NVIDIA RTX
Windows Command Line Blogでは、WSL上でMesaを有効にし、ffmpegとgstreamerでGPUアクセラレーションを利用する具体的な手順が紹介されている。