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!」において、その詳細を伝えている。

  • D3D12 GPU Video acceleration in the Windows Subsystem for Linux now available! - Windows Command Line

    D3D12 GPU Video acceleration in the Windows Subsystem for Linux now available! - Windows Command Line

WSLでGUIアプリを実行するWSLgでは、オープンソースの3DグラフィックライブラリであるMesa 3DにD3D12バックエンドを追加することで、OpenGLおよびOpenCLのGPUアクセラレーションをサポートしている。Microsoftは最近のアップデートで、D3D12バックエンドのMesa 3DにVAAPIのMesaフロントエンドを統合し、VAAPIを通じてより多くのアプリケーションがGPUアクセラレーションを利用できるようにしたという。

  • WSL上のD3D12サポート(引用: Windows Command Line Blog)

    WSL上のD3D12サポート(引用: Windows Command Line Blog)

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アクセラレーションを利用する具体的な手順が紹介されている。