All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pekka Paalanen <pekka.paalanen@haloniitty.fi>
To: Alex Hung <alex.hung@amd.com>
Cc: <dri-devel@lists.freedesktop.org>,
	<amd-gfx@lists.freedesktop.org>,
	<wayland-devel@lists.freedesktop.org>, <harry.wentland@amd.com>
Subject: Re: [V7 29/45] drm/colorop: Add PQ 125 EOTF and its inverse
Date: Fri, 17 Jan 2025 11:04:01 +0200	[thread overview]
Message-ID: <20250117110401.446619e7@eldfell> (raw)
In-Reply-To: <20241220043410.416867-30-alex.hung@amd.com>

[-- Attachment #1: Type: text/plain, Size: 3289 bytes --]

On Thu, 19 Dec 2024 21:33:35 -0700
Alex Hung <alex.hung@amd.com> wrote:

> From: Harry Wentland <harry.wentland@amd.com>
> 
> 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@amd.com>
> Signed-off-by: Harry Wentland <harry.wentland@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 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 #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  parent reply	other threads:[~2025-01-17  9:04 UTC|newest]

Thread overview: 127+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-20  4:33 [V7 00/45] Color Pipeline API w/ VKMS Alex Hung
2024-12-20  4:33 ` [V7 01/45] drm: Add helper for conversion from signed-magnitude Alex Hung
2025-02-24 16:07   ` Louis Chauvet
2025-02-24 18:50     ` Alex Hung
2025-02-25  9:35       ` Louis Chauvet
2024-12-20  4:33 ` [V7 02/45] drm/vkms: Round fixp2int conversion in lerp_u16 Alex Hung
2025-02-24 16:07   ` Louis Chauvet
2025-02-25  9:37   ` Louis Chauvet
2025-02-25 11:28     ` Simon Ser
2025-02-25 14:05       ` Louis Chauvet
2025-02-25 14:43         ` Harry Wentland
2025-02-25 14:45           ` Simon Ser
2025-02-25 16:00             ` Louis Chauvet
2024-12-20  4:33 ` [V7 03/45] drm/vkms: Add kunit tests for VKMS LUT handling Alex Hung
2025-02-24 16:07   ` Louis Chauvet
2025-02-25  9:51   ` Louis Chauvet
2025-02-25 14:45     ` Harry Wentland
2024-12-20  4:33 ` [V7 04/45] drm/doc/rfc: Describe why prescriptive color pipeline is needed Alex Hung
2024-12-20  4:33 ` [V7 05/45] drm/colorop: Introduce new drm_colorop mode object Alex Hung
2025-01-13  8:04   ` Simon Ser
2025-02-24 16:07   ` Louis Chauvet
2025-02-25 10:05   ` Louis Chauvet
2025-02-28 15:55     ` Harry Wentland
2024-12-20  4:33 ` [V7 06/45] drm/colorop: Add TYPE property Alex Hung
2025-01-13  8:05   ` Simon Ser
2025-02-24 16:07   ` Louis Chauvet
2025-02-25 10:07   ` Louis Chauvet
2024-12-20  4:33 ` [V7 07/45] drm/colorop: Add 1D Curve subtype Alex Hung
2025-01-13  8:07   ` Simon Ser
2025-02-24 16:07   ` Louis Chauvet
2025-02-25 10:13   ` Louis Chauvet
2025-02-28  1:07     ` Alex Hung
2025-02-28  9:24       ` Louis Chauvet
2024-12-20  4:33 ` [V7 08/45] Documentation/gpu: document drm_colorop Alex Hung
2025-01-13  8:18   ` Simon Ser
2025-02-10 22:03     ` Harry Wentland
2025-02-15 14:40       ` Simon Ser
2025-02-21 16:18         ` Harry Wentland
2025-02-21 16:42           ` Simon Ser
2025-02-21 18:41             ` Harry Wentland
2025-02-21 18:48               ` Simon Ser
2024-12-20  4:33 ` [V7 09/45] drm/colorop: Add BYPASS property Alex Hung
2025-01-13 17:49   ` Simon Ser
2025-02-24 16:07   ` Louis Chauvet
2025-02-25 10:15   ` Louis Chauvet
2024-12-20  4:33 ` [V7 10/45] drm/colorop: Add NEXT property Alex Hung
2025-01-13 17:54   ` Simon Ser
2025-02-24 16:07   ` Louis Chauvet
2025-02-25 10:21   ` Louis Chauvet
2024-12-20  4:33 ` [V7 11/45] drm/colorop: Add atomic state print for drm_colorop Alex Hung
2025-01-13 17:55   ` Simon Ser
2024-12-20  4:33 ` [V7 12/45] drm/plane: Add COLOR PIPELINE property Alex Hung
2025-01-13 18:08   ` Simon Ser
2024-12-20  4:33 ` [V7 13/45] drm/colorop: Introduce DRM_CLIENT_CAP_PLANE_COLOR_PIPELINE Alex Hung
2025-01-13 18:23   ` Simon Ser
2025-01-22 19:48     ` Harry Wentland
2025-01-22 20:05       ` Simon Ser
2024-12-20  4:33 ` [V7 14/45] drm/vkms: Add enumerated 1D curve colorop Alex Hung
2025-02-25 11:18   ` Louis Chauvet
2025-03-10 19:43     ` Harry Wentland
2024-12-20  4:33 ` [V7 15/45] drm/vkms: Add kunit tests for linear and sRGB LUTs Alex Hung
2025-02-25 11:19   ` Louis Chauvet
2025-03-10 15:09     ` Harry Wentland
2024-12-20  4:33 ` [V7 16/45] drm/colorop: Add 3x4 CTM type Alex Hung
2025-01-13 18:19   ` Simon Ser
2025-02-25 11:20   ` Louis Chauvet
2024-12-20  4:33 ` [V7 17/45] drm/vkms: Use s32 for internal color pipeline precision Alex Hung
2024-12-20  4:33 ` [V7 18/45] drm/vkms: add 3x4 matrix in color pipeline Alex Hung
2025-02-25 11:21   ` Louis Chauvet
2024-12-20  4:33 ` [V7 19/45] drm/tests: Add a few tests around drm_fixed.h Alex Hung
2024-12-20  4:33 ` [V7 20/45] drm/vkms: Add tests for CTM handling Alex Hung
2024-12-20  4:33 ` [V7 21/45] drm/colorop: pass plane_color_pipeline client cap to atomic check Alex Hung
2024-12-20  4:33 ` [V7 22/45] drm/colorop: define a new macro for_each_new_colorop_in_state Alex Hung
2025-01-15  7:48   ` Simon Ser
2024-12-20  4:33 ` [V7 23/45] drm/amd/display: Ignore deprecated props when plane_color_pipeline set Alex Hung
2025-01-15  7:56   ` Simon Ser
2025-01-22 21:05     ` Harry Wentland
2025-01-23 20:29       ` Simon Ser
2024-12-20  4:33 ` [V7 24/45] drm/amd/display: Add bypass COLOR PIPELINE Alex Hung
2024-12-20  4:33 ` [V7 25/45] drm/amd/display: Skip color pipeline initialization for cursor plane Alex Hung
2024-12-20  4:33 ` [V7 26/45] drm/amd/display: Add support for sRGB EOTF in DEGAM block Alex Hung
2025-02-13 15:35   ` Leo Li
2024-12-20  4:33 ` [V7 27/45] drm/amd/display: Add support for sRGB Inverse EOTF in SHAPER block Alex Hung
2024-12-20  4:33 ` [V7 28/45] drm/amd/display: Add support for sRGB EOTF in BLND block Alex Hung
2024-12-20  4:33 ` [V7 29/45] drm/colorop: Add PQ 125 EOTF and its inverse Alex Hung
2025-01-15  8:00   ` Simon Ser
2025-01-23 20:06     ` Harry Wentland
2025-01-23 20:33       ` Simon Ser
2025-01-17  9:04   ` Pekka Paalanen [this message]
2025-01-23 20:09     ` Harry Wentland
2024-12-20  4:33 ` [V7 30/45] drm/amd/display: Enable support for PQ 125 EOTF and Inverse Alex Hung
2024-12-20  4:33 ` [V7 31/45] drm/colorop: add BT2020/BT709 OETF and Inverse OETF Alex Hung
2025-01-15  8:04   ` Simon Ser
2025-01-23 20:13     ` Harry Wentland
2025-01-16  8:56   ` Pekka Paalanen
2025-01-17  9:06     ` Pekka Paalanen
2025-01-23 20:16       ` Harry Wentland
2025-01-27 12:05         ` Pekka Paalanen
2024-12-20  4:33 ` [V7 32/45] drm/amd/display: Add support for BT.709 and BT.2020 TFs Alex Hung
2025-02-12 23:03   ` Leo Li
2024-12-20  4:33 ` [V7 33/45] drm/colorop: Add 1D Curve Custom LUT type Alex Hung
2025-01-15  8:14   ` Simon Ser
2025-01-16 23:33     ` Alex Hung
2025-01-18 13:54       ` Simon Ser
2025-01-15 15:48   ` Simon Ser
2024-12-20  4:33 ` [V7 34/45] drm/amd/display: add shaper and blend colorops for 1D Curve Custom LUT Alex Hung
2025-02-12 23:44   ` Leo Li
2025-02-21 16:28     ` Harry Wentland
2024-12-20  4:33 ` [V7 35/45] drm/amd/display: add 3x4 matrix colorop Alex Hung
2025-02-13 17:16   ` Leo Li
2024-12-20  4:33 ` [V7 36/45] drm/colorop: Add mutliplier type Alex Hung
2025-01-15 15:54   ` Simon Ser
2024-12-20  4:33 ` [V7 37/45] drm/amd/display: add multiplier colorop Alex Hung
2024-12-20  4:33 ` [V7 38/45] drm/amd/display: Swap matrix and multiplier Alex Hung
2024-12-20  4:33 ` [V7 39/45] drm/colorop: Define LUT_1D interpolation Alex Hung
2025-01-20  7:48   ` Simon Ser
2024-12-20  4:33 ` [V7 40/45] drm/colorop: allow non-bypass colorops Alex Hung
2024-12-20  4:33 ` [V7 41/45] drm/colorop: Add 3D LUT supports to color pipeline Alex Hung
2025-01-20 21:16   ` Simon Ser
2024-12-20  4:33 ` [V7 42/45] drm/amd/display: add 3D LUT colorop Alex Hung
2025-02-13 18:21   ` Leo Li
2025-02-21 21:05     ` Harry Wentland
2024-12-20  4:33 ` [V7 43/45] drm/amd/display: Add AMD color pipeline doc Alex Hung
2025-01-17  9:19   ` Pekka Paalanen
2025-01-23 20:52     ` Harry Wentland
2024-12-20  4:33 ` [V7 44/45] drm/colorop: Add kernel doc for data blob Alex Hung
2024-12-20  4:33 ` [V7 45/45] drm/colorop: Add destroy functions for color pipeline Alex Hung

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250117110401.446619e7@eldfell \
    --to=pekka.paalanen@haloniitty.fi \
    --cc=alex.hung@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=harry.wentland@amd.com \
    --cc=wayland-devel@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.