https://bugs.winehq.org/show_bug.cgi?id=43748
Bug ID: 43748 Summary: Dead or Alive Last Round ntdll crash on Wine newer than 1.8.7 under Linux, but not in OS X Product: Wine Version: unspecified Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: tod.jackson@gmail.com Distribution: ---
Created attachment 59244 --> https://bugs.winehq.org/attachment.cgi?id=59244 staging-2.17 console/debug output
I got Dead or Alive Last Round (free on Steam) working without issues under OS X, with multiple Wine versions tested: 2.0.2, 2.13, 2.16-staging. However, under Linux, no version of Wine newer than 1.8.7 even proceeds beyond a brief white window.
I attached a log with the default debug settings, please let me know what further to enable as I'm not sure what the issue is.
https://bugs.winehq.org/show_bug.cgi?id=43748
--- Comment #1 from Tod Jackson tod.jackson@gmail.com --- A notable difference from the working Wine version appears that Wine didn't recognize my GPU yet (an Intel HD 4000):err:d3d:init_driver_info No driver version info found for device 8086:0166, driver model 0x2. I gathered that the next stable release added more device info.
https://bugs.winehq.org/show_bug.cgi?id=43748
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |regression Version|unspecified |2.0.2
--- Comment #2 from Austin English austinenglish@gmail.com --- Could you run a regression test? https://wiki.winehq.org/Regression_Testing
https://bugs.winehq.org/show_bug.cgi?id=43748
--- Comment #3 from Tod Jackson tod.jackson@gmail.com --- Yeah, working on it. :) The game works on Wine 1.9.1 (commit 91dd155e9bc13c1bc1be860cd67fe3e48c20feae in master) as well.
https://bugs.winehq.org/show_bug.cgi?id=43748
Tod Jackson tod.jackson@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Regression SHA1| |b1429f931e816feee2f7b7fe065 | |a393c4caa7960 Component|ntdll |directx-d3d
--- Comment #4 from Tod Jackson tod.jackson@gmail.com --- The offending commit is:
commit b1429f931e816feee2f7b7fe065a393c4caa7960 Author: Matteo Bruni mbruni@codeweavers.com Date: Thu Jan 28 00:15:43 2016 +0100
wined3d: Add a real implementation of wined3d_check_device_multisample_type().
Signed-off-by: Matteo Bruni mbruni@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
winetricks multisampling=enabled or multisampling=disabled doesn't help.
https://bugs.winehq.org/show_bug.cgi?id=43748
--- Comment #5 from Tod Jackson tod.jackson@gmail.com --- Mesa bug? MESA_EXTENSION_MAX_YEAR=2010 allows the game to start on Wine-staging. Hooray!
https://bugs.winehq.org/show_bug.cgi?id=43748
--- Comment #6 from Tod Jackson tod.jackson@gmail.com --- Well, after further reading I think this is a duplicate of bug 25362 (OpenGL extension string truncation/overflow), and the 'offending' commit added more available extensions. Also, it works on OS X because their OpenGL version has fewer extensions.
https://bugs.winehq.org/show_bug.cgi?id=43748
Matteo Bruni matteo.mystral@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Dead or Alive Last Round |Dead or Alive Last Round |ntdll crash on Wine newer |crashes on Wine newer than |than 1.8.7 under Linux, but |1.8.7 under Linux, but not |not in OS X |in OS X
--- Comment #7 from Matteo Bruni matteo.mystral@gmail.com --- (In reply to Tod Jackson from comment #6)
Well, after further reading I think this is a duplicate of bug 25362 (OpenGL extension string truncation/overflow), and the 'offending' commit added more available extensions. Also, it works on OS X because their OpenGL version has fewer extensions.
No, that only makes sense for some old OpenGL games while this is a d3d9 game.
I can't reproduce the issue here, can you please attach a +tid,d3d9,d3d,d3d_shader log?
https://bugs.winehq.org/show_bug.cgi?id=43748
--- Comment #8 from Tod Jackson tod.jackson@gmail.com --- Created attachment 59260 --> https://bugs.winehq.org/attachment.cgi?id=59260 +tid,d3d9,d3d,d3d_shader failing
https://bugs.winehq.org/show_bug.cgi?id=43748
Matteo Bruni matteo.mystral@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever confirmed|0 |1 Version|2.0.2 |1.9.3
--- Comment #9 from Matteo Bruni matteo.mystral@gmail.com --- (In reply to Tod Jackson from comment #8)
Created attachment 59260 [details] +tid,d3d9,d3d,d3d_shader failing
Thanks, that helped. It looks like the game checks for 2x multisampling and then proceeds to crash on a NULL dereference if it's not supported. I managed to reproduce your crash by hacking wined3d_check_device_multisample_type() to return WINED3DERR_NOTAVAILABLE for 2x multisampling.
I don't know if it's true that your GPU doesn't support 2x multisampling but I seem to recall some kind of limitation in Mesa Intel drivers with specifically 2x multisampling. I have no idea if that changes in any way with a newer kernel / Mesa.
I'd say this is an application bug but we might want to add some workaround if it turns out that there are more applications "surprised" by this specific behavior.
BTW, there was this in the log:
0009:trace:d3d:init_driver_info GPU override ffff:ffff.
Do you really need that?
https://bugs.winehq.org/show_bug.cgi?id=43748
--- Comment #10 from Tod Jackson tod.jackson@gmail.com --- When I saw it was a multisampling issue this came to mind, something I've always seen in chrome://gpu: Multisampling is buggy in Intel IvyBridge: 116370 Applied Workarounds: disable_chromium_framebuffer_multisample http://crbug.com/116370
Sorry, what's this GPU override mean? I probably didn't do it on purpose.
Also, any clue why the game works with MESA_EXTENSION_MAX_YEAR=2010?
https://bugs.winehq.org/show_bug.cgi?id=43748
--- Comment #11 from Matteo Bruni matteo.mystral@gmail.com --- (In reply to Tod Jackson from comment #10)
When I saw it was a multisampling issue this came to mind, something I've always seen in chrome://gpu: Multisampling is buggy in Intel IvyBridge: 116370 Applied Workarounds: disable_chromium_framebuffer_multisample http://crbug.com/116370
Unclear but probably not related.
Sorry, what's this GPU override mean? I probably didn't do it on purpose.
I looked that up again in the older Wine sources and it looks like, contrarily to what I thought previously, that trace was always printed at the time. Nothing to see here, sorry for the noise.
Also, any clue why the game works with MESA_EXTENSION_MAX_YEAR=2010?
Right, I forgot about that part. The patch causing this regression essentially started asking the driver for detailed per-format, per-sample-count multisampling support. For that it uses the ARB_internalformat_query extension which is marked in the Mesa sources with the 2011 year. So by setting the environment variable you're practically disabling the new "detailed" codepath and falling back to the previous behavior, which is to advertise all the multisample levels up to MAX_SAMPLES. If the game later on wants to create a texture with sample count 2, which is apparently unsupported by your GPU, that is automatically "upgraded" to the lowest supported count (probably 4) and everything SHOULD keep working.
So good catch and probably a good workaround for this bug.
https://bugs.winehq.org/show_bug.cgi?id=43748
--- Comment #12 from Henri Verbeet hverbeet@gmail.com --- So, NOTOURBUG? Or is there something we should do about this?
https://bugs.winehq.org/show_bug.cgi?id=43748
--- Comment #13 from Matteo Bruni matteo.mystral@gmail.com --- (In reply to Henri Verbeet from comment #12)
So, NOTOURBUG? Or is there something we should do about this?
I'm not sure. AFAIU it's a specific combination of:
- GPU driver advertising 4x+ multisampling but not 2x multisampling - game expecting 2x multisampling once 4x is supported
I guess closing this bug (either NOTOURBUG or INVALID, depending on who you fault more between the driver and the game :P) is fine. It seems like we haven't seen other instances of this bug yet so it's probably not worthwhile to do anything on our part at this point.
https://bugs.winehq.org/show_bug.cgi?id=43748
Józef Kucia joseph.kucia@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |joseph.kucia@gmail.com
--- Comment #14 from Józef Kucia joseph.kucia@gmail.com --- (In reply to Matteo Bruni from comment #13)
I'm not sure. AFAIU it's a specific combination of:
- GPU driver advertising 4x+ multisampling but not 2x multisampling
- game expecting 2x multisampling once 4x is supported
If Windows drivers support 2x multisampling once 4x is supported, then one could argue that it's our bug.
https://bugs.winehq.org/show_bug.cgi?id=43748
--- Comment #15 from Henri Verbeet hverbeet@gmail.com --- Yeah, I guess. I'd be curious what the Windows driver for that hardware does. I'm inclined to mostly blame this on the application, but wouldn't necessarily be opposed to some kind of quirk for 2xMSAA. At the same time, such a quirk would somewhat defeat the point of having a per sample count query, as opposed to just a maximum like classic GL.
https://bugs.winehq.org/show_bug.cgi?id=43748
--- Comment #16 from Tod Jackson tod.jackson@gmail.com --- I'm on Windows at the moment. Under Steam, going to Help > System Information indicates that 2x MSAA is supported:
Primary Bus Type Not Detected Primary VRAM: -1984 MB Supported MSAA Modes: 2x 4x 8x
Under Wine, 2x is not listed.
https://bugs.winehq.org/show_bug.cgi?id=43748
--- Comment #17 from Tod Jackson tod.jackson@gmail.com --- I should clarify, with Mesa specifically, Steam doesn't show 2x.
https://cgit.freedesktop.org/mesa/mesa/tree/src/mesa/drivers/dri/i965/intel_... The Intel HD 4000 is Ivybridge (generation 3), but I don't know what genX_modes that actually corresponds to above. It seems clear that Mesa doesn't support 2x for this hardware though.
"A speciality of the Ivy Bridge GPUs is that 4x MSAA is supported in hardware now. However, 2x is only supported through software. The algorithm to support 2x is going through the 4x pipeline with a software algorithm, so performance is similar to 4x MSAA." https://www.notebookcheck.net/Intel-HD-Graphics-4000.69168.0.html
Whatever you guys decide to do, I indicated the MESA_EXTENSION_MAX_YEAR=2010 workaround on the AppDB and have never personally seen this issue anywhere else under Wine.
https://bugs.winehq.org/show_bug.cgi?id=43748
--- Comment #18 from Henri Verbeet hverbeet@gmail.com --- (In reply to Tod Jackson from comment #17)
Whatever you guys decide to do, I indicated the MESA_EXTENSION_MAX_YEAR=2010 workaround on the AppDB and have never personally seen this issue anywhere else under Wine.
For what it's worth, I think MESA_EXTENSION_OVERRIDE=-GL_ARB_internalformat_query should also work as a workaround, and is a little more targeted.
https://bugs.winehq.org/show_bug.cgi?id=43748
--- Comment #19 from Tod Jackson tod.jackson@gmail.com --- (In reply to Henri Verbeet from comment #18)
(In reply to Tod Jackson from comment #17)
Whatever you guys decide to do, I indicated the MESA_EXTENSION_MAX_YEAR=2010 workaround on the AppDB and have never personally seen this issue anywhere else under Wine.
For what it's worth, I think MESA_EXTENSION_OVERRIDE=-GL_ARB_internalformat_query should also work as a workaround, and is a little more targeted.
Gotcha, thanks.
https://bugs.winehq.org/show_bug.cgi?id=43748
Henri Verbeet hverbeet@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |INVALID
--- Comment #20 from Henri Verbeet hverbeet@gmail.com --- I'm going to blame this on the application. It wouldn't be hard to put in a workaround, but I don't think that would add much over the MESA_EXTENSION_OVERRIDE workaround. We can certainly revisit that if this issue turns out to be more widespread.
https://bugs.winehq.org/show_bug.cgi?id=43748
André H. nerv@dawncrow.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED CC| |nerv@dawncrow.de
--- Comment #21 from André H. nerv@dawncrow.de --- closing invalid