Mouse not visible on one display among three in Xinerama (double GTX 760+three heads)

Hello all.

I experience a weird behavior, not seen on Xorg for years:

This is a three display config, left, center, right, all same model ACER 1920x1080.

The first GTX760 drives the screens #1 and #3 (left and right) by DVI and the mouse is visible.

The second GTX760 drive the center screen (#2) by DVI and the mouse disapears after been moved on either display left or right.

At xinit, the logon pane is in center of screen #2, the mouse is visible, and behave perfectely. When loged-in the mouse is visible. But when the mouse is moved outside center screen #2, either left on screen #1 or right on screen #3, it is still visible, but becomes invisible when back to center screen #2.

I say that the mouse is “invisible” because it is still functionnal, i.e you can see its effect on objets displayed on center screen #2 (clik/double/left/drag…)

It seems that, regardless of positions of screens in Xorg and on my desk, the mouse is only visible on one card, even if it is active on both, resulting in mouse visible on two displays managed by first card and invisible on one display managed by second card.

My exact config (relevant parts only):

MB MSI GD65 Z97
2 x MSI GTX760 2Gb “TwinFrozer IV” not in SLI
3 x ACER 1920x1080 G246HL, two on first 760 @DVI, one on second 760 @DVI

Linux Fedora20 x80-64 latest update
Kernel 3.16.3-200.fc20.x86_64
Nv drivers 340.46
Xorg 11.0 / 11404000
Nv-Ctrl 1.29

I tried software cursor or instead of hardware, same.

I tried HDMI, DP or whatever I could imagine, the mouse is “invisible but active” on second 760 after beeing moved on displays managed by the other card.

Everything else is perfect, the perfs are awsome, but losing the cursor on one card is…

My xorg.conf:

nvidia-settings: X configuration file generated by nvidia-settings

nvidia-settings: version 340.24 (buildmeister@swio-display-x64-rhel04-07) Wed Jul 2 15:50:31 PDT 2014

Section “ServerLayout”
Identifier “Layout0”
Screen 0 “Screen0” 1920 0
Screen 1 “Screen1” 0 0
InputDevice “Keyboard0” “CoreKeyboard”
InputDevice “Mouse0” “CorePointer”
Option “Xinerama” “1”
EndSection

Section “Files”
FontPath “/usr/share/fonts/default/Type1”
EndSection

Section “InputDevice”
Identifier “Mouse0”
Driver “mouse”
Option “Protocol” “auto”
Option “Device” “/dev/input/mice”
Option “Emulate3Buttons” “no”
Option “ZAxisMapping” “4 5”
EndSection

Section “InputDevice”
Identifier “Keyboard0”
Driver “keyboard”
EndSection

Section “Monitor”
# HorizSync source: edid, VertRefresh source: edid
Identifier “Monitor0”
VendorName “Unknown”
ModelName “Acer G246HL”
HorizSync 30.0 - 80.0
VertRefresh 55.0 - 76.0
Option “DPMS”
EndSection

Section “Monitor”
# HorizSync source: edid, VertRefresh source: edid
Identifier “Monitor1”
VendorName “Unknown”
ModelName “Acer G246HL”
HorizSync 30.0 - 80.0
VertRefresh 55.0 - 76.0
Option “DPMS”
EndSection

Section “Device”
Identifier “Device0”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce GTX 760”
BusID “PCI:1:0:0”
Option “SWCursor” “off”
EndSection

Section “Device”
Identifier “Device1”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce GTX 760”
BusID “PCI:2:0:0”
Option “SWCursor” “off”
EndSection

Section “Screen”
Identifier “Screen0”
Device “Device0”
Monitor “Monitor0”
DefaultDepth 24
Option “Stereo” “0”
Option “metamodes” “nvidia-auto-select +0+0”
Option “SLI” “Off”
Option “MultiGPU” “Off”
Option “BaseMosaic” “off”
SubSection “Display”
Depth 24
EndSubSection
EndSection

Section “Screen”
Identifier “Screen1”
Device “Device1”
Monitor “Monitor1”
DefaultDepth 24
Option “Stereo” “0”
Option “metamodes” “DVI-I-1: nvidia-auto-select +3839+0, DVI-D-0: nvidia-auto-select +0+0”
Option “SLI” “Off”
Option “MultiGPU” “Off”
Option “BaseMosaic” “off”
SubSection “Display”
Depth 24
EndSubSection
EndSection

Section “Extensions”
Option “Composite” “Disable”
EndSection

Regards.

Edit:

The FIRST card (GPU0) is the one with the sole center display (screen #2).

The second card (GPU1) drives the lateral screens #1 and #3.

So the mouse disapears from GPU0 when moved to GPU1, remains active on all but remains visible only on GPU1.

Roughtly speaking, when moved far left to far right, the mouse is visible on its travel on screen#1 (GPU1, left display), then invisible but active on screen#2 (GPU0, center display), and finaly visible again on screen #3 (GPU1, right display).

Regards

Hello All :-)

Explaination and fix OK!

Explaination: xscreen1 has a “hole” between the displays #1 and #3 (lateral), in which the center xscreen0 managing display #2 is visible.

This is legal in X, but there is a side effect: the mouse is not drawn everywhere.

When more than one xscreen are defined in the X configuration, they can cover different parts of the displays space, and they can also cover each other if defined so, the xscreen0 on the bottom and the xscreen toward POV.

I my config, xscreen0 manage the GPU0 center display #2, and xscreen1 manage the GPU1 lateral displays #1 and #3. The xscreen1 has a “hole” in its center in which xscreen0 perfectely fits, allowing a view of all its content.

The mouse cursor, I cannot explain this, is not drawn disregarding this stack: it is drawn on the visible part of the frontmost displayed xscreen ONLY!

Here’s the hickup!

When the cursor is to be drawn on an invisible part of xscreen1 (the hole in xscreen1 by which one can see xscreen0) it disapears, this part of xscreen1 beeing said not to be drawable for cursor, but cursor is active.

I haven’t found any option forcing the drawing of the cursor whatever the xscreen below it.

I haven’t found any way to force the drawing of cursor everywhere.

I tried to exchange respective position of xscreen0 and xscreen1, messy and unsuccessful.

So I changed my mind by using 3 xscreens, one for each physical display, not covering each other, and here is the xorg.conf fix with always two GTX760 and three ACER DFP:

Section “ServerLayout”
Identifier “Layout0”
Screen 0 “Screen0” 1920 0
Screen 1 “Screen1” RightOf “Screen0”
Screen 2 “Screen2” LeftOf “Screen0”
InputDevice “Keyboard0” “CoreKeyboard”
InputDevice “Mouse0” “CorePointer”
Option “Xinerama” “1”
EndSection

Section “Files”
FontPath “/usr/share/fonts/default/Type1”
EndSection

Section “InputDevice”
Identifier “Mouse0”
Driver “mouse”
Option “Protocol” “auto”
Option “Device” “/dev/input/mice”
Option “Emulate3Buttons” “no”
Option “ZAxisMapping” “4 5”
EndSection

Section “InputDevice”
# generated from default
Identifier “Keyboard0”
Driver “keyboard”
EndSection

Section “Monitor”
Identifier “Monitor0”
VendorName “Unknown”
ModelName “Acer G246HL”
HorizSync 30.0 - 80.0
VertRefresh 55.0 - 76.0
Option “DPMS”
EndSection

Section “Monitor”
Identifier “Monitor1”
VendorName “Unknown”
ModelName “Acer G246HL”
HorizSync 0.0 - 0.0
VertRefresh 0.0
Option “DPMS”
EndSection

Section “Monitor”
Identifier “Monitor2”
VendorName “Unknown”
ModelName “Acer G246HL”
HorizSync 0.0 - 0.0
VertRefresh 0.0
Option “DPMS”
EndSection

Section “Device”
Identifier “Device0”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce GTX 760”
BusID “PCI:1:0:0”
EndSection

Section “Device”
Identifier “Device1”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce GTX 760”
BusID “PCI:2:0:0”
Screen 0
EndSection

Section “Device”
Identifier “Device2”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce GTX 760”
BusID “PCI:2:0:0”
Screen 1
EndSection

Section “Screen”
Identifier “Screen0”
Device “Device0”
Monitor “Monitor0”
DefaultDepth 24
Option “Stereo” “0”
Option “metamodes” “nvidia-auto-select +0+0”
Option “SLI” “Off”
Option “MultiGPU” “Off”
Option “BaseMosaic” “off”
SubSection “Display”
Depth 24
EndSubSection
EndSection

Section “Screen”
Identifier “Screen1”
Device “Device1”
Monitor “Monitor1”
DefaultDepth 24
Option “Stereo” “0”
Option “metamodes” “DVI-I-1: nvidia-auto-select +0+0”
Option “SLI” “Off”
Option “MultiGPU” “Off”
Option “BaseMosaic” “off”
SubSection “Display”
Depth 24
EndSubSection
EndSection

Section “Screen”
Identifier “Screen2”
Device “Device2”
Monitor “Monitor2”
DefaultDepth 24
Option “Stereo” “0”
Option “metamodes” “DVI-D-0: nvidia-auto-select +0+0”
Option “SLI” “Off”
Option “MultiGPU” “Off”
Option “BaseMosaic” “off”
SubSection “Display”
Depth 24
EndSubSection
EndSection

Section “Extensions”
Option “Composite” “Disable”
EndSection

My two cents,
Regards.

I use 2 gtx580’s and 3 AOC 1080p monitors. Is there a reason you are using xinerama? It’s out dated and breaks some things. Base Mosaic is the way to go. Below is my whole xorg.conf. You can ignore “Option “nvidiaXineramaInfo” “False”” it’s just a “trick” I use to force openbox to treat all three displays as a single 5760x1080 monitor for gaming, the WM’s in other DE"s ive tried grab the monitor “boundaries” from randr so not giving them xinerama info doesn’t matter.

For instance I use XFCE for regular computing and when full screening things they only full screen on the monitor they are on, but I can drag between them all (much like 3 monitors in win), and I use openbox for gaming and anything I fullscreen there goes across all three monitors because of “Option “nvidiaXineramaInfo” “False””.

If you have a reason to be running Xinerama, then ignore me ;) I tried xinerama when I first picked up my 3rd monitor… too many problems.

