YaLTeR/niri

Unable to use 3 monitors

morenathan opened this issue · 10 comments

I've used niri successfully on my two monitor setup for some time. Recently, having added a third monitor I was disappointed when it came up black with a 'no signal' message.

The three-monitor setup works great in Gnome, in Sway, and pretty much everywhere else I've used it under Wayland.

Seeing the note in the example config that Niri will try to use all connected monitors, I was prompted to just comment out all my monitor configs. The previously blank monitor now can work sometimes, but another monitor will be black. Which monitor comes up without signal is a crap shoot it appears. Right now, my middle monitor is unusable while both the left and the right work.

System Information

  • niri version: niri 0.1.5 (9f692d1)
  • GPU: Intel Coffeelake (Gen9)
  • CPU: Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz

Hm, that might be a bandwidth limitation. There was a case previously when sway was able to bring up a monitor but niri couldn't, and we couldn't get it to work even after some tweaks.

Could you post drm_info from sway with all monitors running correctly, and drm_info from niri as well as niri stdout after an attempt to turn on all monitors? It may help pinpoint the cause, who knows.

You could also try using a lower resolution on one of the monitors to see if that lets you turn all of them on.

Meant to report something else but might as well if this is already brought up. I didn't really have the time to troubleshoot it yet, but I've been having the same issue.

niri version: 0.1.4

Screens:
1 x 3840x2160 laptop monitor
1 x 2560x1440 monitor plugged into a HDMI port directly
1 x 2560x1440 monitor plugged into a lightning HDMI adapter

The laptop has hybrid graphics, but it's usually just running on the integrated UHD Graphics 620.

I noticed that it was kind of random which screen would go on first. One time while experimenting I closed the lid fairly early into the startup process and it ended up using both screens.

If I turn the laptop screen off in the settings, the other two monitors will reload and work properly. It's impossible to turn the laptop screen on again afterwards unless I restart niri.

drm_info niri:
https://pastebin.com/SG2daCdi
outputs niri:
https://pastebin.com/xhwuXZyN

drm_info swayfx:
https://pastebin.com/NQq0nTnb
outputs swayfx:
https://pastebin.com/uQLQGkk8

After reading your previous comment, tested turning down the resolution for the laptop monitor. Sadly it seems to only support two different refresh rates on max resolution. I'll update to 0.1.5 and test if changing the resolution of the other two monitors changes anything later. I'll update you on how that went.

I think the last time we concluded that it might be the modifier causing a bandwidth limitation. I see the same different modifiers between niri and sway here. There's currently no way to force a different modifier I think, but maybe I can come up with some debug flag for it, will need to check at some point

alright, good to know!

I tested it out with setting the laptop monitor to the minimum 40hz refresh and lowering both other monitors to 1920x1080. Still didn't work. I won't test too much more since I don't use all three screens simultaneously anyway.

thanks for the quick reply!

sway.drm_info.txt
niri_working.session.txt
niri_preferred.session.txt
niri_1920x1200.drm_info.txt
niri.drm_info.txt
gnome.drm_info.txt

Here's all the info you asked for, you'll notice immediately on niri_preferred.session.txt it dumps into errors.

Before that I noticed it's using "renderD128" which comes with some serious limitations on space for rendering. Which would be why when using all monitors at 1920x1200 it worked fine, but when using two of them at 2560x1440 it doesn't.

In the past I recall some limitations on using the render surface versus the output cards, "card-#-#".

My display setup currently is MST with three monitors total as stated previously.

Some other information of possible use;
Linux: 6.8.7-arch1-1
Distribution: Arch, current and up-to-date as of issue.
Kernel Command Line: initrd=\initramfs-linux.img rw root=UUID=########-####-####-####-############ rootflags=rw,relatime,compress,ssd,discard=async,space_cache=v2 i915.fastboot=1 quiet loglevel=3

Could you try if this branch helps? https://github.com/YaLTeR/niri/tree/filter-out-ccs

I got it compiled and was able to try it. With that said; it worked! Flipping back and forth between the official v1.5.1 and this version I always got all my screens on the filter-out-css but not on v1.5.1.

Perfect, thanks! I will merge into main shortly.

Pushed/fixed in e261b64.