Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
6 Monitor Multihead Display Problems
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Desktop Environments
View previous topic :: View next topic  
Author Message
lord-devi
n00b
n00b


Joined: 06 Jun 2021
Posts: 5

PostPosted: Sun Jun 06, 2021 10:35 am    Post subject: 6 Monitor Multihead Display Problems Reply with quote

I've never tried to use this many monitors before, saved up for quite a while and finally have everything I need. I am trying to get a hex display setup going using Xorg+AwesomeWM 4.5~.

The problem I got surprised with and can't figure my way out of, is that each of the 2x video cards I am using to drive these displays (1080 Ti's) is on their own X Screen.

That is to say, it seems each video card is being made by nvidia-settings/xorg to be isolated from one another.

I have 3 monitors plugged into each video card. When I start X, I have 3 monitors with AwesomeWM loaded fine. And then 3 other monitors I can drag my mouse onto, but not interact with.

xrandr, when ran can only see the 3 monitors connected to the screen they are connected to.

My ideal situation would be that all 6 exist under the same AwesomeWM instance. Whether if that is all monitors being on the same Screen0, or some kind of other option I don't know about.

Can anyone help me understand what some of my options might be?

Thanks

Note: The 2 Nvidia 1080 Ti's re NOT bridged together in any form of SLI mode. (Is that a possible solution to my problem? I don't know.) No hardware bridge installed, or nvidia-settings settings set.
Back to top
View user's profile Send private message
Ralphred
Guru
Guru


Joined: 31 Dec 2013
Posts: 499

PostPosted: Mon Jun 07, 2021 10:00 am    Post subject: Reply with quote

I haven't used nvidia for a number of years, but for the last few xrandr has been overriding "traditional" xorg settings without very specific diver options.
https://download.nvidia.com/XFree86/Linux-x86_64/460.80/README/configmultxscreens.html documents the "screen" option, which in theory allows you to create an xorg.conf that obeys ServerLayout directives.
Whether you need to go full on "6 screens in a layout" or just "2 screens, 1 for each card" I can't test, but there are overhead implications of running 6 instances of a compositor as opposed to two.
The below is a working "traditional" xorg.conf for 4 screens across two gpu's, albeit amdgpu.
Code:

Section   "ServerFlags"
   Option         "DefaultServerLayout"      "Layout0"
   Option         "Xinerama"            "True"
EndSection

Section   "Module"
   Load         "glx"
   Load         "dbe"
#   Disable         "something else"
EndSection

#Section   "Extensions"
#   Option         "RANDR"   "Disable"
#EndSection

Section   "InputClass"
   Identifier      "keyboard"
   MatchIsKeyboard   "yes"
   Option         "XkbModel"      "pc105"
   Option         "XkbLayout"      "gb"
   Option         "XkbOptions"   "ctrl:nocaps,terminate:ctrl_alt_bksp,nodeadkeys"
EndSection

Section   "InputDevice"
   Identifier      "Keyboard0"
   Driver         "kbd"
EndSection

Section   "InputDevice"
   Identifier      "Mouse0"
   Driver         "mouse"
   Option         "Protocol""auto"
   Option         "Device""/dev/input/mice"
   Option         "ZAxisMapping""4 5 6 7"
EndSection

Section   "Device"
   Identifier      "Card0"
   Driver         "amdgpu"
   BusID         "PCI:11:0:0:0"
   Screen         0
EndSection

Section "Device"
    Identifier      "Card1"
    Driver          "amdgpu"
    BusID           "PCI:11:0:0:1"
    Screen          1
EndSection

Section "Device"
    Identifier      "Card2"
    Driver          "amdgpu"
    BusID           "PCI:14:0:0:0"
    Screen          2
EndSection
                   
Section "Device"
    Identifier      "Card3"
    Driver          "amdgpu"
    BusID           "PCI:14:0:0:1"
    Screen          3
EndSection

Section   "Monitor"
   Identifier      "Monitor0"
   VendorName      "Asus"
   ModelName      "VP248QG"
   UseModes      "AsusModes"
EndSection

Section   "Monitor"
   Identifier      "Monitor1"
   VendorName      "LG"
   ModelName      "MP2455"
   UseModes      "LGModes"
EndSection

Section   "Monitor"
   Identifier      "Monitor2"
   VendorName      "LG"
   ModelName      "TV"
   UseModes      "TVModes"
EndSection

