xrandr 1.5 with setprovideroutputsource fails with NVIDIA driver 430.64 and Xorg 1.20.6-1 on Debian

Hello,

I’m trying to configure XRandR display offload from an NVIDIA GPU to an integrated Intel GPU:

$ lspci |grep VGA
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02)
06:00.0 VGA compatible controller: NVIDIA Corporation GP107GL [Quadro P1000] (rev a1)

I’m using Xorg and NVIDIA drivers from Debian testing.

I have the following Xorg configuration:

Section "ServerLayout"
    Identifier  "layout"
    Screen      0 "eGPU"
    Inactive    "iGPU"
EndSection

Section "Screen"
    Identifier  "iGPU"
    Device      "iGPU"
EndSection

Section "Device"
    Identifier  "iGPU"
    Driver      "modesetting"
    Option      "AccelMethod" "glamor"
    Option      "Backlight" "intel_backlight"
EndSection

Section "Screen"
    Identifier  "eGPU"
    Device      "eGPU"
EndSection

Section "Device"
    Identifier  "eGPU"
    Driver      "nvidia"
    BusID       "PCI:6:0:0"
    Option      "AllowExternalGpus" "yes"
    Option      "AllowEmptyInitialConfiguration"
EndSection

I can see both GPUs with the appropriate capabilities in xrandr --listproviders, and xrandr --setprovideroutputsource modesetting NVIDIA-0 succeeds:

$ xrandr --listproviders 
Providers: number : 2
Provider 0: id: 0x219 cap: 0x1, Source Output crtcs: 4 outputs: 8 associated providers: 0 name:NVIDIA-0
Provider 1: id: 0x24b cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 3 outputs: 3 associated providers: 0 name:modesetting
$ xrandr --setprovideroutputsource modesetting NVIDIA-0
$ xrandr --listproviders 
Providers: number : 2
Provider 0: id: 0x219 cap: 0x1, Source Output crtcs: 4 outputs: 8 associated providers: 1 name:NVIDIA-0
Provider 1: id: 0x24b cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 3 outputs: 3 associated providers: 1 name:modesetting

However, xrandr --auto fails with a BadMatch error in RRSetScreenSize:

$ xrandr --output eDP-1-1 --auto --verbose
screen 0: 3200x1800 1086x611 mm  74.80dpi
crtc 4:    3200x1800  59.98 +0+0 "eDP-1-1"
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  7 (RRSetScreenSize)
  Serial number of failed request:  57
  Current serial number in output stream:  58

Each time I run it, the following line appears in the Xorg log:

randr: failed to create shared pixmap

The complete log is at https://paste.debian.net/1125612/.

I’ve tried:

  • Using `Option "AccelMethod" "none"` and even renaming `libglamoregl.so` so that it is not found by Xorg. No change.
  • Explicitly loading the `intel` module using a `Section "Module"`, which appears to change how modesetting works. (The iGPU Device section still had `Driver "modesetting"`.) No change.
  • With explicitly loaded `intel` module, using `Option "Tiling" "no"` and/or `Option "LinearFramebuffer" "yes"`, in case this issue is somehow related to https://devtalk.nvidia.com/default/topic/1051368/. No change.
  • Updating to 435.21 driver downloaded from the NVIDIA website. No change. Remarkably, PRIME render offload works just fine, it's PRIME display offload that doesn't work.

Essentially every xrandr command I tried fails with that error, e.g. xrandr --auto, xrandr --output eDP-1-1 --auto, xrandr --output eDP-1-1 --off, xrandr --output eDP-1-1 --primary --size 3200x1800, xrandr --output eDP-1-1 --primary --size 640x480 all fail.

Any ideas?