In the latest drivers (and old ones really), goto “X Server Display Configuration”, click advanced at the bottem and then select “Enable Base Mosaic” and setup your monitors in the order you want, save config, and restart X.

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "AOC 2757"
    HorizSync       30.0 - 83.0
    VertRefresh     50.0 - 76.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 580"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfo" "False"
    Option         "nvidiaXineramaInfoOrder" "DFP-0"
    Option         "metamodes" "GPU-f68daee4-554d-f00b-662e-1b2ce96370d7.GPU-0.DVI-I-2: nvidia-auto-select +1920+0, GPU-f68daee4-554d-f00b-662e-1b2ce96370d7.GPU-0.DVI-I-3: nvidia-auto-select +0+0, GPU-9e09a83d-fb57-89c7-c6ca-1dbc11ee25ed.GPU-1.DVI-I-2: nvidia-auto-select +3840+0"
    Option         "MultiGPU" "Off"
    Option         "SLI" "Auto"
    Option         "BaseMosaic" "on"
    Option         "CoolBits" "12"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Hello ekrboi and thanks for your answer.

I don’t really need xinerama.

I copied your xorg.conf file and I get… a weird result!

One of my GPU is always inactive: If I don’t give any PCI sentence in Device section, GPU0 is always active. If I put PCI address of first GPU, I get the same. If I put PCI address for GPU1, then the display on GPU0 is disabled and the displays on GPU1 switch on!

