NVIDIA / NVIDIA/open-gpu-kernel-modules

Force-enabled virtual connector won't bring up FRL — capped at 4K60 despite EDID Max_FRL_Rate=6 (blocks headless 4K120 Sunshine/Moonlight)

Open
#1,184 4 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
17.4k
Forks
1.9k
PR merge metrics
No merged PRs in 30d

Description

Hey I've been relentlessly trying to get 4k 120hz to work on sunshine / moonlight with the latest version of cachyos. I've tried overything but buying a 4k120hz monitor to stub the monitor. All virtual monitor solutions seem borked on the nvidia side sadly. Please may someone look at this. Heres my 3 hours of clauding summary:

Setup: RTX 3060 Ti on nvidia-open 610.43.02, CachyOS, KDE Plasma 6.6 on Wayland, kernel 7.x. The goal is a headless virtual display so I can stream 4K120 HDR to a Mac over Moonlight with nothing physically plugged into the GPU.

What works: I can force a virtual display with drm.edid_firmware + video=HDMI-A-1:e and a custom EDID, and SDR up to 4K60 is fine. I even got HDR working, but only on the HDMI connector and only with a real, well-formed EDID (a dumped AOC monitor EDID). HDR enable gets rejected on DisplayPort, and it's also rejected with a hand-built EDID even on HDMI. So the driver does honor HDR signaling as long as the sink descriptor looks real enough.

What doesn't work: 4K120. No matter what I do the forced connector caps at 4K60. The reason seems to be that 4K120 needs FRL (HDMI 2.1) or DSC, and the driver won't bring either up unless there's a real sink doing the SCDC/DPCD handshake.

The bit that makes me think this is a driver policy rather than a real limit: I fed it an EDID that declares Max_FRL_Rate=6 (48 Gbps) with VIC 118 (3840x2160@120) in the normal RGB video data block. edid-decode validates it as clean, and the kernel reads it back fine:

cat /sys/class/drm/card1-HDMI-A-1/edid | edid-decode
...
Max Fixed Rate Link: 3 and 6 Gbps per lane on 3 lanes, 6, 8, 10 and 12 Gbps on 4 lanes

Despite that, the driver only ever offers 3840x2160@50/59/60 and prunes 4K120. So it isn't the EDID being malformed; the driver is reading the FRL declaration and still refusing to bring up the high-bandwidth link because nothing is physically attached.

For comparison, gamescope --backend headless renders 4K120 (and HDR) totally fine with no connector involved at all, so the GPU and encoder can clearly do it. And amdgpu doesn't have this restriction for virtual displays. So it really looks specific to NVIDIA's connector mode validation.

The ask: for headless / virtual-display streaming, could the driver honor an EDID-declared FRL/DSC capability on a force-enabled connector, or expose some way to set the virtual connector's max link rate? Right now the only route to 4K120 (HDR or SDR) is to physically plug a display in, which defeats the whole point of a headless streaming box.

Happy to share the EDIDs, full logs, or run any test that would help.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the forced connector setup with drm.edid_firmware and video=HDMI-A-1:e, then inspect /sys/class/drm/card1-HDMI-A-1/edid with edid-decode while checking which modes are offered. Compare the declared Max_FRL_Rate=6 and VIC 118 against the pruned modes. Done means a force-enabled virtual connector exposes 3840x2160@120 without a physical sink.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, linux
Domain
computer-graphics, operating-systems
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.