💻
WSL2 Ubuntu でVulkanをGPUで動かす
mesaにWSL2用の実験的なコードがあるので、それを有効化すればよいらしい。
mesaのソース準備
deb-srcを準備しておいて以下で依存を取得。
$ apt-get source mesa
$ sudo apt-get install build-essential
$ sudo apt-get build-dep mesa
WSL2サポートを追加
debian/rules
を以下のように変更して、フラグを有効化
VULKAN_DRIVERS =
+VULKAN_DRIVERS += microsoft-experimental
新たに spirv2dxil が生成されるようになるので、これを mesa-vulkan-drivers パッケージの所属とするために debian/mesa-vulkan-drivers.install
を以下のように変更
usr/bin/mesa-overlay-control.py
+usr/bin/spirv2dxil
usr/share/drirc.d/00-radv-defaults.conf
usr/share/vulkan/explicit_layer.d/*.json
usr/share/vulkan/icd.d/*.json
usr/share/vulkan/implicit_layer.d/*.json
+usr/lib/*/libspirv_to_dxil.a
+usr/lib/*/libspirv_to_dxil.so
usr/lib/*/libvulkan_*.so
usr/lib/*/libVkLayer_*.so
バージョンを独自のものに変えるために、こんな感じで debian/changelog
をいじる (ポイントはバージョン部分に適当な名前を足してる点)
+mesa (24.2.8-1ubuntu1wsl~24.04.1) noble; urgency=medium
+
+ * Enable WSL2 support
+
+ -- Masaki Hara <ackie.h.gmai@gmail.com> Sat, 24 May 2025 16:23:36 +0900
+
mesa (24.2.8-1ubuntu1~24.04.1) noble; urgency=medium
* Backport to noble. (LP: #2083020)
- build with meson-1.5
- lower librust-syn-dev dependency
-- Timo Aaltonen <tjaalton@debian.org> Mon, 16 Dec 2024 12:17:11 +0200
ビルド
$ debuild -uc -us
インストール
上位ディレクトリに *.deb
が生成されるので入れる。
# 今何入ってるか確認
$ dpkg -l | grep -E 'mesa|xatracker|libgbm'
# 手元のバージョンで入れ直す
$ sudo dpkg -i ./libegl-mesa0_24.2.8-1ubuntu1wsl\~24.04.1_amd64.deb ./libegl1-mesa-dev_24.2.8-1ubuntu1wsl\~24.04.1_amd64.deb ...
確認
vulkaninfo --summary
PHYSICAL_DEVICE_TYPE_CPU
以外のデバイスが認識されてたらOK。
オチ
最終的には Dawn (WebGPU) に認識させたかったのだが、 Warning: Vulkan fullDrawIndexUint32 feature required.
と言われてしまった。
Discussion