Skip to content

Commit e91a9fb

Browse files
committed
displayport: fall through to DSC when MST generic check fails at intermediate hops
The PBN pre-check only validates local (source) link bandwidth before skipping DSC. In MST daisy-chain or hub topologies, an intermediate branch link may have fewer timeslots than the local link. When compoundQueryAttachMSTGeneric fails at an intermediate branch, the mode is rejected without trying DSC — but DSC compression would reduce the PBN enough to fit through the bottleneck. Instead of returning the generic result directly, check if it succeeded: if so, return true (DSC unnecessary). If not, fall through to the DSC path which tries 10 bpp then 8 bpp max compression as fallback. Signed-off-by: Cole Leavitt <cole@unwrap.rs>
1 parent f77ad61 commit e91a9fb

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

src/common/displayport/src/dp_connectorimpl.cpp

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1417,20 +1417,27 @@ bool ConnectorImpl::compoundQueryAttachMST(Group * target,
14171417
unsigned base_pbn, slots, slots_pbn;
14181418
localInfo.lc.pbnRequired(localInfo.localModesetInfo,
14191419
base_pbn, slots, slots_pbn);
1420-
14211420
if (compoundQueryLocalLinkPBN + slots_pbn <=
14221421
localInfo.lc.pbnTotal())
14231422
{
14241423
//
14251424
// The uncompressed mode fits within available local link PBN.
1426-
// Skip the DSC path and proceed directly to the full generic
1427-
// validation (watermark, per-device bandwidth). If the generic
1428-
// check fails for non-bandwidth reasons, the mode is not
1429-
// supportable regardless of DSC.
1425+
// Try the full generic validation (watermark, per-device
1426+
// bandwidth at intermediate MST branches). If it succeeds,
1427+
// DSC is unnecessary.
1428+
//
1429+
if (compoundQueryAttachMSTGeneric(target, modesetParams,
1430+
&localInfo, pDscParams,
1431+
pErrorCode))
1432+
{
1433+
return true;
1434+
}
1435+
//
1436+
// Generic validation failed — possibly due to insufficient
1437+
// bandwidth at an intermediate MST branch link. DSC can
1438+
// reduce PBN enough to fit through the bottleneck, so fall
1439+
// through to the DSC path below.
14301440
//
1431-
return compoundQueryAttachMSTGeneric(target, modesetParams,
1432-
&localInfo, pDscParams,
1433-
pErrorCode);
14341441
}
14351442
}
14361443

0 commit comments

Comments
 (0)