1 FPS on external screen when in-built is disabled

Basic system info:

Branch: Testing

inxi -Fz

System:
  Kernel: 6.1.2-1-MANJARO arch: x86_64 bits: 64 Desktop: KDE Plasma v: 5.26.5
    Distro: Manjaro Linux
Machine:
  Type: Laptop System: ASUSTeK product: ASUS TUF Gaming F15 FX507ZE_FX577ZE
    v: 1.0 serial: <superuser required>
  Mobo: ASUSTeK model: FX507ZE v: 1.0 serial: <superuser required>
    UEFI: American Megatrends LLC. v: FX507ZE.315 date: 06/17/2022
Battery:
  ID-1: BAT1 charge: 37.4 Wh (41.3%) condition: 90.6/90.2 Wh (100.4%)
    volts: 14.9 min: 15.9
CPU:
  Info: 14-core (6-mt/8-st) model: 12th Gen Intel Core i7-12700H bits: 64
    type: MST AMCP cache: L2: 11.5 MiB
  Speed (MHz): avg: 2496 min/max: 400/4600:4700:3500 cores: 1: 788 2: 2700
    3: 2700 4: 2700 5: 2700 6: 2700 7: 538 8: 2700 9: 2700 10: 2700 11: 2700
    12: 2700 13: 2700 14: 2700 15: 2700 16: 2700 17: 2700 18: 2700 19: 2700
    20: 2700
Graphics:
  Device-1: Intel Alder Lake-P Integrated Graphics driver: i915 v: kernel
  Device-2: NVIDIA GA107M [GeForce RTX 3050 Ti Mobile] driver: nvidia
    v: 525.60.11
  Device-3: Sonix USB2.0 HD UVC WebCam type: USB driver: uvcvideo
  Display: x11 server: X.Org v: 21.1.6 with: Xwayland v: 22.1.7 driver: X:
    loaded: modesetting,nvidia dri: iris gpu: i915 resolution: 1: 1920x1080~60Hz
    2: N/A
  API: OpenGL v: 4.6.0 NVIDIA 525.60.11 renderer: NVIDIA GeForce RTX 3050
    Ti Laptop GPU/PCIe/SSE2
Audio:
  Device-1: Intel Alder Lake PCH-P High Definition Audio driver: snd_hda_intel
  Device-2: NVIDIA driver: snd_hda_intel
  Device-3: ASUSTek C-Media Audio type: USB
    driver: hid-generic,snd-usb-audio,usbhid
  Sound API: ALSA v: k6.1.2-1-MANJARO running: yes
  Sound Server-1: PipeWire v: 0.3.63 running: yes
Network:
  Device-1: Intel Alder Lake-P PCH CNVi WiFi driver: iwlwifi
  IF: wlo1 state: up mac: <filter>
  Device-2: Intel Ethernet I219-LM driver: e1000e
  IF: eno2 state: down mac: <filter>
Bluetooth:
  Device-1: Intel AX201 Bluetooth type: USB driver: btusb
  Report: rfkill ID: hci0 rfk-id: 0 state: down bt-service: enabled,running
    rfk-block: hardware: no software: yes address: see --recommends
RAID:
  Hardware-1: Intel Volume Management Device NVMe RAID Controller driver: vmd
Drives:
  Local Storage: total: 5.01 TiB used: 82.55 GiB (1.6%)
  ID-1: /dev/nvme0n1 vendor: Intel model: SSDPEKNU512GZ size: 476.94 GiB
  ID-2: /dev/nvme1n1 vendor: Seagate model: FireCuda 520 SSD ZP1000GM30002
    size: 931.51 GiB
  ID-3: /dev/sda type: USB vendor: Western Digital model: WD40NMZW-11GX6S1
    size: 3.64 TiB
Partition:
  ID-1: / size: 931.21 GiB used: 82.55 GiB (8.9%) fs: btrfs dev: /dev/dm-0
  ID-2: /boot/efi size: 299.4 MiB used: 752 KiB (0.2%) fs: vfat
    dev: /dev/nvme1n1p1
  ID-3: /home size: 931.21 GiB used: 82.55 GiB (8.9%) fs: btrfs
    dev: /dev/dm-0
  ID-4: /var/log size: 931.21 GiB used: 82.55 GiB (8.9%) fs: btrfs
    dev: /dev/dm-0
Swap:
  Alert: No swap data was found.
Sensors:
  System Temperatures: cpu: 51.0 C mobo: N/A gpu: nvidia temp: 54 C
  Fan Speeds (RPM): cpu: 2100
Info:
  Processes: 412 Uptime: 20m Memory: 15.25 GiB used: 4.34 GiB (28.5%)
  Shell: fish inxi: 3.3.24

 !  wpkg  ~  mhwd -li                                                                                                                                                                                     544ms
> Installed PCI configs:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
     video-modesetting            2020.01.13                true            PCI
video-hybrid-intel-nvidia-prime            2021.11.04               false            PCI


Warning: No installed USB configs!
 wpkg  ~  mhwd -l                                                                                                                                                                                          561ms
> 0000:01:00.0 (0300:10de:25a0) Display controller nVidia Corporation:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
video-hybrid-intel-nvidia-prime            2021.11.04               false            PCI
video-hybrid-intel-nvidia-470xx-prime            2021.11.04               false            PCI
          video-nvidia            2021.11.04               false            PCI
    video-nvidia-470xx            2021.11.04               false            PCI
           video-linux            2018.05.04                true            PCI
     video-modesetting            2020.01.13                true            PCI
            video-vesa            2017.03.12                true            PCI


> 0000:00:02.0 (0300:8086:46a6) Display controller Intel Corporation:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
video-hybrid-intel-nvidia-prime            2021.11.04               false            PCI
video-hybrid-intel-nvidia-470xx-prime            2021.11.04               false            PCI
           video-linux            2018.05.04                true            PCI
     video-modesetting            2020.01.13                true            PCI
            video-vesa            2017.03.12                true            PCI


Setup:

I have a laptop which I commonly use connected to an external monitor and keep the in-built one disabled ~90% of the time.

External monitor: 1920x1080 60Hz
In-built: 1920x1080 144Hz

Issue:

I don’t have any additional software installed to switch graphics cards (such as envy-control etc.) and am happy to use prime-run to selectively push specific applications to Nvidia otherwise default to Intel on xorg.

  1. Using this setup, it causes random freezes on the external display when in-built + external are enabled.
  2. Works really well when only in-built screen is enabled.
  3. External screen runs on 1 FPS when in-built is disabled (confirmed with glxgears).

The only workaround I’ve found is to run xorg on Nvidia using reverse-prime as shown in PRIME - ArchWiki. This is a really good workaround, but at the cost of battery life.

I’ve looked around and this issue seems similar to what I face - 1-2 FPS in external screen with nvidia 525 drivers installed - #3 by jhakonen - Ask Fedora. Seems like one of the driver updates caused an issue as I remember it working well before.

Unfortunately, I can only give anecdotal evidence of this as I decided to switch from ext4 to btrfs and did a reinstall around that time.

Has anyone in the community found a workaround I might have missed?

see this

Yep, I already have this. There is a kernel panic if this option is not present on computers with Nvidia propreitary drivers from 5.19 (or close). Tried with and without nvidia-drm.modeset=1 too.

I also preload the following - i915 nvidia nvidia_modeset nvidia_uvm nvidia_drm.