protonscr

[Question] Is DXVK compatible with Experimental WoW64 mode and with Wayland?

dxvkclosed
doitsujin/dxvk#4692 · opened 2025-02-15 by vanfanel · updated 2025-02-15 · 2 comments · github
Vvanfanel 2025-02-15 github

Good evening,

This is my first time building and using DXVK, but no games seem to be able to use it on my system.

System information
GNU/Linux (kernel 6.12.9)
Latest stable MESA 24.3.4 (build with Vulkan compatibility, which works with everything else) on Intel XE graphics.
Wine build from latest GIT code: wine-10.1-125-g4de56399.
DXVK also built from latest GIT code.
Labwc Wayland compositor, latest stable version 0.8.2.

This is how I build DXVK and install it:

32bit version of the libraries:

mkdir build32
cd build32

CFLAGS="-O2 -march=native -mtune=native -O2" \
CXXFLAGS="-O2 -march=native -mtune=native -O2" \
meson setup .. -Dbuildtype=release --cross-file ../build-win32.txt

ninja -j10
find ./ -name "*.dll" -exec cp {} ~/.wine/drive_c/windows/syswow64 \;

64bit version of the libraries:

mkdir build64
cd build64

CFLAGS="-O2 -march=native -mtune=native -O2" \
CXXFLAGS="-O2 -march=native -mtune=native -O2" \
meson setup .. -Dbuildtype=release --cross-file ../build-win64.txt

ninja -j10
find ./ -name "*.dll" -exec cp {} ~/.wine/drive_c/windows/system32 \;

...so they are, to my knowledge, correctly installed on my system's only WINE prefix.
Now I run "winecfg" and, according to documentation, dx8-9-10-11 games should be using DXVK by default.
But that's not the case, OpenGL is still used for D3D in every game, and setting DXVK_HUD to 1 I don't get to see the HUD as intended.

For example, here's what WINE says when I try to run Silent Hill 2 PC (the original 2001 version):


~/wine/Silent Hill 2$ wine sh2pc.exe 
00c8:err:ntoskrnl:ZwLoadDriver failed to create driver L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\winebth": c00000e5
003c:fixme:service:scmdatabase_autostart_services Auto-start service L"winebth" failed to start: 1359
0148:err:environ:init_peb starting L"Z:\\root\\wine\\Silent Hill 2\\sh2pc.exe" in experimental wow64 mode
0148:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
0100:fixme:wineusb:add_usb_device Interface 1 has 6 alternate settings; using the first one.
0100:fixme:wineusb:add_usb_device Interface 1 has 2 alternate settings; using the first one.
0100:fixme:wineusb:add_usb_device Interface 2 has 2 alternate settings; using the first one.
0148:fixme:waylanddrv:WAYLAND_WindowMessage got window msg 80001ff2 hwnd 0x20064 wp ffffffff80000000 lp ffffffff80000000
0148:fixme:waylanddrv:WAYLAND_WindowMessage got window msg 80001ff2 hwnd 0x20076 wp ffffffff80000000 lp ffffffff80000000
0050:fixme:waylanddrv:WAYLAND_WindowMessage got window msg 80001ff2 hwnd 0x2006e wp ffffffff80000000 lp ffffffff80000000
0148:fixme:waylanddrv:WAYLAND_WindowMessage got window msg 80001ff2 hwnd 0x1006a wp ffffffff80000000 lp ffffffff80000000
0050:fixme:waylanddrv:WAYLAND_WindowMessage got window msg 80001ff2 hwnd 0x10046 wp ffffffff80000000 lp ffffffff80000000
0050:fixme:waylanddrv:WAYLAND_WindowMessage got window msg 80001ff2 hwnd 0x10044 wp ffffffff80000000 lp ffffffff80000000
0050:fixme:waylanddrv:WAYLAND_WindowMessage got window msg 80001ff2 hwnd 0x10042 wp ffffffff80000000 lp ffffffff80000000
0050:fixme:waylanddrv:WAYLAND_WindowMessage got window msg 80001ff2 hwnd 0x10040 wp ffffffff80000000 lp ffffffff80000000
0050:fixme:waylanddrv:WAYLAND_WindowMessage got window msg 80001ff2 hwnd 0x20034 wp ffffffff80000000 lp ffffffff80000000
0050:fixme:waylanddrv:WAYLAND_WindowMessage got window msg 80001ff2 hwnd 0x1003e wp ffffffff80000000 lp ffffffff80000000
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
0158:fixme:rawinput:NtUserRegisterRawInputDevices Unhandled flags 0x230 for device 0.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
00d0:fixme:wineusb:query_id Unhandled ID query type 0x5.
0148:fixme:dinput:hid_joystick_device_try_open device usage ff01:0000 not implemented!
0148:fixme:dinput:hid_joystick_device_try_open device usage 000c:0001 not implemented!
0148:fixme:dinput:hid_joystick_device_try_open device usage 0001:0080 not implemented!
0148:fixme:dinput:hid_joystick_device_try_open device usage ffbc:0088 not implemented!
0148:fixme:dinput:hid_joystick_device_try_open device usage ff02:0002 not implemented!
0148:fixme:dinput:hid_joystick_device_try_open device usage 008c:0001 not implemented!
0148:fixme:dinput:hid_joystick_device_try_open device usage 000c:0001 not implemented!
0148:fixme:dinput:hid_joystick_device_try_open device usage 0001:0080 not implemented!
0148:fixme:dinput:hid_joystick_device_try_open device usage 000c:0001 not implemented!
0154:fixme:opengl:wow64_map_buffer Doing a copy of a mapped buffer (expect performance issues)
0154:fixme:d3d:state_linepattern_w Setting line patterns is not supported in OpenGL core contexts.

Is there something I am missing?

My guess is that the Experimental WoW64 mode is not supported by DXVK, or maybe Wayland is not supported, or I am simply not telling WINE to use DXVK, but after reading the docs I can't see what else should I be doing...

Ddoitsujin maintainer 2025-02-15 github

You'll still need to set the relevant DLL overrides to native for DXVK to get used.

That said, as long as Vulkan stuff generally works with the new wow64 thing and winewayland.drv, DXVK should work too since it's a plain old Windows DLL and doesn't directly interact with either of these things, but there may be some window management issues.

Vvanfanel 2025-02-15 github

You'll still need to set the relevant DLL overrides to native for DXVK to get used.

That said, as long as Vulkan stuff generally works with the new wow64 thing and winewayland.drv, DXVK should work too since it's a plain old Windows DLL and doesn't directly interact with either of these things, but there may be some window management issues.

Ah, yes! Thanks a lot! Creating overrides for d3d8, d3d9, d3d10 etc and making them all to "Native", the games now DO run on Vulkan! In fact, performance is now incredibly better than with the default D3D->OpenGL renderer, no wonder there has been so much awe in general for DXVK on the GNU/Linix community!
Silent Hill 2 (2001) has windowing problems on Wayland indeed (it's unable to go fullscreen for some reason) but other than that works mostly fine on WoW64 + DXVK!

Launch options