https://bugs.winehq.org/show_bug.cgi?id=33290
--- Comment #15 from Gabriel Corona gabriel.corona@enst-bretagne.fr --- Apparently, the nvidia Driver expects needs XRRSetScreenSize() before XRRSetCrtcConfig(). Failing to do so leads to panning mode. I'm attaching a prototype program which successfully change resolution (at least in the simple cases) without introducing panning.
The needed steps are:
1. XGrabServer();
2. Disable the CRTC with XRRSetCrtcConfig;
3. XRRSetScreenSize to the new resolution;
4. XRRSetCrtcConfig to set the CRT to the new resolution (and reenable it);
5. XUngrabServer.
You can comment out the XRRSetScreenSize() call (and possibly everythin but the main XRRSetCrtcConfig call) to get somethying similar to the current behaviour of the Wine implementation which leads to panning (at least using the nvidia driver).
I'm not sure if this is the expected behaviour ox xrandr or if this is a bug in the nvidia driver.