On 2025-01-17 04:04, Pekka Paalanen wrote: > On Thu, 19 Dec 2024 21:33:35 -0700 > Alex Hung <alex.hung@xxxxxxx> wrote: > >> From: Harry Wentland <harry.wentland@xxxxxxx> >> >> The PQ function defines a mapping of code values to nits (cd/m^2). >> The max code value maps to 10,000 nits. >> >> Windows DWM's canonical composition color space (CCCS) defaults >> to composing SDR contents to 80 nits and uses a float value of >> 1.0 to represent this. For this reason AMD HW hard-codes a PQ >> function that is scaled by 125, yielding 80 nit PQ values for >> 1.0 and 10,000 nits at 125.0. >> >> This patch introduces this scaled PQ EOTF and its inverse as >> 1D curve types. >> >> Signed-off-by: Alex Hung <alex.hung@xxxxxxx> >> Signed-off-by: Harry Wentland <harry.wentland@xxxxxxx> >> --- >> drivers/gpu/drm/drm_colorop.c | 2 ++ >> include/drm/drm_colorop.h | 21 ++++++++++++++++++++- >> 2 files changed, 22 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c >> index 7d4b29c0a0cc..f3391602a577 100644 >> --- a/drivers/gpu/drm/drm_colorop.c >> +++ b/drivers/gpu/drm/drm_colorop.c >> @@ -70,6 +70,8 @@ static const struct drm_prop_enum_list drm_colorop_type_enum_list[] = { >> static const char * const colorop_curve_1d_type_names[] = { >> [DRM_COLOROP_1D_CURVE_SRGB_EOTF] = "sRGB EOTF", >> [DRM_COLOROP_1D_CURVE_SRGB_INV_EOTF] = "sRGB Inverse EOTF", >> + [DRM_COLOROP_1D_CURVE_PQ_125_EOTF] = "PQ 125 EOTF", >> + [DRM_COLOROP_1D_CURVE_PQ_125_INV_EOTF] = "PQ 125 Inverse EOTF", >> }; >> >> >> diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h >> index e9f5c1adc2fe..4084a7438032 100644 >> --- a/include/drm/drm_colorop.h >> +++ b/include/drm/drm_colorop.h >> @@ -36,7 +36,6 @@ >> * enum drm_colorop_curve_1d_type - type of 1D curve >> * >> * Describes a 1D curve to be applied by the DRM_COLOROP_1D_CURVE colorop. >> - * >> */ >> enum drm_colorop_curve_1d_type { >> /** >> @@ -56,6 +55,26 @@ enum drm_colorop_curve_1d_type { >> */ >> DRM_COLOROP_1D_CURVE_SRGB_INV_EOTF, >> >> + /** >> + * @DRM_COLOROP_1D_CURVE_PQ_125_EOTF: >> + * >> + * The PQ transfer function, scaled by 125.0f, so that 10,000 >> + * nits correspond to 125.0f. >> + * >> + * Transfer characteristics of the PQ function as defined by >> + * SMPTE ST 2084 (2014) for 10-, 12-, 14-, and 16-bit systems >> + * and Rec. ITU-R BT.2100-2 perceptual quantization (PQ) system. >> + * Equivalent to H.273 TransferCharacteristics code point 16. >> + */ > > Hi, > > this all good, I'd just clarify a minor detail. > > H.273 code point 16 defines the normalised formula > TF: [0.0, 1.0] -> [0.0, 1.0] > so it is not equivalent to the 125-scaled version. > > Maybe you meant something like this? > > + * Transfer characteristics of the PQ function as defined by > + * SMPTE ST 2084 (2014) for 10-, 12-, 14-, and 16-bit systems > + * and Rec. ITU-R BT.2100-2 perceptual quantization (PQ) system, > + * represented by H.273 TransferCharacteristics code point 16. > Right, and thanks for the clarification. Harry > > Thanks, > pq > > >> + DRM_COLOROP_1D_CURVE_PQ_125_EOTF, >> + >> + /** >> + * @DRM_COLOROP_1D_CURVE_PQ_125_INV_EOTF: >> + * >> + * The inverse of DRM_COLOROP_1D_CURVE_PQ_125_EOTF. >> + */ >> + DRM_COLOROP_1D_CURVE_PQ_125_INV_EOTF, >> + >> /** >> * @DRM_COLOROP_1D_CURVE_COUNT: >> * >