@ -394,7 +394,9 @@ ColorDescription DrmOutput::createColorDescription(const std::shared_ptr<OutputC
const double maxPeakBrightness = effectiveHdr ? props - > maxPeakBrightnessOverride . value_or ( m_state . maxPeakBrightnessOverride ) . value_or ( m_connector - > edid ( ) - > desiredMaxLuminance ( ) . value_or ( 800 ) ) : 200 ;
const double referenceLuminance = effectiveHdr ? props - > referenceLuminance . value_or ( m_state . referenceLuminance ) : maxPeakBrightness ;
const auto transferFunction = TransferFunction { effectiveHdr ? TransferFunction : : PerceptualQuantizer : TransferFunction : : gamma22 } . relativeScaledTo ( referenceLuminance ) ;
const double minBrightness = effectiveHdr ? props - > minBrightnessOverride . value_or ( m_state . minBrightnessOverride ) . value_or ( m_connector - > edid ( ) - > desiredMinLuminance ( ) ) : transferFunction . minLuminance ;
// HDR screens are weird, sending them the min. luminance from the EDID does *not* make all of them present the darkest luminance the display can show
// to work around that, (unless overridden by the user), assume the min. luminance of the transfer function instead
const double minBrightness = effectiveHdr ? props - > minBrightnessOverride . value_or ( m_state . minBrightnessOverride ) . value_or ( TransferFunction : : defaultMinLuminanceFor ( TransferFunction : : PerceptualQuantizer ) ) : transferFunction . minLuminance ;
return ColorDescription ( containerColorimetry , transferFunction , referenceLuminance , minBrightness , maxAverageBrightness , maxPeakBrightness , masteringColorimetry , sdrColorimetry ) ;
}