Three monitor setup not working

Questions about Wine on Linux
Locked
blaze157
Newbie
Newbie
Posts: 3
Joined: Fri Jan 27, 2017 6:29 pm

Three monitor setup not working

Post by blaze157 »

I have a setup with 3 monitors. Two 1080p displays on the left and in the center with a 720p display on the right. For some reason wine doesn't work anywhere from the right side of the middle of the center monitor. The left monitor works fine and half of the center monitor works fine, but placing a window anywhere past the middle of the center monitor, including the right monitor, results in the window not being rendered properly and clicking on buttons does not do anything. By not rendering properly i mean that the window is either black, or just shows whatever was last displayed.

I have tried
running other Windows applications
disabling the right monitor.
running wine without the window manager
reinstalling wine

I am using Arch Linux x86_64 with a Nvidia 770 using the latest Nvidia drivers.
wineBroken.jpg
User avatar
Bob Wya
Level 12
Level 12
Posts: 3068
Joined: Sat Oct 16, 2010 7:40 pm

Re: Three monitor setup not working

Post by Bob Wya »

blaze157 wrote: ...
I am using Arch Linux x86_64 with a Nvidia 770 using the latest Nvidia drivers.
The Nvidia drivers don't always play nice... Since the proprietary drivers do not correctly supported the latest xrandr protocols. :roll:

Whats the output from:

Code: Select all

xrandr

grep -A 30 -R 'Section "Screen"' /etc/X11/xorg.conf*
on your system?

Ta
Bob
blaze157
Newbie
Newbie
Posts: 3
Joined: Fri Jan 27, 2017 6:29 pm

Re: Three monitor setup not working

Post by blaze157 »

xrandr returns

Code: Select all

Screen 0: minimum 8 x 8, current 5120 x 1080, maximum 16384 x 16384
DVI-I-0 connected 1280x720+3840+312 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00 +
   720           59.86* 
   800x600       72.19    60.32    56.25  
   640x480       59.94  
   512x384       60.00  
   400x300       72.19  
   320x240       60.05  
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 287mm
   1920x1080     60.00*+  59.94    50.00    60.00    50.04  
   1280x1024     75.02    60.02  
   1280x960      60.00  
   1280x800      59.81  
   1280x720      60.00    59.94    50.00  
   1152x864      75.00  
   1024x768      75.03    70.07    60.00  
   800x600       75.00    72.19    60.32    56.25  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    72.81    59.94    59.93  
DP-0 disconnected (normal left inverted right x axis y axis)
DVI-D-0 connected primary 1920x1080+1920+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080     60.00*+ 144.00   119.98    99.93    84.90  
   1680x1050     59.95  
   1440x900      59.89  
   1280x1024     75.02    60.02  
   1280x960      60.00  
   1280x800      59.81  
   1280x720      60.00  
   1152x864      75.00  
   1024x768      75.03    70.07    60.00  
   800x600       75.00    72.19    60.32    56.25  
   640x480       75.00    59.94  
DP-1 disconnected (normal left inverted right x axis y axis)
and grep -A 30 -R 'Section "Screen"' /etc/X11/xorg.conf* doesn't return anything.
I don't have an /etc/X11/xorg.conf file, and the only file in xorg.conf.d is 51-joystick.conf.
User avatar
Bob Wya
Level 12
Level 12
Posts: 3068
Joined: Sat Oct 16, 2010 7:40 pm

Re: Three monitor setup not working

Post by Bob Wya »

@blaze157,

So I checked the Nvidia Linux manual - which confirms that Keplar and above supports ≤4 monitors (under TwinView - well more like QuadView :wink: ).

But clearly wine is only seeing the setup as though your left-a-most monitor does not exist. So it's drawing to a canvas that is 1920+1280 x 1080.
Hence why your Wine windows get flaky - when they hit 2/3 across the middle screen (i.e. 1280 pixels) and the right-hand screen is persona non grata!

What's the output from:

Code: Select all

export WINEDEBUG=+xrandr
winecfg
?

