doitsujin / dxvk

Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine
zlib License
13.44k stars 868 forks source link

RaceRoom Racing Experience displays a message that it cannot create Dx9 device due to an invalid call, and quits. #4496

Closed logos128 closed 3 days ago

logos128 commented 4 days ago

The exact dialog message is "Failed to create Dx9 device: Invalid call." The game has two modes - the default d3d9 mode ("Play RaceRoom"), and a dxvk mode ("Play RaceRoom with DXVK"). The dxvk mode was added recently for better and smoother performance on Windows. The dxvk version used is 2.4.

The aforementioned problem occurs only in d3d9 mode, while the game runs correctly in dxvk mode. Obviously in Wine/Proton the d3d9 mode links against the dxvk dlls on system level, and in dxvk mode it links against the ones distributed by the game (in "x64dxvk" folder). So I did some regression testing and found that commit a7c2eb140e1eccaf9e9dce427549f2a985ea0d9d is causing the issue.

Software information

RaceRoom Racing Experience d3d9 mode "Play RaceRoom", default options, new wineprefix

System information

Log files

PROTON_LOG=1 WINEDEBUG=+timestamp,+pid,+tid,+seh,+threadname,+debugstr,+loaddll DXVK_LOG_LEVEL=debug %command% steam-211500.gz

Blisto91 commented 4 days ago

Thank you very much for the issue. I've gone ahead and made a apitrace that reproduces the problem https://drive.proton.me/urls/1BN9GZ3Q8M#LYU4inYSwNQW

WinterSnowfall commented 4 days ago

Thank you for the report. The game is trying to create a device with 4 back buffers, 3 being the limit usually enforced by d3d9 at least in its hay days. I will drop the validation which should make the game work fine again.

P.S.: @Blisto91 just mentioned this is a 9Ex game, so it's probably something I overlooked since there are literally no 9Ex tests to speak of. With some minor tweaks it should be fixed soon.