dp: scope virtual sink caps to forced connectors#1196
Conversation
|
@HarryAnkers I opened this as a narrower variant of the DP virtual-sink approach from #1195. The main difference is scoping: instead of using fake DPCD/DSC/FEC/HDR capabilities for any failed DPCD caps read, this only enables them when NVKMS is handling a force-connected DPLib connector with no plugged DP device. The goal is to preserve the 4K120/HDR headless DP behavior you validated, while keeping normal physical DP sink behavior on the existing path. If you can test this branch on the same setup, the key checks would be whether 3840x2160@120 appears/sets, HDR enables, and your physical DP monitor regression check still behaves normally. |
|
Gave this a test on my headless setup (RTX 3060 Ti, 610.43.02, kernel 7.0.11, KDE Wayland), stacked on top of #1186, with DP-2 force-enabled via Happy to say it works, same result I got from #1195 but with your tighter scoping:
I'm glad to close #1195 in favour of this one, your version is the right shape for review. Thanks for tightening it up. |
|
@HarryAnkers thanks for testing this on the same setup and for checking the physical DP monitor path too. I updated the PR description with your validation details. The key result for review is that the force-enabled DP virtual sink path gets 3840x2160@119.88, HDR/WCG, and DSC Mode = SINGLE, while the real DP monitor on DP-3 stays on the normal physical-sink behavior. That was the intended scoping difference from #1195. |
Summary
This is a scoped variant of the DP headless/virtual-display approach discussed in #1195. The goal is to support force-enabled DP connectors with EDID overrides for headless Sunshine/Moonlight-style streaming, while keeping the fake capability path limited to the explicit force-connected virtual sink case.
Why
PR #1195 reports successful hardware validation for a force-enabled DP connector with no physical sink, but its current implementation falls back to fake DPCD caps on any failed caps read. That fixes the headless case, but it may be broader than necessary for physical DP sinks with transient AUX failures.
This version threads an explicit virtual-sink fallback state from the pRequest->forceConnected + unplugged DPLib path into the DP library, and gates the fake DPCD/DSC/FEC/VSC colorimetry behavior on that state.
Testing
Reporter validation from #1196 / #1195 discussion:
Related to #1195 and #1184.