It might be worth trying to manually set the meta-modes for your Nvidia driver...
For my setup with laptop DisplayPort builtin (RHS) and an external 1440p TFT monitor (LHS) I've got:

Code: Select all

/etc/X11/xorg.conf.d/70-screen.conf

# xrandr -s 0 : both internal laptop display     & external monitor on
# xrandr -s 1 :      internal laptop display off & external monitor on
# xrandr -s 2 :      internal laptop display on  & external monitor off
# xrandr -s 3 : both internal laptop display     & external monitor on
Section "Screen"
    Identifier     "xscreen0"
    Device         "nvidia"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "metamodes" "DP-2: 1920x1080 +2560+506, HDMI-0: 2560x1440 +0+0 ; DP-2: NULL, HDMI-0: 2560x1440 +0+0 ; DP-2: 1920x1080 +0+0, HDMI-0: NULL ; DP-2: nvidia-auto-select +2560+506, HDMI-0: nvidia-auto-select +0+0"
	Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    Option         "TwinView" "True"
	SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
I knocked that stuff together from the Nvidia manual (page linked above). Some stuff isn't need (e.g. TwinView defaults to True).

Bob
blaze157
Newbie
Newbie
Posts: 3
Joined: Fri Jan 27, 2017 6:29 pm

Re: Three monitor setup not working

Post by blaze157 »

That outputs

Code: Select all

trace:xrandr:X11DRV_XRandR_Init Found XRandR 1.5.
trace:xrandr:xrandr12_init_modes CRTC 0: mode 0x289, 1920x1080+1920+0.
trace:xrandr:xrandr12_init_modes OUTPUT 0: name "DVI-D-0".
trace:xrandr:xrandr12_init_modes Adding mode 0x289: 1920x1080@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x2a0: 1920x1080@144.
trace:xrandr:xrandr12_init_modes Adding mode 0x2a1: 1920x1080@120.
trace:xrandr:xrandr12_init_modes Adding mode 0x2a2: 1920x1080@100.
trace:xrandr:xrandr12_init_modes Adding mode 0x2a3: 1920x1080@85.
trace:xrandr:xrandr12_init_modes Adding mode 0x2a4: 1680x1050@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x2a5: 1440x900@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x28e: 1280x1024@75.
trace:xrandr:xrandr12_init_modes Adding mode 0x28f: 1280x1024@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x290: 1280x960@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x291: 1280x800@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x292: 1280x720@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x295: 1152x864@75.
trace:xrandr:xrandr12_init_modes Adding mode 0x296: 1024x768@75.
trace:xrandr:xrandr12_init_modes Adding mode 0x297: 1024x768@70.
trace:xrandr:xrandr12_init_modes Adding mode 0x27f: 1024x768@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x298: 800x600@75.
trace:xrandr:xrandr12_init_modes Adding mode 0x280: 800x600@72.
trace:xrandr:xrandr12_init_modes Adding mode 0x281: 800x600@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x282: 800x600@56.
trace:xrandr:xrandr12_init_modes Adding mode 0x29b: 640x480@75.
trace:xrandr:xrandr12_init_modes Adding mode 0x283: 640x480@60.
trace:xrandr:X11DRV_XRandR_Init Found XRandR 1.5.
trace:xrandr:xrandr12_init_modes CRTC 0: mode 0x289, 1920x1080+1920+0.
trace:xrandr:xrandr12_init_modes OUTPUT 0: name "DVI-D-0".
trace:xrandr:xrandr12_init_modes Adding mode 0x289: 1920x1080@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x2a0: 1920x1080@144.
trace:xrandr:xrandr12_init_modes Adding mode 0x2a1: 1920x1080@120.
trace:xrandr:xrandr12_init_modes Adding mode 0x2a2: 1920x1080@100.
trace:xrandr:xrandr12_init_modes Adding mode 0x2a3: 1920x1080@85.
trace:xrandr:xrandr12_init_modes Adding mode 0x2a4: 1680x1050@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x2a5: 1440x900@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x28e: 1280x1024@75.
trace:xrandr:xrandr12_init_modes Adding mode 0x28f: 1280x1024@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x290: 1280x960@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x291: 1280x800@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x292: 1280x720@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x295: 1152x864@75.
trace:xrandr:xrandr12_init_modes Adding mode 0x296: 1024x768@75.
trace:xrandr:xrandr12_init_modes Adding mode 0x297: 1024x768@70.
trace:xrandr:xrandr12_init_modes Adding mode 0x27f: 1024x768@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x298: 800x600@75.
trace:xrandr:xrandr12_init_modes Adding mode 0x280: 800x600@72.
trace:xrandr:xrandr12_init_modes Adding mode 0x281: 800x600@60.
trace:xrandr:xrandr12_init_modes Adding mode 0x282: 800x600@56.
trace:xrandr:xrandr12_init_modes Adding mode 0x29b: 640x480@75.
trace:xrandr:xrandr12_init_modes Adding mode 0x283: 640x480@60.
Is it supposed to output the same thing twice?

