https://bugs.winehq.org/show_bug.cgi?id=50549
Bug ID: 50549 Summary: Some games fail to launch with Vulkan renderer Product: Wine Version: 6.0 Hardware: x86-64 OS: Linux Status: NEW Keywords: regression Severity: normal Priority: P2 Component: winevulkan Assignee: wine-bugs@winehq.org Reporter: andrey.goosev@gmail.com CC: dadschoorse@gmail.com Regression SHA1: d9c9b5ea614780340708cf18423a10704d8587e1 Distribution: ---
Banished crashes with:
04ac:fixme:d3d:get_vulkan_physical_device Multiple physical devices available. 04ac:fixme:d3d11:d3d11_device_CheckFormatSupport iface 0000000000C807D0, format 87, format_support 000000000021F580 partial-stub! 04ac:fixme:d3d11:d3d11_device_CheckFormatSupport iface 0000000000C807D0, format 45, format_support 000000000021F580 partial-stub! 04d8:fixme:dbghelp:MiniDumpWriteDump NIY MiniDumpScanMemory 0294:fixme:file:ReplaceFileW Ignoring flags 2 0294:fixme:file:ReplaceFileW Ignoring flags 2 04c0:err:ntdll:RtlpWaitForCriticalSection section 00007F144987C4C0 "../wine/dlls/wined3d/wined3d_main.c: wined3d_cs" wait timed out in thread 04c0, blocked by 04ac, retrying (60 sec)
error message: A fatal access violation has occurred in winex11.drv and the game cannot continue!
The Elder Scrolls: Skyrim just shows a black screen for 2 seconds then exits with no error.
https://bugs.winehq.org/show_bug.cgi?id=50549
Georg Lehmann dadschoorseapi@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dadschoorseapi@gmail.com
--- Comment #1 from Georg Lehmann dadschoorseapi@gmail.com --- What does some games mean? Does any game work with wined3d's vulkan render?
Also, please provide a log with WINEDEBUG=+vulkan for a game that doesn't work.
https://bugs.winehq.org/show_bug.cgi?id=50549
--- Comment #2 from Georg Lehmann dadschoorseapi@gmail.com --- Created attachment 69221 --> https://bugs.winehq.org/attachment.cgi?id=69221 backtrace of d3d11-triangle.exe
Okay, I reproduced the issue locally, every application is broken with wined3d's vulkan backend.
wined3d uses winex11.drv directly without going through winevulkan, but the surface functions in winex11.drv now expect a winevulkan surface wrapper.
I wasn't aware that other parts of wine can do that, and I'm not sure what's the right way going forward. I guess the best thing is to ask Henri Verbeet about his opinion on this.
https://bugs.winehq.org/show_bug.cgi?id=50549
Georg Lehmann dadschoorseapi@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |hverbeet@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=50549
Georg Lehmann dadschoorseapi@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |loothelion@nvidia.com
https://bugs.winehq.org/show_bug.cgi?id=50549
--- Comment #3 from Henri Verbeet hverbeet@gmail.com --- Created attachment 69227 --> https://bugs.winehq.org/attachment.cgi?id=69227 patch
The attached patch seems like the most straightforward solution, does that work? However, note that I didn't look much into the original issue the relevant commits were supposed to solve, so I might be missing some obvious reason for why this approach wasn't taken in the first place.
I don't believe either d9c9b5ea614780340708cf18423a10704d8587e1 or 2d4dd4252b0cf6526b3cc8194cce642b16eb12f6 introduced any new tests, but the attached patch doesn't introduce any failures in the vulkan-1 tests at least.
What I find most surprising about this bug though, is that it wasn't caught by the tests. The wined3d Vulkan renderer is not enabled by default, but I can also trivially reproduce this issue with the d3d12 tests, and the d3d12 part of the dxgi tests. Seemingly that's not the case for any of the people who signed off on this patch, and it might be worthwhile to figure out why that is.
https://bugs.winehq.org/show_bug.cgi?id=50549
--- Comment #4 from Andrey Gusev andrey.goosev@gmail.com --- Yes, the patch helps with the issue.
https://bugs.winehq.org/show_bug.cgi?id=50549
--- Comment #5 from Georg Lehmann dadschoorseapi@gmail.com --- The patch causes vkcube to fail during vkGetPhysicalDeviceSurfaceSupportKHR in radv, so the surface handle passed to radv is likely wrong.
https://bugs.winehq.org/show_bug.cgi?id=50549
--- Comment #6 from Georg Lehmann dadschoorseapi@gmail.com --- Created attachment 69233 --> https://bugs.winehq.org/attachment.cgi?id=69233 alternative patch
This patch should fix wined3d without breaking vulkan applications, does that work?
https://bugs.winehq.org/show_bug.cgi?id=50549
--- Comment #7 from Andrey Gusev andrey.goosev@gmail.com --- Alternative patch works too.
https://bugs.winehq.org/show_bug.cgi?id=50549
--- Comment #8 from Henri Verbeet hverbeet@gmail.com --- Are you going to submit that patch upstream? I don't particularly like the p_wine_get_native_surface callback, but it looks like winevulkan has some deeper issues, and fixing the regression should probably take priority.
https://bugs.winehq.org/show_bug.cgi?id=50549
--- Comment #9 from Georg Lehmann dadschoorseapi@gmail.com --- Sure, I will send it to wine-devel soon.
https://bugs.winehq.org/show_bug.cgi?id=50549
Andrey Gusev andrey.goosev@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Fixed by SHA1| |c1824d578ac514d29e79a5a00d6 | |759f11dbe4813 Resolution|--- |FIXED
--- Comment #10 from Andrey Gusev andrey.goosev@gmail.com --- Fixed by https://source.winehq.org/git/wine.git/commit/c1824d578ac514d29e79a5a00d6759...
https://bugs.winehq.org/show_bug.cgi?id=50549
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #11 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 6.1.