diff mbox series

[3/3] drm/i915/icl: Fixed Input CSC Co-efficients for BT601/709

Message ID 1557429108-8004-4-git-send-email-uma.shankar@intel.com (mailing list archive)
State New, archived
Headers show
Series Extend BT2020 support in iCSC and fixes | expand

Commit Message

Shankar, Uma May 9, 2019, 7:11 p.m. UTC
Input CSC Co-efficients for BT601 and BT709 YCbCR to RGB
conversion were slightly off. Fixed the same.

Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
 drivers/gpu/drm/i915/intel_sprite.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

Comments

Ville Syrjälä May 9, 2019, 7:24 p.m. UTC | #1
On Fri, May 10, 2019 at 12:41:48AM +0530, Uma Shankar wrote:
> Input CSC Co-efficients for BT601 and BT709 YCbCR to RGB
> conversion were slightly off. Fixed the same.
> 
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_sprite.c | 24 ++++++++++++------------
>  1 file changed, 12 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index c9c970f..1239457 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -430,7 +430,7 @@ int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state)
>  		 */
>  		[DRM_COLOR_YCBCR_BT709] = {
>  			0x7C98, 0x7800, 0x0,
> -			0x9EF8, 0x7800, 0xABF8,
> +			0x9EF8, 0x7800, 0xAC00,
>  			0x0, 0x7800,  0x7ED8,
>  		},
>  		/*
> @@ -453,25 +453,25 @@ int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state)
>  		 * BT.601 Limted range YCbCr -> full range RGB
>  		 * The matrix required is :
>  		 * [1.164384, 0.000, 1.596370,
> -		 *  1.138393, -0.382500, -0.794598,
> -		 *  1.138393, 1.971696, 0.0000]
> +		 *  1.164384, -0.382500, -0.794598,
> +		 *  1.164384, 1.971696, 0.0000]

Still not quite what I'm getting here:
1.164384  0.000000  1.596027
1.164384 -0.391762 -0.812968
1.164384  2.017232  0.000000

>  		 */
>  		[DRM_COLOR_YCBCR_BT601] = {
> -			0x7CC8, 0x7950, 0x0,
> -			0x8CB8, 0x7918, 0x9C40,
> -			0x0, 0x7918, 0x7FC8,
> +			0x7C80, 0x7950, 0x0,
> +			0x8CB8, 0x7950, 0x9C40,
> +			0x0, 0x7950, 0x7FC8,
>  		},
>  		/*
>  		 * BT.709 Limited range YCbCr -> full range RGB
>  		 * The matrix required is :
> -		 * [1.164, 0.000, 1.833671,
> -		 *  1.138393, -0.213249, -0.532909,
> -		 *  1.138393, 2.112402, 0.0000]
> +		 * [1.164384, 0.000, 1.792741,
> +		 *  1.164384, -0.213249, -0.532909,
> +		 *  1.164384, 2.112402, 0.0000]
>  		 */

This one matches what I'm getting.

