http://bugs.winehq.org/show_bug.cgi?id=37068
Bug ID: 37068 Summary: XIII: Canyon levels not rendered correctly Product: Wine Version: 1.7.0 Hardware: x86 OS: Linux Status: NEW Keywords: regression Severity: minor Priority: P2 Component: directx-d3d Assignee: wine-bugs@winehq.org Reporter: gyebro69@gmail.com CC: stefan@codeweavers.com Regression SHA1: ba61730daa6a614ef07128a69a0bbca819e716b4
Once there was bug #30194 and the issue was gone between Wine 1.6-rc3 and 1.6. Sadly, the exact same issue has been re-introduced since Wine 1.7.0, the Canyon levels are unplayable, because the whole screen is filled with some fog. This is after
ba61730daa6a614ef07128a69a0bbca819e716b4 is the first bad commit commit ba61730daa6a614ef07128a69a0bbca819e716b4 Author: Stefan Dösinger stefan@codeweavers.com Date: Thu Aug 1 12:25:55 2013 +0200
wined3d: Avoid calculating 1 / (fog_end - fog_start) in the shader.
:040000 040000 def6053aef8ca5551147e39fd1534f68e08ed32b 90db6148516cc12e0a95ca2e2857af700dc0dd83 M dlls
The patch can be reverted cleanly on 1.7.23 and it fixes the problem.
Disabling GLSL doesn't help.
I can't reproduce the problem with the open source nouveau driver, this may be a bug in the Nvidia driver. I don't have Intel or AMD gfx card to test it.
Terminal output:
fixme:win:EnumDisplayDevicesW ((null),0,0x32db08,0x00000000), stub! fixme:d3d8:ValidateVertexShader (0x17e3900 (nil) (nil) 1 0x32d7d8): stub fixme:d3d:wined3d_swapchain_set_gamma_ramp Ignoring flags 0x1.
Let me know if you need further tests or debug logs.
Fedora 20 Nvidia binary drivers 340.24 wine-1.7.23-90-gbdeb761
http://bugs.winehq.org/show_bug.cgi?id=37068
--- Comment #1 from Stefan Dösinger stefan@codeweavers.com --- Can you try with an older Nvidia driver? The 340 driver introduced another bug in INF handling, presumably because of another math optimization that breaks when INFs are involved. This regression is spotted by the fogstart == fogend tests in dlls/d3d9/tests/visual.c, fog_test().
Having an actual game that is broken makes it easier for me when I talk to Nvidia than just telling them that they broke our regression tests.
And yeah, I realize that a change to Wine triggered this problem on your system. I still believe the Wine change is correct, but it may trigger a different codepath in Nvidia's GLSL optimizer.
Was ARB always broken? The change is GLSL only, so I'd expect ARB shaders to be broken prior to ba61730d.
http://bugs.winehq.org/show_bug.cgi?id=37068
--- Comment #2 from Béla Gyebrószki gyebro69@gmail.com --- (In reply to Stefan Dösinger from comment #1)
Can you try with an older Nvidia driver? The 340 driver introduced another bug in INF handling, presumably because of another math optimization that breaks when INFs are involved. This regression is spotted by the fogstart == fogend tests in dlls/d3d9/tests/visual.c, fog_test().
Hi Stefan,
You are right...after downgrading Nvidia driver to 331.89 the issue in XIII is gone and those levels are rendered correctly.
http://bugs.winehq.org/show_bug.cgi?id=37068
Béla Gyebrószki gyebro69@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords|regression | Status|NEW |RESOLVED Resolution|--- |UPSTREAM Summary|XIII: Canyon levels not |XIII: Canyon levels not |rendered correctly |rendered correctly with | |Nvidia drivers 340.xx Regression SHA1|ba61730daa6a614ef07128a69a0 | |bbca819e716b4 |
--- Comment #3 from Béla Gyebrószki gyebro69@gmail.com --- UPSTREAM bug
http://bugs.winehq.org/show_bug.cgi?id=37068
--- Comment #4 from Béla Gyebrószki gyebro69@gmail.com --- (In reply to Stefan Dösinger from comment #1)
Was ARB always broken? The change is GLSL only, so I'd expect ARB shaders to be broken prior to ba61730d.
Sorry I overlooked this question yesterday...with disabled GLSL the game is broken with drivers 340.24 and that was the case before your commit too.
http://bugs.winehq.org/show_bug.cgi?id=37068
--- Comment #5 from Stefan Dösinger stefan@codeweavers.com --- I'd like to try to reproduce this myself before I report the issue to Nvidia. Apparently there is a demo of this game: http://www.fileplanet.com/128795/120000/fileinfo/XIII-Demo . Do you have a savegame of one of the affected levels? I have no idea if an affected level is included in the demo, but it is worth a try.
http://bugs.winehq.org/show_bug.cgi?id=37068
--- Comment #6 from Béla Gyebrószki gyebro69@gmail.com --- (In reply to Stefan Dösinger from comment #5)
I'd like to try to reproduce this myself before I report the issue to Nvidia. Apparently there is a demo of this game: http://www.fileplanet.com/128795/120000/fileinfo/XIII-Demo . Do you have a savegame of one of the affected levels? I have no idea if an affected level is included in the demo, but it is worth a try.
I have a saved game to reproduce the problem but the demo doesn't have load/save function. The demo contains 2 levels but none of them are affected.
http://bugs.winehq.org/show_bug.cgi?id=37068
--- Comment #7 from Stefan Dösinger stefan@codeweavers.com --- Yeah, I just ran the demo - it runs fine here as well. Please attach the saved game nevertheless, I may get a hold of the full game at some point.
Please also attach a +d3d log. Try to keep it as short as possible - start the game, load the saved game and wineserver -k everything as soon as the problem shows up on the screen. Don't quit the game normally, just kill it.
http://bugs.winehq.org/show_bug.cgi?id=37068
--- Comment #8 from Béla Gyebrószki gyebro69@gmail.com --- Created attachment 49289 --> http://bugs.winehq.org/attachment.cgi?id=49289 +d3d log (uncompressed 43 MB)
http://bugs.winehq.org/show_bug.cgi?id=37068
--- Comment #9 from Béla Gyebrószki gyebro69@gmail.com --- Created attachment 49290 --> http://bugs.winehq.org/attachment.cgi?id=49290 saved game
Place the file in the /Save directory. In the main menu <06 Plain Rock 09> should appear as your existing profile. Click on it, on the next screen click on the lower left image (Load game) and 'Canyon 4' should appear.
You can install the unofficial 1.5 patch to the installed game, the patch removes the intro videos (which are unskippable) thus reducing the +d3d log size considerably. http://theoutlawdad.com/XIII_FILES/XIII.1.5.patch.zip
http://bugs.winehq.org/show_bug.cgi?id=37068
--- Comment #10 from Stefan Dösinger stefan@codeweavers.com --- Thanks for the log, it confirms that the game indeed hits the fogstart == fogend table fog case.
https://bugs.winehq.org/show_bug.cgi?id=37068
--- Comment #11 from Stefan Dösinger stefan@codeweavers.com --- The Nvidia 352.09 Beta driver fixes this bug.
https://bugs.winehq.org/show_bug.cgi?id=37068
Stefan Dösinger stefan@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #12 from Stefan Dösinger stefan@codeweavers.com --- Closing now that it is fixed upstream
https://bugs.winehq.org/show_bug.cgi?id=37068
--- Comment #13 from Béla Gyebrószki gyebro69@gmail.com --- Just would like to add that Matteo's recent patches make fog effect work properly in the XIII game with binary drivers 340.76. http://source.winehq.org/git/wine.git/commit/b02a166cc84a1c61db9e91e26e6b8e0...
http://source.winehq.org/git/wine.git/commit/614e52e89746b34826fb17c98b1b2ff...
https://bugs.winehq.org/show_bug.cgi?id=37068
Matteo Bruni matteo.mystral@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |matteo.mystral@gmail.com
--- Comment #14 from Matteo Bruni matteo.mystral@gmail.com --- (In reply to Béla Gyebrószki from comment #13)
Just would like to add that Matteo's recent patches make fog effect work properly in the XIII game with binary drivers 340.76.
That makes sense, those patches effectively workaround the bug since wined3d is not making use of the GL fog anymore.