From 657ea3ebe661bd49bad9846d9c4a5b598aef8dc8 Mon Sep 17 00:00:00 2001 From: Geoffrey McRae Date: Sun, 19 Jul 2026 20:42:20 +1000 Subject: [PATCH] [idd] edid: advertise the full PQ luminance range The virtual display transports HDR pixels rather than emitting light. Advertise approximately 10,000 nits for both peak and frame-average luminance, and leave the physical black level unspecified. This prevents Windows from mapping HDR into an arbitrary virtual display limit before the frame reaches the real host display. --- idd/LGIdd/CEdid.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/idd/LGIdd/CEdid.cpp b/idd/LGIdd/CEdid.cpp index 5125bfec..48e7ce82 100644 --- a/idd/LGIdd/CEdid.cpp +++ b/idd/LGIdd/CEdid.cpp @@ -75,9 +75,15 @@ static const BYTE CTA_HDR_EOTF_TRADITIONAL_SDR = (BYTE)(1 << 0); static const BYTE CTA_HDR_EOTF_SMPTE_ST_2084 = (BYTE)(1 << 2); static const BYTE CTA_HDR_EOTF_HLG = (BYTE)(1 << 3); static const BYTE CTA_HDR_STATIC_METADATA_TYPE_1 = (BYTE)(1 << 0); -static const BYTE CTA_HDR_DESIRED_MAX_LUMINANCE = 138; -static const BYTE CTA_HDR_DESIRED_MAX_FRAME_AVG_LUMINANCE = 115; -static const BYTE CTA_HDR_DESIRED_MIN_LUMINANCE = 14; +// The virtual display is a transport rather than a physical light-emitting +// device. Advertise the complete PQ range so Windows preserves HDR content +// for the real host display instead of mapping it to an arbitrary virtual +// peak or frame-average limit. The maximum values encode approximately +// 10,000 cd/m^2, while zero leaves the nonexistent physical black level +// unspecified. +static const BYTE CTA_HDR_DESIRED_MAX_LUMINANCE = 245; +static const BYTE CTA_HDR_DESIRED_MAX_FRAME_AVG_LUMINANCE = 245; +static const BYTE CTA_HDR_DESIRED_MIN_LUMINANCE = 0; static const BYTE CTA_COLORIMETRY_OPYCC_601 = (BYTE)(1 << 3); static const BYTE CTA_COLORIMETRY_OPRGB = (BYTE)(1 << 4);