>  		[DRM_COLOR_YCBCR_BT709] = {
> -			0x7EA8, 0x7950, 0x0,
> -			0x8888, 0x7918, 0xADA8,
> -			0x0, 0x7918,  0x6870,
> +			0x7E58, 0x7950, 0x0,
> +			0x8888, 0x7950, 0xADA8,
> +			0x0, 0x7950,  0x6870,
>  		},
>  		/*
>  		 * BT.2020 Limited range YCbCr -> full range RGB
> -- 
> 1.9.1
Shankar, Uma May 9, 2019, 7:37 p.m. UTC | #2
>-----Original Message-----
>From: Ville Syrjälä [mailto:ville.syrjala@linux.intel.com]
>Sent: Friday, May 10, 2019 12:54 AM
>To: Shankar, Uma <uma.shankar@intel.com>
>Cc: intel-gfx@lists.freedesktop.org; maarten.lankhorst@linux.intel.com; Sharma,
>Shashank <shashank.sharma@intel.com>
>Subject: Re: [PATCH 3/3] drm/i915/icl: Fixed Input CSC Co-efficients for BT601/709
>
>On Fri, May 10, 2019 at 12:41:48AM +0530, Uma Shankar wrote:
>> Input CSC Co-efficients for BT601 and BT709 YCbCR to RGB conversion
>> were slightly off. Fixed the same.
>>
>> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
>> ---
>>  drivers/gpu/drm/i915/intel_sprite.c | 24 ++++++++++++------------
>>  1 file changed, 12 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_sprite.c
>> b/drivers/gpu/drm/i915/intel_sprite.c
>> index c9c970f..1239457 100644
>> --- a/drivers/gpu/drm/i915/intel_sprite.c
>> +++ b/drivers/gpu/drm/i915/intel_sprite.c
>> @@ -430,7 +430,7 @@ int intel_plane_check_src_coordinates(struct
>intel_plane_state *plane_state)
>>  		 */
>>  		[DRM_COLOR_YCBCR_BT709] = {
>>  			0x7C98, 0x7800, 0x0,
>> -			0x9EF8, 0x7800, 0xABF8,
>> +			0x9EF8, 0x7800, 0xAC00,
>>  			0x0, 0x7800,  0x7ED8,
>>  		},
>>  		/*
>> @@ -453,25 +453,25 @@ int intel_plane_check_src_coordinates(struct
>intel_plane_state *plane_state)
>>  		 * BT.601 Limted range YCbCr -> full range RGB
>>  		 * The matrix required is :
>>  		 * [1.164384, 0.000, 1.596370,
>> -		 *  1.138393, -0.382500, -0.794598,
>> -		 *  1.138393, 1.971696, 0.0000]
>> +		 *  1.164384, -0.382500, -0.794598,
>> +		 *  1.164384, 1.971696, 0.0000]
>
>Still not quite what I'm getting here:
>1.164384  0.000000  1.596027
>1.164384 -0.391762 -0.812968
>1.164384  2.017232  0.000000

Hmm yeah, the reference matrix I used earlier is not accurate it seems. With
igt_color_encoding I am getting what you get here. Will update and resend.


>>  		 */
>>  		[DRM_COLOR_YCBCR_BT601] = {
>> -			0x7CC8, 0x7950, 0x0,
>> -			0x8CB8, 0x7918, 0x9C40,
>> -			0x0, 0x7918, 0x7FC8,
>> +			0x7C80, 0x7950, 0x0,
>> +			0x8CB8, 0x7950, 0x9C40,
>> +			0x0, 0x7950, 0x7FC8,
>>  		},
>>  		/*
>>  		 * BT.709 Limited range YCbCr -> full range RGB
>>  		 * The matrix required is :
>> -		 * [1.164, 0.000, 1.833671,
>> -		 *  1.138393, -0.213249, -0.532909,
>> -		 *  1.138393, 2.112402, 0.0000]
>> +		 * [1.164384, 0.000, 1.792741,
>> +		 *  1.164384, -0.213249, -0.532909,
>> +		 *  1.164384, 2.112402, 0.0000]
>>  		 */
>
>This one matches what I'm getting.
>
>>  		[DRM_COLOR_YCBCR_BT709] = {
>> -			0x7EA8, 0x7950, 0x0,
>> -			0x8888, 0x7918, 0xADA8,
>> -			0x0, 0x7918,  0x6870,
>> +			0x7E58, 0x7950, 0x0,
>> +			0x8888, 0x7950, 0xADA8,
>> +			0x0, 0x7950,  0x6870,
>>  		},
>>  		/*
>>  		 * BT.2020 Limited range YCbCr -> full range RGB
>> --
>> 1.9.1
>
>--
>Ville Syrjälä
>Intel
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index c9c970f..1239457 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -430,7 +430,7 @@  int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state)
 		 */
 		[DRM_COLOR_YCBCR_BT709] = {
 			0x7C98, 0x7800, 0x0,
-			0x9EF8, 0x7800, 0xABF8,
+			0x9EF8, 0x7800, 0xAC00,
 			0x0, 0x7800,  0x7ED8,
 		},
 		/*
@@ -453,25 +453,25 @@  int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state)
 		 * BT.601 Limted range YCbCr -> full range RGB
 		 * The matrix required is :
 		 * [1.164384, 0.000, 1.596370,
-		 *  1.138393, -0.382500, -0.794598,
-		 *  1.138393, 1.971696, 0.0000]
+		 *  1.164384, -0.382500, -0.794598,
+		 *  1.164384, 1.971696, 0.0000]
 		 */
 		[DRM_COLOR_YCBCR_BT601] = {
-			0x7CC8, 0x7950, 0x0,
-			0x8CB8, 0x7918, 0x9C40,
-			0x0, 0x7918, 0x7FC8,
+			0x7C80, 0x7950, 0x0,
+			0x8CB8, 0x7950, 0x9C40,
+			0x0, 0x7950, 0x7FC8,
 		},
 		/*
 		 * BT.709 Limited range YCbCr -> full range RGB
 		 * The matrix required is :
-		 * [1.164, 0.000, 1.833671,
-		 *  1.138393, -0.213249, -0.532909,
-		 *  1.138393, 2.112402, 0.0000]
+		 * [1.164384, 0.000, 1.792741,
+		 *  1.164384, -0.213249, -0.532909,
+		 *  1.164384, 2.112402, 0.0000]
 		 */
 		[DRM_COLOR_YCBCR_BT709] = {
-			0x7EA8, 0x7950, 0x0,
-			0x8888, 0x7918, 0xADA8,
-			0x0, 0x7918,  0x6870,
+			0x7E58, 0x7950, 0x0,
+			0x8888, 0x7950, 0xADA8,
+			0x0, 0x7950,  0x6870,
 		},
 		/*
 		 * BT.2020 Limited range YCbCr -> full range RGB