I CANNOT have both card working simultaneously, even if I use your (adapted) file, or if I let nvidia-settings generate… the same.

You don’t give any explicit card PCI address in your device section, are your two cards working OK ?

Regards.

Yes. Both cards are working just fine since I have 2 monitors on one card, the 3rd monitor on the 2nd card and all three work. When gaming I can see that both GPUs are being utilized in the nvidia-settings GUI or via command line.

You probably can’t simply copy my xorg.conf or even adapt it more than likely. Pretty sure the letter/number string will be specific to your setup (talking abuout “GPU-f68daee4-554d-f00b-662e-1b2ce96370d7” for instance.)

I just did these steps myself to be sure.

Open a terminal and “sudo rm /etc/X11/xorg.conf” and then “sudo nvidia-xconfig”

that will remove your current xorg.conf and generate a clean new one.

Log out/back in or reboot. The screen(s) on gpu0 should be working (In my case 2 screen are on gpu0).

Open up nvidia-settings (sudo nvidia-settings)

then goto “X Server Display Configuration”.

Click the “Advanced” button on the bottom right.

check “Enable Base Mosaic”.

Click on each individual screen in the layout box and enable them if they are not.

In the “Layout” box drag your monitors around and set them to the order you need.

Then select “Save to X Configuration File”, UNCHECK “Merge with existing file” and save it to /etc/X11/xorg.conf.

Then log out and back in or reboot.

If you are lucky the monitors will be in the right order, if not just go back to the “Layout” part and drag them to rearrange them and hit “Apply”… rinse and repeat if necessary until they are in the correct order (usually takes me a couple of tries). Once correct for sure do “Save to X Configuration File” again (Uncheck the merge option) and you should be good to go.

Good luck!

I should chime in an mention that this sounds like an artifact of how Xinerama works in the X server. As far as the driver is concerned, there are actually two X screens. One is 1920x1080 (screen 0) and one is 5759x1080 (screen 1). The X server controls which physical X screen shows the cursor, and it has an internal limitation that the cursor can only exist on one physical X screen at a time. On top of that, the Xinerama layer binds the physical X screens together into the logical X screen that is presented to applications.

As ekrboi mentioned, you can use Base Mosaic for this. Another option would be to connect all three monitors to one GPU by using HDMI or a DP-to-DVI adapter for the third monitor.