Section   "Monitor"
   Identifier      "Monitor3"
   VendorName      "Asus"
   ModelName      "VP248QG"
   UseModes      "AsusModes"
EndSection


Section   "Modes"
   Identifier      "TVModes"
   Modeline      "TVMode"   148.50   1920   2008   2052   2200   1080   1084   1089   1125   +hsync   +vsync
EndSection

Section   "Modes"
   Identifier      "LGModes"
   Modeline      "LGMode"   148.50   1920   2008   2052   2200   1080   1084   1089   1125   +hsync   +vsync
EndSection

Section   "Modes"
   Identifier      "AsusModes"
   Modeline      "AsusMode"   170.00   1920   1928   1960   2026   1080   1105   1113   1119   +hsync   -vsync
EndSection

Section   "Screen"
   Identifier      "Screen0"
   Device         "Card0"
   Monitor         "Monitor0"
   SubSection      "Display"
      Virtual         1920   1080
      Viewport      0      0
      Depth         24
      Modes         "AsusMode"
   EndSubSection
EndSection

Section   "Screen"
   Identifier      "Screen1"
   Device         "Card1"
   Monitor         "Monitor1"
   SubSection      "Display"
      Virtual         1920   1080
      Viewport      0      0
      Depth         24
      Modes         "LGMode"
   EndSubSection
EndSection

Section   "Screen"
   Identifier      "Screen2"
   Device         "Card2"
   Monitor         "Monitor2"
   SubSection      "Display"
      Virtual         1920   1080
      Viewport      0      0
      Depth         24
      Modes         "TVMode"
   EndSubSection
EndSection

Section   "Screen"
   Identifier      "Screen3"
   Device         "Card3"
   Monitor         "Monitor3"
   SubSection      "Display"
      Virtual         1920   1080
      Viewport      0      0
      Depth         24
      Modes         "AsusMode"
   EndSubSection
EndSection

Section   "ServerLayout"
   Identifier      "Layout0"
   Screen         0   "Screen0"   0      1080
   Screen         1   "Screen1"   0         0
   Screen         2   "Screen2"   0         0
   Screen         3   "Screen3"   1920   1080
   InputDevice      "Mouse0"      "CorePointer"
   InputDevice      "Keyboard0"      "CoreKeyboard"
EndSection
I cut out the directives that you don't need, and I'm not sure if the "Screen" device option under nvidia replaces the extra digit in the BusID's, if those BusID's map to the heads you are using, or even if nvidia accepts the extra digit at all. Don't mix them up with the screen sections though, it's just an option (equivalent of ZaphodHeads AFAICT, just numbered and not named).

Finally make sure AWM is built with/supports xinerama, and uncomment the disabling of xrandr if messes with things.
Back to top
View user's profile Send private message
lord-devi
n00b
n00b


Joined: 06 Jun 2021
Posts: 5

PostPosted: Mon Jun 07, 2021 10:55 am    Post subject: Reply with quote

This is educational a bit perhaps. It is going the opposite direction of what I was looking to do though.

My problem started from the surprise of suddenly having to deal with more than one Screen in the first place. And this approach looks like it would have me create 6 screens. One screen for each monitor. Each video card driving 3 screens.

Also, as you mention I am concerned about compatability with Xrandr. I would prefer avoiding any legacy approaches to managing these displays if possible. Further, this approach of breaking every monitor down to its own screen severely impacts my window manager. No more moving terminals from monitor to monitor if I take this approach.

There was a link off of that page you found for me though Ralphred, about putting monitors on a single screen: https://download.nvidia.com/XFree86/Linux-x86_64/460.80/README/configtwinview.html. But I am not able to make much sense of this... It does not read like a howto or guide. It is just a page full of twinview options.

I don't see an immediate solution in that page to make all 6 of my monitors appear to Xrandr.

I would think step 1 for me is: Make Xrandr able to see all my monitors. Then 2nd step: Configure all the displays using xrandr to reside where desired, using what refresh rates and resolutions desired.
Back to top
View user's profile Send private message
Ralphred
Guru
Guru


Joined: 31 Dec 2013
Posts: 499

PostPosted: Mon Jun 07, 2021 11:48 am    Post subject: Reply with quote

lord-devi wrote:
No more moving terminals from monitor to monitor if I take this approach.

That's kind of the opposite of what xinerama does, that's how X used to behave with each screen being an independent entity.

