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: Harry Wentland <harry.wentl...@amd.com>
---
 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 a995a0e25a34..6e1d733ca50c 100644
--- a/drivers/gpu/drm/drm_colorop.c
+++ b/drivers/gpu/drm/drm_colorop.c
@@ -69,6 +69,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 edad9c579781..f0cd4cbdd99e 100644
--- a/include/drm/drm_colorop.h
+++ b/include/drm/drm_colorop.h
@@ -35,7 +35,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 {
        /**
@@ -55,6 +54,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.
+        */
+       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:
         *
-- 
2.46.2

Reply via email to