Triple monitor using Intel and AMD graphics

$ inxi -G
Graphics:  Device-1: Intel UHD Graphics 630 driver: i915 v: kernel 
           Device-2: AMD Ellesmere [Radeon RX 470/480] driver: amdgpu v: kernel 
           Display: x11 server: X.Org 1.20.4 driver: amdgpu,intel 
           resolution: 1920x1200~60Hz, 3840x2160~60Hz 
           OpenGL: 
           renderer: Radeon RX 580 Series (POLARIS10 DRM 3.27.0 4.19.0-6-amd64 LLVM 7.0.1) 
           v: 4.5 Mesa 18.3.6 
$ cat /etc/X11/xorg.conf.d/30-onboard-gfx.conf 
Section "Device"
	Identifier  "Card2"
	Driver      "intel"
    Option 		"Tearfree" "true"
	BusID       "PCI:0:2:0"
EndSection

Section "Screen"
	Identifier "Screen2"
	Device     "Card2"
	Monitor    "Monitor2"
	SubSection "Display"
		Viewport   0 0
		Depth     1
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     4
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     8
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     15
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     16
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     24
	EndSubSection
EndSection

Trying to use 3 monitors simultaneously - two DisplayPort via the discrete AMD GPU and one HDMI via integrated Intel.

First, I should clarify that once I added the above 30-onboard-gfx.conf file, I was able to successfully use the triple monitor setup on Manjaro KDE. However, I cannot get it to work on MX Linux (XFCE) and Debian (Gnome). As a learning exercise, I'm trying to understand why.

On Manjaro, xrandr sees the HDMI output, but not on MX Linux and Debian, even though it sees both providers.

Is it really supposed to be this hard to get multiple monitors set up on Linux?

$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0xcd cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 5 associated providers: 0 name:Radeon RX 580 Series @ pci:0000:01:00.0
Provider 1: id: 0x45 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 2 associated providers: 0 name:Intel

Well, just in case it helps someone else, I'm posting the solution here.

On Debian (and MX Linux), using Xorg (Wayland worked automagically), I was able to get the third monitor to work using something called reverse PRIME. The idea, as I understand it, is to have the primary GPU (in my case, discrete AMD GPU) render the screen and then pass it to the secondary (in my case, integrated Intel).

All the information I needed was in the Arch wiki PRIME article, but I needed to read it multiple times to get it.

Verify that both GPUs are available: xrandr --listproviders
Note the id: 0x__ values listed here. Name can also be used but it is case sensitive and must be exact. In my case, the discrete GPU is named Radeon RX 580 Series @pci:0000:01:00.0

Use reverse PRIME using ID:
xrandr --setprovideroutputsource 0x45 0xcd
By name:
xrandr --setprovideroutputsource Intel "Radeon RX 580 Series @pci:0000:01:00.0"

Verify the OpenGL renderer using glxinfo | grep "OpenGL renderer". In my case, the discrete GPU is the renderer.

If anyone needs it, I will be glad to share the Xorg conf files I used for the two GPUs in /etc/X11/xorg.conf.d

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.

Forum kindly sponsored by