Ill try writing that Xorg file and see if it helps.
User avatar
Bob Wya
Level 12
Level 12
Posts: 3068
Joined: Sat Oct 16, 2010 7:40 pm

Re: Three monitor setup not working

Post by Bob Wya »

blaze157 wrote:That outputs
...
Is it supposed to output the same thing twice?

Ill try writing that Xorg file and see if it helps.
Yes.

However your output should definitely have a unified mode, created by the Nvidia driver, that spans multiple monitors. So something has gone wrong there... :cry:

For reference my output from running winecfg is:

Code: Select all

WINEDEBUG=+xrandr winecfg

fixme:winediag:start_process Wine Staging 2.0 is a testing version containing experimental patches.
fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org.
trace:xrandr:X11DRV_XRandR_Init Found XRandR 1.5.
trace:xrandr:xrandr12_init_modes CRTC 0: mode 0x1c2, 1920x1080+2560+506.
trace:xrandr:xrandr12_init_modes OUTPUT 0: name "DP-2".
trace:xrandr:xrandr12_init_modes Adding mode 0x1c2: 1920x1080@60.
trace:xrandr:xrandr10_init_modes XRandR: found 12 sizes.
trace:xrandr:xrandr10_init_modes - at 0: 4480x1586 (2 rates):  50,  53 Hz
trace:xrandr:xrandr10_init_modes - at 1: 2560x1440 (1 rates):  51 Hz
trace:xrandr:xrandr10_init_modes - at 2: 1920x1080 (1 rates):  52 Hz
trace:xrandr:xrandr10_init_modes - at 3: 1680x1050 (1 rates):  54 Hz
trace:xrandr:xrandr10_init_modes - at 4: 1440x900 (1 rates):  55 Hz
trace:xrandr:xrandr10_init_modes - at 5: 1366x768 (1 rates):  56 Hz
trace:xrandr:xrandr10_init_modes - at 6: 1280x1024 (1 rates):  57 Hz
trace:xrandr:xrandr10_init_modes - at 7: 1280x800 (1 rates):  58 Hz
trace:xrandr:xrandr10_init_modes - at 8: 1280x720 (1 rates):  59 Hz
trace:xrandr:xrandr10_init_modes - at 9: 1024x768 (1 rates):  60 Hz
trace:xrandr:xrandr10_init_modes - at 10: 800x600 (1 rates):  61 Hz
trace:xrandr:xrandr10_init_modes - at 11: 640x480 (1 rates):  62 Hz
trace:xrandr:xrandr10_init_modes XRandR modes: count=13
trace:xrandr:xrandr10_init_modes Available DD modes: count=39
trace:xrandr:xrandr10_init_modes Enabling XRandR
trace:xrandr:X11DRV_XRandR_Init Found XRandR 1.5.
trace:xrandr:xrandr12_init_modes CRTC 0: mode 0x1c2, 1920x1080+2560+506.
trace:xrandr:xrandr12_init_modes OUTPUT 0: name "DP-2".
trace:xrandr:xrandr12_init_modes Adding mode 0x1c2: 1920x1080@60.
trace:xrandr:xrandr10_init_modes XRandR: found 12 sizes.
trace:xrandr:xrandr10_init_modes - at 0: 4480x1586 (2 rates):  50,  53 Hz
trace:xrandr:xrandr10_init_modes - at 1: 2560x1440 (1 rates):  51 Hz
trace:xrandr:xrandr10_init_modes - at 2: 1920x1080 (1 rates):  52 Hz
trace:xrandr:xrandr10_init_modes - at 3: 1680x1050 (1 rates):  54 Hz
trace:xrandr:xrandr10_init_modes - at 4: 1440x900 (1 rates):  55 Hz
trace:xrandr:xrandr10_init_modes - at 5: 1366x768 (1 rates):  56 Hz
trace:xrandr:xrandr10_init_modes - at 6: 1280x1024 (1 rates):  57 Hz
trace:xrandr:xrandr10_init_modes - at 7: 1280x800 (1 rates):  58 Hz
trace:xrandr:xrandr10_init_modes - at 8: 1280x720 (1 rates):  59 Hz
trace:xrandr:xrandr10_init_modes - at 9: 1024x768 (1 rates):  60 Hz
trace:xrandr:xrandr10_init_modes - at 10: 800x600 (1 rates):  61 Hz
trace:xrandr:xrandr10_init_modes - at 11: 640x480 (1 rates):  62 Hz
trace:xrandr:xrandr10_init_modes XRandR modes: count=13
trace:xrandr:xrandr10_init_modes Available DD modes: count=39
trace:xrandr:xrandr10_init_modes Enabling XRandR
trace:xrandr:X11DRV_XRandR_Init Found XRandR 1.5.
trace:xrandr:xrandr12_init_modes CRTC 0: mode 0x1c2, 1920x1080+2560+506.
trace:xrandr:xrandr12_init_modes OUTPUT 0: name "DP-2".
trace:xrandr:xrandr12_init_modes Adding mode 0x1c2: 1920x1080@60.
trace:xrandr:xrandr10_init_modes XRandR: found 12 sizes.
trace:xrandr:xrandr10_init_modes - at 0: 4480x1586 (2 rates):  50,  53 Hz
trace:xrandr:xrandr10_init_modes - at 1: 2560x1440 (1 rates):  51 Hz
trace:xrandr:xrandr10_init_modes - at 2: 1920x1080 (1 rates):  52 Hz
trace:xrandr:xrandr10_init_modes - at 3: 1680x1050 (1 rates):  54 Hz
trace:xrandr:xrandr10_init_modes - at 4: 1440x900 (1 rates):  55 Hz
trace:xrandr:xrandr10_init_modes - at 5: 1366x768 (1 rates):  56 Hz
trace:xrandr:xrandr10_init_modes - at 6: 1280x1024 (1 rates):  57 Hz
trace:xrandr:xrandr10_init_modes - at 7: 1280x800 (1 rates):  58 Hz
trace:xrandr:xrandr10_init_modes - at 8: 1280x720 (1 rates):  59 Hz
trace:xrandr:xrandr10_init_modes - at 9: 1024x768 (1 rates):  60 Hz
trace:xrandr:xrandr10_init_modes - at 10: 800x600 (1 rates):  61 Hz
trace:xrandr:xrandr10_init_modes - at 11: 640x480 (1 rates):  62 Hz
trace:xrandr:xrandr10_init_modes XRandR modes: count=13
trace:xrandr:xrandr10_init_modes Available DD modes: count=39
trace:xrandr:xrandr10_init_modes Enabling XRandR
trace:xrandr:X11DRV_XRandR_Init Found XRandR 1.5.
trace:xrandr:xrandr12_init_modes CRTC 0: mode 0x1c2, 1920x1080+2560+506.
trace:xrandr:xrandr12_init_modes OUTPUT 0: name "DP-2".
trace:xrandr:xrandr12_init_modes Adding mode 0x1c2: 1920x1080@60.
trace:xrandr:xrandr10_init_modes XRandR: found 12 sizes.
trace:xrandr:xrandr10_init_modes - at 0: 4480x1586 (2 rates):  50,  53 Hz
trace:xrandr:xrandr10_init_modes - at 1: 2560x1440 (1 rates):  51 Hz
trace:xrandr:xrandr10_init_modes - at 2: 1920x1080 (1 rates):  52 Hz
trace:xrandr:xrandr10_init_modes - at 3: 1680x1050 (1 rates):  54 Hz
trace:xrandr:xrandr10_init_modes - at 4: 1440x900 (1 rates):  55 Hz
trace:xrandr:xrandr10_init_modes - at 5: 1366x768 (1 rates):  56 Hz
trace:xrandr:xrandr10_init_modes - at 6: 1280x1024 (1 rates):  57 Hz
trace:xrandr:xrandr10_init_modes - at 7: 1280x800 (1 rates):  58 Hz
trace:xrandr:xrandr10_init_modes - at 8: 1280x720 (1 rates):  59 Hz
trace:xrandr:xrandr10_init_modes - at 9: 1024x768 (1 rates):  60 Hz
trace:xrandr:xrandr10_init_modes - at 10: 800x600 (1 rates):  61 Hz
trace:xrandr:xrandr10_init_modes - at 11: 640x480 (1 rates):  62 Hz
trace:xrandr:xrandr10_init_modes XRandR modes: count=13
trace:xrandr:xrandr10_init_modes Available DD modes: count=39
trace:xrandr:xrandr10_init_modes Enabling XRandR
The area 4480x1586 covers my external 2560x1440 HDMI monitor and 1920x1080 laptop screen - as the laptop screen is offset (downwards on the Y-axis by 506 pixels).

