Two GPU's, two monitors & Wayland?

I have a Lenovo Thinkstation P330 with integrated Intel UHD Graphics 630, plus an nvidia Quadro P620 card. I have two monitors: primary is a Samsung U28E590D (Display port & HDMI inputs).
The secondary is an older Samsung S24D590L, limited to HDMI inputs only. The U28E590D is connected with a DisplayPort cable, and the S24D590L is connected with an HDMI cable. I am currently using the Fedora 38 Workstation Edition.

I can use both monitors simultaneously when I choose the X11 Windowing System. I have both monitors set with the same 1920x1080 resolution (max on the secondary and reduced on the primary), and I am able to seamlessly join the two displays. If I choose Wayland, then it seems I can only use the primary monitor connected via DisplayPort to the nvidia card.

Can someone instruct me how to properly configure multi-GPU/multi-monitor display with Wayland?

I guess I should add that I am using the RPMFusion nvidia driver (v535.129.03).

You did not tell us whether you are using the nvidia drivers or not. If not then before continuing please install the nvidia drivers from rpmfusion to properly support that nvidia GPU.

If I understand what you have said properly then the laptop seems to have both a DP and an HDMI external graphics port. Normally the external ports are configured for use with the dGPU directly but if the dGPU does not have the proper drivers it cannot support 2 monitors properly, and as you already seem to know wayland and x11 are different in performance.

Hi Jeff,

I did add a comment only a few minutes before your response, so you may have missed it. I’m using the RPMFusion nvidia driver, v535.129.03.

Relevant kernel args: rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1

Also, “Lenovo P330 Tiny” is a small form factor desktop machine, not a laptop.

Those kernel args are 100% added when the nvidia drivers are installed from rpmfusion and are required for the nvidia drivers to be loaded.

Please post the output of inxi -Fzxx twice. Once with the system running xorg and once with using wayland. We need to see the full details to assist.

Sorry for misinterpreting what was said about the machine in use.

Looking at the specs for the quadro it appears to have 4 mini DP outputs. I would suggest that you simply add a mini DP – HDMI adapter and connect the monitor with the hdmi input via that adapter to one of the ports on the quadro. That should eliminate problems caused by having 2 different GPUs driving monitors.

Here is the output of inxi -Fxxx under a Gnome on Xorg session (System, Machine, CPU and Graphics sections only):

