Offloading and panning (driver 340)

I have two graphic cards

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
01:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2)

and three monitors:

  1. VGA connected to nvidia (1400x1050)
  2. DVI connected to nvidia (1920x1080)
  3. VGA connected to intel (1280x1024)

I’d like to have a virtual screen made of 1-2-3 monitors in this order.

Documentation says it is possible with Offloading graphics, but following the instructions I always get some ugly panning.

Screen 0: minimum 8 x 8, current 4600 x 1080, maximum 8192 x 8192
VGA-0 connected 1400x1050+0+0 (normal left inverted right x axis y axis) 408mm x 306mm <b>panning 2680x1050+0+0</b>
DVI-I-1 connected 1920x1080+1400+0 (normal left inverted right x axis y axis) 531mm x 299mm <b>panning 3200x1080+1400+0</b>
VGA-1-1 connected 1280x1024+3320+0 (normal left inverted right x axis y axis) 337mm x 270m

Besides, my window manager seems to detect two virtual devices, so I get very wide and overlapping windows when maximized. It looks as if the intel connected device size is added somehow to every nvidia connected device size.

It looks like a bug to me.

I’ve tried using directly nvidia-settings, but then I get a black screen for intel connected screen.

nvidia-settings --assign CurrentMetaMode="CRT-1: 1400x1050 +0+0 { PanningTrackingArea=1400x1050+0+0 }, DFP-0: 1920x1080 +1400+0 { PanningTrackingArea=1920x1080+1400+0 }"

More info:

  • kernel-4.14.19
  • x11-drivers/nvidia-drivers-340.106
  • x11-server/xorg-server-1.19.6-r1
  • x11-apps/xrandr-1.5.0-r1
  • x11-dri/mesa-17.3.6
  • x11-dri/libdrm-2.4.91

Please run nvidia-bug-report.sh as root and attach the resulting tar.gz file to your post.

Sorry for the late response.
nvidia-bug-report.log.gz (78.1 KB)

That’s odd. What DE are you using?
In case of KDE, disable the kscreen2 service and retry, in case of something mutter (Gnome/Cinnamon etc) go to settings->screens and exchange the intel vga screen and the nvidia vga screen.
Sidenote: if this is a driver bug, this will likely not be fixed, since 340 is a legacy driver.

Using i3wm. https://i3wm.org/

Does it really matter?

Modern WMs have a monitor manager which sometimes interferes. I’ll have to check about i3wm first. In the meantime, try moving the intel vga display to the left.

If I move intel vga display to the left, I do not get that panning anymore. But then, mouse is constrained only to the nvidia displays.

Looks like some driver bug. See this for a workaround:
https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1326688/comments/9

BTW you should set
Option “AccelMethod” “none”
in the intel device section of your xorg.conf. The Xserver is complaining about egl.

I changed “AccelMethod” to “none”, but that does not seem to modify the screen behaviour.

I tried the workaround. The workaround uses Intel instead of modesetting but I guess it does not matter. I disabled Xinerama and set:

$ xrandr --setprovideroutputsource modesetting NVIDIA-0
$ xrandr --output VGA-1-1 --auto --right-of DVI-I-1
$ xrandr --output DVI-I-1 --panning 3200x1080+1400+0/1920x1080+1400+0/0/0/0/0
$ xrandr --props | sed -n -e 1p -e "/ connected/p" -e "/PRIME/p"
Screen 0: minimum 8 x 8, current 4600 x 1080, maximum 8192 x 8192
VGA-0 connected 1400x1050+0+0 (normal left inverted right x axis y axis) 408mm x 306mm
DVI-I-1 connected 1920x1080+1400+0 (normal left inverted right x axis y axis) 531mm x 299mm panning 3200x1080+1400+0 tracking 1920x1080+1400+0 border 0/0/0/0
VGA-1-1 connected 1280x1024+3320+0 (normal left inverted right x axis y axis) 337mm x 270mm
        PRIME Synchronization: 0

That is much better. Three monitors and no panning. But I still get a large middle screen that extends to and overlaps the third monitor (size same as panning).

There is an explanation here about the nvidia/xrandr interaction here: https://i3wm.org/docs/multi-monitor.html.

I tried then to use force-xinerama as suggested by i3 documentation without success.

Finally I found and set this i3 option in config file:

fake-outputs 1400x1050+0+0,1920x1080+1400+0,1280x1024+3320+0

where my monitor names are now fake-0, fake-1, fake-2.

So far seems to work nice. The only missing piece is that dialog windows still get centered in the “large screen”, so they appear shifted.

I’m happy with the result of the complete workaround. However, I’d rather prefer a working driver from the beginning.