Re: [V7 29/45] drm/colorop: Add PQ 125 EOTF and its inverse

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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:
>>  	 *
> 




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux