Comment 5 for bug 1326688

Revision history for this message
Thomas C. Blank (thomas-c-blank) wrote :

I have these problems on a W520 (i.e. Nvidia driver), but on Arch Linux. Still, what I have found, and a workaround:

The Nvidia driver will try to make the whole size of the screen (set with xrandr --fb or by placing monitors) accessible with the monitors it has, and if need be with panning. It will ignore or overwrite all attempts to disable that panning if the driver thinks you need it. (It's a feature, they brag about it under question "How are virtual screen dimensions determined in TwinView?" at http://us.download.nvidia.com/XFree86/Linux-x86_64/346.35/README/configtwinview.html

On my setup, I use two external monitors that are connected to the Nvidia card along with the built-in monitor that is connected to the internal Intel chip. The intel chip servers as a Sink provider for the Nvidia driver, so all three monitors form a single screen, like so:
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --fb 5760x1200
   --output LVDS-1-0 --mode 1920x1080 --pos 3840x120
   --output VGA-0 --mode 1920x1200 --pos 1920x0
   --output DP-3 --mode 1920x1200 --pos 0x0

The nvidia driver (so it seems) will accept that the whole screen is now 5760x1200 big, but only uses the two monitors that are actually connected to the card to "cover" that area with panning. So the right-most laptop display worked fine, while the two monitors would pan along left and right.

I have worked around this by abusing that while the Nvidia driver ignores or overwrites the core panning parameters, it doesn't meddle with the panning border. I modified the command above like so:
xrandr --fb 5760x1200
--output LVDS-1-0 --mode 1920x1080 --pos 3840x120 --panning 5760x1200+0+0/0x0+0+0/-3840/0/0/0
--output VGA-0 --mode 1920x1200 --pos 1920x0 --panning 5760x1200+0+0/0x0+0+0/-1920/0/-1920/0
--output DP-3 --mode 1920x1200 --pos 0x0 --panning 5760x1200+0+0/0x0+0+0/0/0/-3840/0

This sets the borders that trigger the panning so far out that they are all off screen. So panning is technically still enabled but impossible to trigger.