Bob
User avatar
Bob Wya
Level 12
Level 12
Posts: 3068
Joined: Sat Oct 16, 2010 7:40 pm

Re: Three monitor setup not working

Post by Bob Wya »

@blaze157,

Just to add to my previous post, I've listed all the relevant files in /etc/X11/xorg.conf.d/, so full list is:

Code: Select all

/etc/X11/xorg.conf.d/10-nvidia.conf
Section "Device"
    Identifier     "nvidia"
    Driver         "nvidia"
    VendorName    "NVIDIA Corporation"
    BoardName      "GeForce GTX 970M"
    Option             "TripleBuffer"      "True"
    Option             "TwinView" "1"
EndSection

Code: Select all

/etc/X11/xorg.conf.d/10-server.conf
Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "xscreen0" 0 0
    Option         "Xinerama" "0"
EndSection

Code: Select all

/etc/X11/xorg.conf.d/70-screen.conf
# xrandr -s 0 : both internal laptop display     & external monitor on
# xrandr -s 1 :      internal laptop display off & external monitor on
# xrandr -s 2 :      internal laptop display on  & external monitor off
# xrandr -s 3 : both internal laptop display     & external monitor on
Section "Screen"
    Identifier     "xscreen0"
    Device         "nvidia"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "metamodes" "DP-2: 1920x1080 +2560+506, HDMI-0: 2560x1440 +0+0 ; DP-2: NULL, HDMI-0: 2560x1440 +0+0 ; DP-2: 1920x1080 +0+0, HDMI-0: NULL ; DP-2: nvidia-auto-select +2560+506, HDMI-0: nvidia-auto-select +0+0"
	Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    Option         "TwinView" "True"
	SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

I checked and Arch Linux saves a local copy of the html manual for the current Nvidia Driver: [url=file://usr/share/doc/nvidia/html/index.html]/usr/share/doc/nvidia/html/index.html[/url].
So you can just bookmark that link... 8)

It occured to me yesterday, after playing Doom 2016 and Wine messed my X resolution settings...
The other obvious advantage of setting up explicit Metamodes, with the Nvidia proprietary drivers, is I just had to type:

Code: Select all

xrandr -s 0
to correctly restore the correct default resolutions for 2 monitor, TwinView desktop (as noted in the 70-screen.conf file comments)! Very handy!! 8)

If you get stuck I'm sure there are plenty of "Nvidia experts" on the Arch Linux forums... 8)

Bob
Locked