My main problem with xrandr is it's habit of "auto-configuring" things when your xorg.conf is even just a little off, and for 6 screens over 2 gpu's you are going to need a working xorg.conf.
Assuming you run 3 on top with 3 underneath that gives you the opportunity to create 2 screens, with a [3 times width]x[height] viewport, with 3 monitors in each viewport, it's whether xrandr will support this, and more whether AWM will.

If I were in your position, get it working with xrandr disabled, that proves your xorg.conf. Switch randr back on then start messing with "xrandr --list-providers" and other 1.4 options to start adding/configuring the other card and screens. The multiple gpu functionality has been around for nearly a decade with randr, but with all "automagical" things the docs are a bit light on the ground, that said the man page does document what you need, just not offer examples.
Back to top
View user's profile Send private message
lord-devi
n00b
n00b


Joined: 06 Jun 2021
Posts: 5

PostPosted: Mon Jun 07, 2021 1:51 pm    Post subject: Reply with quote

Thanks for the useful advise and information Ralphred. I have a good idea what steps to take in what order now from your advice.

I can ignore XRandr completely to get this working, is what I guess I've learned. Just, put that to the side, and as you say: Focus on the xorg.conf. Get them running with Xorg at least, and then go from there.

Quote:
Assuming you run 3 on top with 3 underneath that gives you the opportunity to create 2 screens, with a [3 times width]x[height] viewport, with 3 monitors in each viewport, it's whether xrandr will support this, and more whether AWM will.


That is actually what I was thinking this might end up looking like. That because of the 2 cards thing, I might be forced into a Screen0, Screen1 scenario. Which would be ok if there were 3 on top and 3 on the bottom as you say. Less perfect, but a workable compromise.

I think I might even see if I can get your earlier suggestion of 1x screen per monitor working too as practice with this. Then if that can work, maybe I can figure out that twinview page.

Quote:
The multiple gpu functionality has been around for nearly a decade with randr, but with all "automagical" things the docs are a bit light on the ground, that said the man page does document what you need, just not offer examples.


I thought I was doing pretty well making sense of the xrandr man pages, up until I ran into the screen0, screen1 thing and xrandr seemingly not able to see either.

Your help got me a step further though. I figured out xrandr can be made to see my 2nd screen by running:

Code:
xrandr --screen 0


or

Code:
xrandr --screen 1


I didn't know I should be pairing that with --listmonitors or --listproviders. Before I was only using:

Code:
xrandr ---listmonitors


and such.

I am still keen on working the xorg.conf out, but I am not quite sure how to combine my new found knowledge of using '--screen 0' and '--screen 1' to combine the 2 rows of 3 monitors (2 xorg screens) into a single display.
Back to top
View user's profile Send private message
Ralphred
Guru
Guru


Joined: 31 Dec 2013
Posts: 499

PostPosted: Mon Jun 07, 2021 4:59 pm    Post subject: Reply with quote

