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. 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: > *
Attachment:
pgpoeRjizEtKq.pgp
Description: OpenPGP digital signature