System:
Kernel: 6.5.10-200.fc38.x86_64 arch: x86_64 bits: 64 compiler: gcc
v: 2.39-15.fc38 Desktop: GNOME v: 44.6 tk: GTK v: 3.24.38 wm: gnome-shell
dm: GDM Distro: Fedora release 38 (Thirty Eight)
Machine:
Type: Mini-pc System: LENOVO product: 30CECTO1WW v: ThinkStation P330 Tiny
serial: Chassis: type: 35 serial:
Mobo: LENOVO model: 3135 v: SDK0J40697 WIN 3305293958316
serial: UEFI: LENOVO v: M1UKT70A date: 02/09/2023
CPU:
Info: 6-core model: Intel Core i7-8700T bits: 64 type: MT MCP
arch: Coffee Lake rev: A cache: L1: 384 KiB L2: 1.5 MiB L3: 12 MiB
Speed (MHz): avg: 853 high: 901 min/max: 800/4000 cores: 1: 900 2: 901
3: 800 4: 900 5: 800 6: 800 7: 900 8: 900 9: 842 10: 800 11: 800 12: 900
bogomips: 57600
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Graphics:
Device-1: Intel CoffeeLake-S GT2 [UHD Graphics 630] vendor: Lenovo
driver: i915 v: kernel arch: Gen-9.5 ports: active: HDMI-A-2 empty: DP-1,
DP-2, HDMI-A-1, HDMI-A-3 bus-ID: 00:02.0 chip-ID: 8086:3e92
Device-2: NVIDIA GP107GL [Quadro P620] driver: nvidia v: 535.129.03
arch: Pascal pcie: speed: 8 GT/s lanes: 8 ports: active: none off: DP-4
empty: DP-3,DP-5,DP-6 bus-ID: 01:00.0 chip-ID: 10de:1cb6
Device-3: Logitech C922 Pro Stream Webcam driver: snd-usb-audio,uvcvideo
type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 bus-ID: 1-7:4 chip-ID: 046d:085c
Display: x11 server: X.Org v: 1.20.14 with: Xwayland v: 22.1.9
compositor: gnome-shell driver: X: loaded: modesetting,nvidia
unloaded: fbdev,nouveau,vesa alternate: nv dri: iris
gpu: i915,nvidia,nvidia-nvswitch display-ID: :0 screens: 1
Screen-1: 0 s-res: 3840x1080 s-dpi: 96
Monitor-1: DP-4 mapped: DP-2 note: disabled pos: primary,left
model: Samsung U28E590 res: 1920x1080 dpi: 80 diag: 698mm (27.5")
Monitor-2: HDMI-A-2 mapped: HDMI-1-2 pos: right model: Samsung S24D590
res: 1920x1080 dpi: 94 diag: 598mm (23.5")
API: OpenGL v: 4.6.0 vendor: nvidia v: 535.129.03 glx-v: 1.4
direct-render: yes renderer: Quadro P620/PCIe/SSE2
API: EGL Message: EGL data requires eglinfo. Check --recommends.

And here the same under a Gnome Wayland session:

System:
Kernel: 6.5.10-200.fc38.x86_64 arch: x86_64 bits: 64 compiler: gcc
v: 2.39-15.fc38 Desktop: GNOME v: 44.6 tk: GTK v: 3.24.38 wm: gnome-shell
dm: GDM Distro: Fedora release 38 (Thirty Eight)
Machine:
Type: Mini-pc System: LENOVO product: 30CECTO1WW v: ThinkStation P330 Tiny
serial: Chassis: type: 35 serial:
Mobo: LENOVO model: 3135 v: SDK0J40697 WIN 3305293958316
serial: UEFI: LENOVO v: M1UKT70A date: 02/09/2023
CPU:
Info: 6-core model: Intel Core i7-8700T bits: 64 type: MT MCP
arch: Coffee Lake rev: A cache: L1: 384 KiB L2: 1.5 MiB L3: 12 MiB
Speed (MHz): avg: 2126 high: 4001 min/max: 800/4000 cores: 1: 4001 2: 800
3: 4000 4: 800 5: 3978 6: 800 7: 800 8: 4000 9: 800 10: 800 11: 800 12: 3941
bogomips: 57600
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Graphics:
Device-1: Intel CoffeeLake-S GT2 [UHD Graphics 630] vendor: Lenovo
driver: i915 v: kernel arch: Gen-9.5 ports: active: HDMI-A-2 empty: DP-1,
DP-2, HDMI-A-1, HDMI-A-3 bus-ID: 00:02.0 chip-ID: 8086:3e92
Device-2: NVIDIA GP107GL [Quadro P620] driver: nvidia v: 535.129.03
arch: Pascal pcie: speed: 2.5 GT/s lanes: 8 ports: active: none off: DP-4
empty: DP-3,DP-5,DP-6 bus-ID: 01:00.0 chip-ID: 10de:1cb6
Device-3: Logitech C922 Pro Stream Webcam driver: snd-usb-audio,uvcvideo
type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 bus-ID: 1-7:4 chip-ID: 046d:085c
Display: wayland server: X.org v: 1.20.14 with: Xwayland v: 22.1.9
compositor: gnome-shell driver: X: loaded: modesetting,nvidia
unloaded: fbdev,nouveau,vesa alternate: nv dri: iris
gpu: i915,nvidia,nvidia-nvswitch display-ID: 0
Monitor-1: DP-4 model: Samsung U28E590 res: 3840x2160 dpi: 161
diag: 698mm (27.5")
Monitor-2: HDMI-A-2 model: Samsung S24D590 res: 1920x1080 dpi: 94
diag: 598mm (23.5")
API: OpenGL v: 4.6.0 vendor: nvidia v: 535.129.03 glx-v: 1.4
direct-render: yes renderer: Quadro P620/PCIe/SSE2 display-ID: :0.0
API: EGL Message: EGL data requires eglinfo. Check --recommends.

Thank you for the information. In the future please use the preformatted text tags with the </> button and not the block quote button. That would retain the formatting as seen on your screen.

Everything there looks really good, and I suspect the issue is as I noted above. You are using 2 different GPUs to drive one screen on 2 monitors. X11 is able to manage that but wayland still is young and not as fully matured as X11.

For the cost of an adapter or cable to connect the hdmi monitor to the mini DP of the nvidia GPU you could at least test if that is the problem. If it solves the issue then you are done and if not then at least you have moved forward in testing.

Looking at the posted data I see this which reveals the issue.
For X11

Graphics:
  Device-1: Intel CoffeeLake-S GT2 [UHD Graphics 630] vendor: Lenovo
    driver: i915 v: kernel arch: Gen-9.5 ports: active: HDMI-A-2 empty: DP-1,
    DP-2, HDMI-A-1, HDMI-A-3 bus-ID: 00:02.0 chip-ID: 8086:3e92
  Device-2: NVIDIA GP107GL [Quadro P620] driver: nvidia v: 535.129.03
    arch: Pascal pcie: speed: 8 GT/s lanes: 8 ports: active: none off: DP-4
    empty: DP-3,DP-5,DP-6 bus-ID: 01:00.0 chip-ID: 10de:1cb6
  Display: x11 server: X.Org v: 1.20.14 with: Xwayland v: 22.1.9
    compositor: gnome-shell driver: X: loaded: modesetting,nvidia
    unloaded: fbdev,nouveau,vesa alternate: nv dri: iris
    gpu: i915,nvidia,nvidia-nvswitch display-ID: :0 screens: 1
  Screen-1: 0 s-res: 3840x1080 s-dpi: 96
  Monitor-1: DP-4 mapped: DP-2 note: disabled pos: primary,left
    model: Samsung U28E590 res: 1920x1080 dpi: 80 diag: 698mm (27.5")
  Monitor-2: HDMI-A-2 mapped: HDMI-1-2 pos: right model: Samsung S24D590
    res: 1920x1080 dpi: 94 diag: 598mm (23.5")

and for wayland

Graphics:
  Device-1: Intel CoffeeLake-S GT2 [UHD Graphics 630] vendor: Lenovo
    driver: i915 v: kernel arch: Gen-9.5 ports: active: HDMI-A-2 empty: DP-1,
    DP-2, HDMI-A-1, HDMI-A-3 bus-ID: 00:02.0 chip-ID: 8086:3e92
  Device-2: NVIDIA GP107GL [Quadro P620] driver: nvidia v: 535.129.03
    arch: Pascal pcie: speed: 2.5 GT/s lanes: 8 ports: active: none off: DP-4
    empty: DP-3,DP-5,DP-6 bus-ID: 01:00.0 chip-ID: 10de:1cb6
  Display: wayland server: X.org v: 1.20.14 with: Xwayland v: 22.1.9
    compositor: gnome-shell driver: X: loaded: modesetting,nvidia
    unloaded: fbdev,nouveau,vesa alternate: nv dri: iris
    gpu: i915,nvidia,nvidia-nvswitch display-ID: 0
  Monitor-1: DP-4 model: Samsung U28E590 res: 3840x2160 dpi: 161
    diag: 698mm (27.5")
  Monitor-2: HDMI-A-2 model: Samsung S24D590 res: 1920x1080 dpi: 94
    diag: 598mm (23.5")

Note that under X11 it shows a screen-1 device with resolution of 3840x1080 and both monitors with 1920x1080.

Under wayland it does not show the extra screen device and monitor-1 on the nvidia DP shows a resolution of 3840x2160. That means that monitor is using 4K resolution while the second monitor is using HD resolution.

I wonder if the second monitor is actually working but because of the disparity in resolution may not be properly configured – and the iGPU may not be able to function with that large a difference under wayland.

Note that (if I’m reading the script correctly) inxi gets part of this information from xrandr talking to Xwayland under a wayland compositor. That is how wayland presents stuff to X clients, not necessarily its own view.

Just curious if there was ever any resolution to this as I am encountering the same issue.

My setup is slightly different however. I’m running dual Nvidia cards and I’m unable to get video output from the second GPU on the monitor connected to it.

I’m running 5 monitors in total. It works perfectly fine under X11.

Just a quick update. This simply appears to not yet be supported.

Jan 06 05:30:15 gamingbunch gnome-shell[1257]: Running GNOME Shell (using mutter 45.2) as a Wayland display server
Jan 06 05:30:15 gamingbunch gnome-shell[1257]: Enabling experimental feature 'kms-modifiers'
Jan 06 05:30:15 gamingbunch gnome-shell[1257]: Failed to make thread 'KMS thread' realtime scheduled: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Destination does not exist
Jan 06 05:30:15 gamingbunch gnome-shell[1257]: Device '/dev/dri/card0' prefers shadow buffer
Jan 06 05:30:15 gamingbunch gnome-shell[1257]: Added device '/dev/dri/card0' (nvidia-drm) using atomic mode setting.
Jan 06 05:30:15 gamingbunch gnome-shell[1257]: Device '/dev/dri/card1' prefers shadow buffer
Jan 06 05:30:15 gamingbunch gnome-shell[1257]: Added device '/dev/dri/card1' (nvidia-drm) using atomic mode setting.
Jan 06 05:30:15 gamingbunch gnome-shell[1257]: Created gbm renderer for '/dev/dri/card0'
Jan 06 05:30:15 gamingbunch gnome-shell[1257]: Created gbm renderer for '/dev/dri/card1'
Jan 06 05:30:15 gamingbunch gnome-shell[1257]: Boot VGA GPU /dev/dri/card0 selected as primary
Jan 06 05:30:15 gamingbunch gnome-shell[1257]: Obtained a high priority EGL context
Jan 06 05:30:15 gamingbunch gnome-shell[1257]: Obtained a high priority EGL context
Jan 06 05:30:16 gamingbunch gnome-shell[1257]: Secondary GPU initialization failed (Failed to create gbm_surface: Function not implemented). Falling back to GPU-less mode instead, so the secondary monitor may be slow to update.
Jan 06 05:30:16 gamingbunch gnome-shell[1257]: Failed to allocate onscreen framebuffer for /dev/dri/card1: Failed to allocate surface
Jan 06 05:30:16 gamingbunch gnome-shell[1257]: Disabling DMA buffer screen sharing (implicit modifiers not supported)
Jan 06 05:30:16 gamingbunch gnome-shell[1257]: Using public X11 display :0, (using :1 for managed services)
Jan 06 05:30:16 gamingbunch gnome-shell[1257]: Using Wayland display name 'wayland-0'
Jan 06 05:30:16 gamingbunch gnome-shell[1257]: Unset XDG_SESSION_ID, getCurrentSessionProxy() called outside a user session. Asking logind directly.
Jan 06 05:30:16 gamingbunch gnome-shell[1257]: Will monitor session 1

This looks like a feature missing in wayland that probably should be reported as a bug.

Please report it at bugzilla