lord-devi wrote:
I am still keen on working the xorg.conf out, but I am not quite sure how to combine my new found knowledge of using '--screen 0' and '--screen 1' to combine the 2 rows of 3 monitors (2 xorg screens) into a single display.
I'd start with testing AWM, start-up X with 2 of 6 monitors connected (same gpu), use
Code:
xrandr --setmonitor +HDMI-A-0 1920/531x1080/299+1920+0 HDMI-A-0
xrandr --newmode "NewMode" 148.50  1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
xrandr --addmode HDMI-A-0 TVMode
xrandr --output HDMI-A-0 --mode NewMode --right-of HDMI-A-1
(with id's and a mode relevant to you) and force the 3rd monitor into existence in that GPU without connecting it. If it works you can just plug the monitor in and it should already be part of the desktop. Then move on to the other GPU with xrandr --setprovideroutputsource 1 0 , from here xrandr -q should start listing the "other gpu's monitors" as available without the --screen switch.


There is a second option, use a different DM with some kind of "GUI tool" for setting up the monitors, then use xrandr to interrogate the settings you want to use in AWM. As I understand it XFCE has a tool for this, and probably has the smallest dependency footprint, but I use plasma so will let others weigh in on this.

EDIT: I was just checking what I said about "Screen" in the device section, and was correct, lose the last digit off of the BusID's and use the Screen option in the device sections. I also stumbled across this rather nasty tidbit of information regarding nvidia-settings
Quote:
However, It will only allow three screens to be enabled across 2 or more GPUs if they are not Quadro or NVS selected GPU families. This is not because the technology of the gpu's cant handle it, it's because Nvidia artificially limited this in the nvidia-settings code to promote their newer GPU.
which reminded me why I switched to ATI in the first place...
Back to top
View user's profile Send private message
lord-devi
n00b
n00b


Joined: 06 Jun 2021
Posts: 5

PostPosted: Tue Jun 08, 2021 3:10 am    Post subject: Reply with quote

OH wow this is really useful, ok thanks a bunch Ralphred.

This is some more advanced usage of xrandr than I'm used to, but I think I understand what you are suggesting I do.

I'll set aside some time tomorrow to try and take what you've shown me and work it out somehow.

Quote:
then use xrandr to interrogate the settings you want to use in AWM.


I've heard of people doing this with Xrandr, but do not know what exactly they are doing to be able to re-create a xrandr commandline to reproduce the currently-being-used xrandr settings?

I could perhaps just boot to a livecd running gnome or something, and export the xrandr settings. INstall XFCE too as you suggest. What do I run with xrandr to be able to get a reproducable command line?
Back to top
View user's profile Send private message
Ralphred
Guru
Guru


Joined: 31 Dec 2013
Posts: 499

PostPosted: Tue Jun 08, 2021 7:04 am    Post subject: Reply with quote

lord-devi wrote:
What do I run with xrandr to be able to get a reproducable command line?

It's mostly about getting the naming convention right with regards to what you refer to things as in xorg.conf, when these match what xrandr calls them, by default, it makes your xorg.conf work "out of the box" and less automagical setting of things (in a way that doesn't match your intention) happens in the background. You can't make it give you an output like iptables-save where you can just cut and paste it into a bash script, just help you to fine tune your syntax so when you convert from "human to xrandr" nothing is lost in translation.
The two --list[something] commands will give you hints as to what settings to manually push towards monitors if you have to run xrandr as part of your "login-script" to fine tune what's going on. Technically your X screen exists before you start AWM, so you can manipulate the screen before starting AWM and it will never know.

I'm still wary of the "It will only allow three screens to be enabled across 2 or more GPUs" comment I found: It's an old comment, but referring to nvidia's internal "xinerama" code. I'd be tempted to boot up with 2 monitors per gpu connected and see if you hit a "3 monitor" limit, or have the same issue you do with 6 monitors and still end up with 2 unused monitors on the "second" gpu, just to rule this out as a contributing factor.
Back to top
View user's profile Send private message
lord-devi
n00b
n00b


Joined: 06 Jun 2021
Posts: 5

PostPosted: Tue Jun 08, 2021 10:25 am    Post subject: Reply with quote

Quote:
It's mostly about getting the naming convention right with regards to what you refer to things as in xorg.conf, when these match what xrandr calls them, by default, it makes your xorg.conf work "out of the box" and less automagical setting of things (in a way that doesn't match your intention) happens in the background. You can't make it give you an output like iptables-save where you can just cut and paste it into a bash script, just help you to fine tune your syntax so when you convert from "human to xrandr" nothing is lost in translation.


Ok I think I get the gyst of what you are saying. I think I'll begin by making a detailed list of all the assets involved, PCI ID's buss id's, and details of --list**, along with xfce configs (both saved xorg.conf and xrandr out put if avail). Detail that into my notes, and start playing from there.

Quote:
I'm still wary of the "It will only allow three screens to be enabled across 2 or more GPUs" comment I found: It's an old comment, but referring to nvidia's internal "xinerama" code. I'd be tempted to boot up with 2 monitors per gpu connected and see if you hit a "3 monitor" limit, or have the same issue you do with 6 monitors and still end up with 2 unused monitors on the "second" gpu, just to rule this out as a contributing factor.


Yes I understand, quite concerning. I am a little less concerned about this, as I found some official looking documentation elsewhere which was documenting --listproviders, and was teaching about 'crtcs' or the like. It was talking about how you can tell for sure how many your current video card and driver setup CAN support. Apparently the crtcs count under --listproviders tells you how many of the 'outputs' (listed in same spot) you can support running at a time from that provider.

Elsewhere in the same link tree of that document I can't recall, was a section specifically talking about this issue and said that Nvidia 10__something+onwards had that limitation removed. Again, lol I forget the specific model at which they said that limitation was removed. But I know my 1080 Ti's were ahead of it.

And my 'crtcs' count on the 1080' ti's was 4 per card I believe. So I should have a theoretical max of 8 displays I could connect. (Wish I had bookmarked those pages I was alluding to!!)
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Desktop Environments All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum