https://bugs.winehq.org/show_bug.cgi?id=37966
Bug ID: 37966 Summary: xrandr12 regression for nvidia users across a range of applications (too many to list) Product: Wine Version: 1.7.35 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: major Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: abolte@systemsaviour.com Distribution: ---
Dead Space 3: "Your Graphics Card does not meet Dead SpaceTM 3 minimum requirements."
Call of Juaraz: "Failed to initialize rendering device. Check if your graphic card supports DirectX 9.0c"
Overlord: Unhandled exception
Overlord II Unhandled exception
...surely many more but you get the idea.
Reverting commit 8e9e4a657f29ff018c6296ced1f115ca8731e5e6 (introduced in 1.7.35) makes all these problems go away.
Furthermore, this commit introduces all the warnings reported in bug 34348. I have never seen these warnings produced on my Nvidia-based laptop prior to 1.7.35, and I now get them even when not running a 3D application (eg. cmd.exe).
Nvidia GTX660M nvidia 346.35 driver
$ xrandr Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 16384 x 16384 VGA-0 disconnected (normal left inverted right x axis y axis) LVDS-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 194mm 1920x1080 59.9*+ 39.9 DP-0 disconnected (normal left inverted right x axis y axis) HDMI-0 disconnected (normal left inverted right x axis y axis) DP-1 disconnected (normal left inverted right x axis y axis)
Let me know if there's anything else you need.
https://bugs.winehq.org/show_bug.cgi?id=37966
Adam Bolte abolte@systemsaviour.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |regression CC| |abolte@systemsaviour.com, | |erich.e.hoover@gmail.com, | |sebastian@fds-team.de
https://bugs.winehq.org/show_bug.cgi?id=37966
--- Comment #1 from Erich Hoover erich.e.hoover@gmail.com --- (In reply to Adam Bolte from comment #0)
... $ xrandr ...
Could you give me the output of "xrandr --q1" ? What this patch is supposed to do is give the full list of modes (which, if you have a laptop like yours or mine) is only available from the nVidia driver when using XRandR < 1.2.
https://bugs.winehq.org/show_bug.cgi?id=37966
--- Comment #2 from Adam Bolte abolte@systemsaviour.com --- I get:
$ xrandr --q1 SZ: Pixels Physical Refresh *0 1920 x 1080 ( 341mm x 190mm ) *50 51 1 1680 x 1050 ( 298mm x 185mm ) 52 2 1440 x 900 ( 255mm x 158mm ) 53 3 1366 x 768 ( 242mm x 135mm ) 54 4 1280 x 1024 ( 227mm x 180mm ) 55 5 1280 x 800 ( 227mm x 141mm ) 56 6 1280 x 720 ( 227mm x 127mm ) 57 7 1024 x 768 ( 181mm x 135mm ) 58 8 800 x 600 ( 142mm x 105mm ) 59 9 640 x 480 ( 113mm x 84mm ) 60 Current rotation - normal Current reflection - none Rotations possible - normal left inverted right Reflections possible - X Axis Y Axis
https://bugs.winehq.org/show_bug.cgi?id=37966
--- Comment #3 from Adam Bolte abolte@systemsaviour.com --- I downloaded the simple application QRes to test (http://qres.sourceforge.net/). After installation, I selected "Add QRes" and "I want to create a new shortcut on the Desktop, applying QRes to a program I select." and clicked Next. Then I selected notepad.exe and clicked Next. Under Desktop area, there is a slider of all available screen resolutions.
With the patch I can see all resolutions I posted in the "xrandr --q1" output. Without it, I only see 1920x1080 and the slider does not move. Note that the QRes app doesn't actually seem to work though, beyond detecting what it perceives as available resolutions.
So the patch does appear to report the resolutions as intended. Without the patch, I can see Dead Space 3 and Call of Juaraz (the two I just tested again) do only see 1920x1080. I copied my Dead Space 3 install to Windows, and observed many resolutions selectable in the game using that environment. I'll note that the list of resolutions in Windows is not the same as those shown via the "xrandr --q1" command, but since it's all faked through GPU scaling, I guess that doesn't really matter and can be manually changed by the user. Whatever's there should be made available to Wine apps.
I'm guessing the problem is that your patch causes games to see new resolutions (demonstrated with QRes to be true), and some of them now attempt to load code for these new resolutions (possibly for a loading screen or intro video that the app would normally resize internally). Then elsewhere, the code in Wine that handles the actual resolution switching (which was previously not possible since the resolution could never be changed) isn't working with RandR 1.1 properly and causing these application failures.
https://bugs.winehq.org/show_bug.cgi?id=37966
--- Comment #4 from Erich Hoover erich.e.hoover@gmail.com --- (In reply to Adam Bolte from comment #3)
...
I'm guessing the problem is that your patch causes games to see new resolutions (demonstrated with QRes to be true), and some of them now attempt to load code for these new resolutions (possibly for a loading screen or intro video that the app would normally resize internally). Then elsewhere, the code in Wine that handles the actual resolution switching (which was previously not possible since the resolution could never be changed) isn't working with RandR 1.1 properly and causing these application failures.
I have a similar suspicion, are there demos for any of the games you have that are affected? (I don't have any of these games)
https://bugs.winehq.org/show_bug.cgi?id=37966
Adam Bolte abolte@systemsaviour.com changed:
What |Removed |Added ---------------------------------------------------------------------------- URL| |http://www.fileplanet.com/2 | |00489/200000/fileinfo/Overl | |ord-2-Demo
--- Comment #5 from Adam Bolte abolte@systemsaviour.com --- I finally found a demo that illustrates this problem - Overlord 2. I've added the demo download URL to the bug report above.
https://bugs.winehq.org/show_bug.cgi?id=37966
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download Component|-unknown |winex11.drv Regression SHA1| |8e9e4a657f29ff018c6296ced1f | |115ca8731e5e6
https://bugs.winehq.org/show_bug.cgi?id=37966
--- Comment #6 from Adam Bolte abolte@systemsaviour.com --- Just a quick update. There is a work-around for this bug I stumbled across by accident when working on something unrelated. In hindsight it was somewhat obvious.
I had changed my /etc/X11/xorg.conf file to include the following line in the Section "Screen" part of the config:
Option "metamodes" "LVDS-0: 1920x1080 +0+0"
The effect of this is that only a single resolution will be available.
$ xrandr --q1 SZ: Pixels Physical Refresh *0 1920 x 1080 ( 344mm x 194mm ) *60 40 Current rotation - normal Current reflection - none Rotations possible - normal left inverted right Reflections possible - X Axis Y Axis $
Hence, there is no resolution to change to, so the broken code-path is presumably never executed.
Tested with Call of Juaraz, Overlord and Dead Space 3. Good enough for me until we have a proper fix.
https://bugs.winehq.org/show_bug.cgi?id=37966
--- Comment #7 from Sebastian Lackner sebastian@fds-team.de --- It took some time, but I finally figured out what the problem is, at least with Overlord 2 (thanks). Since this is a general bug related to xrandr 1.0 handling in Wine for Nvidia drivers I will post my analysis in bug 34348.
https://bugs.winehq.org/show_bug.cgi?id=37966
--- Comment #8 from Erich E. Hoover erich.e.hoover@wine-staging.com --- (In reply to Adam Bolte from comment #6)
Just a quick update. There is a work-around for this bug I stumbled across by accident when working on something unrelated. In hindsight it was somewhat obvious.
...
The following two patches should provide a real fix: [1/2] https://gist.githubusercontent.com/compholio/c26ad151f1e3b5990dfb/raw/155bc7... [2/2] https://gist.githubusercontent.com/compholio/749bbec6ff1b4d096bc1/raw/48277d...
Important notes: 1) You must run "autoreconf -f" before compiling. 2) You must have libXNVCtrl.a in a system library path (on Ubuntu this is included automatically in the nvidia-settings package) 2) You should run "./configure --with-xnvctrl" before running make. Doing this will ensure that if libXNVCtrl.a is not found or is for the wrong architecture then the ./configure command will fail with an error.
https://bugs.winehq.org/show_bug.cgi?id=37966
super_man@post.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net, | |super_man@post.com
--- Comment #9 from super_man@post.com --- Staged?
https://bugs.winehq.org/show_bug.cgi?id=37966
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |STAGED Ever confirmed|0 |1 Staged patchset| |https://github.com/wine-com | |pholio/wine-staging/tree/ma | |ster/patches/winex11-Limite | |d_Resolutions
https://bugs.winehq.org/show_bug.cgi?id=37966
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch
https://bugs.winehq.org/show_bug.cgi?id=37966
André H. nerv@dawncrow.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |nerv@dawncrow.de Staged patchset|https://github.com/wine-com |https://github.com/wine-sta |pholio/wine-staging/tree/ma |ging/wine-staging/tree/mast |ster/patches/winex11-Limite |er/patches/winex11-Limited_ |d_Resolutions |Resolutions
https://bugs.winehq.org/show_bug.cgi?id=37966
Alexandr Oleynikov sashok.olen@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |sashok.olen@gmail.com
--- Comment #10 from Alexandr Oleynikov sashok.olen@gmail.com --- https://github.com/wine-staging/wine-staging