ざっと試してみた印象としては、いずれも実装初期と比べると開発はそれなりに進んではいるが、まだ実用的な段階にはない。ただ、次期の9.0や更にその次の安定版までには使い物になるレベルになっているかもしれない。
設定と確認
wine reg add "HKCU\Software\Wine\Direct3D" /v renderer /t REG_SZ /d vulkan /f
でVulkanを、wine reg add "HKCU\Software\Wine\Direct3D" /v renderer /t REG_SZ /d gl /f
でOpenGLを強制指定できるVK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay
を指定することでVulkanが使用される場合に分かるようにするGALLIUM_HUD=fps
などを指定することでOpenGLが使用される場合に分かるようにするWINEDEBUG
にvulkan
などを含めて出力を見る形でも確認はできる
試した結果
WOLF RPGエディター 2.2x系作品(D3D11のみ)
Vulkanレンダラの実装初期から正常動作している。
WOLF RPGエディター 2.2x系作品のD3D9設定時と2.10
落ちることはないが、画面が真っ黒(オーバーレイは出る)で、エラーが繰り返し出ている。
02ec:fixme:d3d_shader:shader_spirv_compile_shader 02ec:err:d3d_shader:shader_spirv_compile_shader Failed to compile DXBC, ret -3. 02ec:err:d3d:wined3d_context_vk_apply_draw_state No pipeline layout set. 02ec:err:d3d:adapter_vk_draw_primitive Failed to apply draw state. 02ec:fixme:d3d_shader:shader_spirv_compile_shader Shader log: 02ec:fixme:d3d_shader:shader_spirv_compile_shader: E0002: Invalid DXBC magic. ...
libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_main.c
にあるvkd3d_shader_compile()
に失敗しているらしく、Shader log:
以下のエラーが解消しなければ動作はしないものと思われる。Invalid DXBC magic.
はlibs/vkd3d/libs/vkd3d-shader/dxbc.c
内のparse_dxbc()
から出ているが、vkd3dはソースが同梱されているものの外部プロジェクトであることもあって、8.0の正式版までに不具合が解消する可能性は低そう。
RPGツクール2000/2003作品
X11環境では、XWayland上でもXorg上でも動作しなかった。
0104:trace:vulkan:thunk32_vkGetPhysicalDeviceSurfaceFormatsKHR 0x1551810, 0x681019e0, 0x481fc18, 0x6c966c8 0104:trace:vulkan:X11DRV_vkGetPhysicalDeviceSurfaceFormatsKHR 0x7d318220, 0x68101a10, 0x481fc18, 0x6c966c8 0104:warn:d3d:get_swapchain_fallback_format Unhandled format 0x4. 0104:warn:d3d:wined3d_swapchain_vk_select_vk_format Failed to find Vulkan swapchain format for WINED3DFMT_B5G6R5_UNORM. 0104:fixme:d3d:wined3d_swapchain_vk_select_vk_format Failed to find Vulkan swapchain format for WINED3DFMT_B5G6R5_UNORM. 0104:err:d3d:wined3d_swapchain_vk_create_vulkan_swapchain Failed to select swapchain format. 0104:trace:vulkan:thunk32_vkDestroySurfaceKHR 0x15517f8, 0x681019e0, 0 0104:trace:vulkan:X11DRV_vkDestroySurfaceKHR 0x7dd02690 0x68101a10 (nil) 0104:trace:vulkan:thunk32_vkAcquireNextImageKHR 0x15506c8, 0x7b5734f0, 0xfffffff fffffffff, 0x6c0108006c0118, 0x0, 0x481fcf8 Assertion failed: !status, file dlls/winevulkan/loader_thunks.c, line 39
開発中のwinewayland
のパッチの含まれるパッチ作者のリポジトリから取得してビルドしたものをPlasma Wayland環境でDISPLAY= WAYLAND_DISPLAY=wayland-0
指定で動かすと、全画面時にVulkanで動作したのを確認できた。WINED3D_LOCATION_DRAWABLE
のメッセージはその際にも出るので、関係ない気もするが…
4:3比率の画面が拡大されて縦方向には合うのだが、ディスプレイが横長だと表示内容が左側に寄ってしまって右側の空いた場所が黒にはならずに背後のウィンドウなどが見えてしまうという問題はある。他にもAlt-Tab
を押すなどして他のウィンドウに切り替えてしまうとゲームのウィンドウが隠れて戻れなくなってしまう問題もあるが、これらはOpenGLレンダラでも発生するため、winewayland
かWaylandコンポジタ(ここではkwin_wayland
)のどちらかの問題の可能性がある。
RPG_RT.exe
に0 0 Window
の引数を付けるといずれの環境でも起動するが、Vulkanのオーバーレイが出ないので、Direct3Dは使用されていないものと思われる。
RPGツクールVX/VX Ace作品
落ちることはないが、ウィンドウモード時には画面が真っ黒になる。ただ、内部で起きている事象はWOLF RPGエディター作品のD3D9とは全く異なるように見える。
0240:fixme:d3d:get_vulkan_physical_device Multiple physical devices available. 0250:err:d3d:wined3d_texture_vk_load_texture Unimplemented load from WINED3D_LOCATION_DRAWABLE. 0250:err:d3d:vk_blitter_blit Failed to load the destination sub-resource. 0250:err:d3d:wined3d_texture_vk_load_sysmem Unimplemented load from WINED3D_LOCATION_DRAWABLE. 0250:err:d3d:surface_cpu_blt Failed to load the destination sub-resource into WINED3D_LOCATION_SYSMEM. 0250:err:d3d:wined3d_texture_invalidate_location Sub-resource 0 of texture 0096F520 does not have any up to date location. 0250:err:d3d:wined3d_texture_load_location Sub-resource 0 of texture 0096F520 does not have any up to date location. 0250:fixme:d3d:wined3d_texture_vk_prepare_location Unhandled location WINED3D_LOCATION_DRAWABLE. 0250:fixme:d3d:wined3d_texture_vk_prepare_location Unhandled location WINED3D_LOCATION_DRAWABLE. ...
Alt-Enter
などで全画面にして動かすと、winewayland
(DISPLAY= WAYLAND_DISPLAY=wayland-0
指定)ではRPGツクール2000作品と同様に動作するが、Plasma Wayland環境では表示内容が左上に寄るし、Xorg環境ではディスプレイや設定などによっては表示内容が横に引き伸ばされて長くなる。
- Wine 8.0-rc1
- Plasma 5.26.4
- Mesa 22.3.0