背景
Linux メインで Vulkan ray tracing 開発している.
Windows でも動作するようにしたい(そのうちデバッグで Visual Studio 使いたいとか, Visual Studio + NVSight とかでパフォーマンス解析できるように)
しかし Windows で開発するのに Windows 機立ち上げたりとか RDP ログインしてとかめんどい...
Linux だけで Vulkan ray tracing 開発完結したい.
環境
もともとそれなりに Vulkan 動きますが, wine 6.0 あたりでよりきちんと Vulkan サポートされたっぽいです.
- Ubuntu 20.04 x64 64bit
- Wine 6.0
-
winecfg
で Windows バージョン 10 に設定
-
- GPU: NVIDIA A6000(driver version 465.19) (or KHR ray tracing 拡張対応している GPU)
で動作確認しました.
vulkaninfo
まずは vulkaninfo.exe 動かして環境みてみます.
...
VK_KHR_pipeline_library : extension revision 1
VK_KHR_push_descriptor : extension revision 2
VK_KHR_ray_query : extension revision 1
VK_KHR_ray_tracing_pipeline : extension revision 1
VK_KHR_relaxed_block_layout : extension revision 1
VK_KHR_sampler_mirror_clamp_to_edge : extension revision 3
...
raytrace 拡張あります!
ただ vulkaninfo.exe は完走せずに途中で 00f4:fixme:console:GetConsoleProcessList
で stuck してしまいました.
Sascha 先生の Vulkan サンプル動かしてみます.
llvm-mingw or clang-cl あたりで Linux クロスコンパイルするのが理想ですが, めんどそうなのでとりあえずビルドは Windows(Visual Studio)でやって, ファイルだけ Linux にコピって動かしました.
Running @SaschaWillems2 's super awesome Win64 Vulkan ray tracing example through WINE 6.0 + Linux! 🎉🎉🎉🎉🎉🎉😍😍😍😍😍😍🥳🥳🥳🥳🥳 It works much well and runs fast!(no perf loss) Win64 Vulkan ray tracing development on pure Linux for the win!!!! 💪💪💪💪💪💪💪💪💪💪💪💪 pic.twitter.com/a4Jip3sQ6v
— Syoyo Fujita 🌸 レイトラ ® 🐯 3 周年 🎉 (@syoyo) May 17, 2021
Voila!
(想定通り) Wine で動かすことによるパフォーマンスの低下は特にありませんでした.
Happy Vulkan ray tracing development!
TODO
- llvm-mingw, clang-cl で Linux クロスコンパイルする仕組みを確立する(Vulkan API だけ使う場合は C API で特に考慮することはないのだが, Vulkan-loaders(インターフェイスは C だが内部実装は C++) など, C++(STL) を使う周辺のライブラリと組み合わせるときに考慮が必要.