Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion for BT2020 case

2019-05-09 Thread Shankar, Uma


>-Original Message-
>From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>Sent: Thursday, May 9, 2019 9:00 PM
>To: Shankar, Uma 
>Cc: Sharma, Shashank ; intel-
>g...@lists.freedesktop.org
>Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion 
>for
>BT2020 case
>
>On Thu, May 09, 2019 at 03:08:40PM +, Shankar, Uma wrote:
>>
>>
>> >-Original Message-
>> >From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>> >Sent: Thursday, May 9, 2019 8:28 PM
>> >To: Shankar, Uma 
>> >Cc: Sharma, Shashank ; intel-
>> >g...@lists.freedesktop.org
>> >Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB
>> >conversion for
>> >BT2020 case
>> >
>> >On Thu, May 09, 2019 at 02:54:19PM +, Shankar, Uma wrote:
>> >>
>> >>
>> >> >-Original Message-
>> >> >From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>> >> >Sent: Tuesday, May 7, 2019 9:08 PM
>> >> >To: Shankar, Uma 
>> >> >Cc: Sharma, Shashank ; intel-
>> >> >g...@lists.freedesktop.org
>> >> >Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB
>> >> >conversion for
>> >> >BT2020 case
>> >> >
>> >> >On Tue, May 07, 2019 at 02:35:15PM +, Shankar, Uma wrote:
>> >> >>
>> >> >>
>> >> >> >-Original Message-
>> >> >> >From: Intel-gfx
>> >> >> >[mailto:intel-gfx-boun...@lists.freedesktop.org]
>> >> >> >On Behalf Of Ville Syrjälä
>> >> >> >Sent: Tuesday, May 7, 2019 7:37 PM
>> >> >> >To: Sharma, Shashank 
>> >> >> >Cc: intel-gfx@lists.freedesktop.org
>> >> >> >Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to
>> >> >> >RGB conversion for
>> >> >> >BT2020 case
>> >> >> >
>> >> >> >On Tue, May 07, 2019 at 06:32:57PM +0530, Shashank Sharma wrote:
>> >> >> >> From: Uma Shankar 
>> >> >> >>
>> >> >> >> Currently input csc for YCbCR to RGB conversion handles only
>> >> >> >> BT601 and Bt709. Extending it to support BT2020 as well.
>> >> >> >>
>> >> >> >> Signed-off-by: Uma Shankar 
>> >> >> >> Signed-off-by: Shashank Sharma 
>> >> >> >> ---
>> >> >> >>  drivers/gpu/drm/i915/intel_sprite.c | 24
>> >> >> >> 
>> >> >> >>  1 file changed, 24 insertions(+)
>> >> >> >>
>> >> >> >> diff --git a/drivers/gpu/drm/i915/intel_sprite.c
>> >> >> >> b/drivers/gpu/drm/i915/intel_sprite.c
>> >> >> >> index 44aaeac1b2ed..2536e757bec2 100644
>> >> >> >> --- a/drivers/gpu/drm/i915/intel_sprite.c
>> >> >> >> +++ b/drivers/gpu/drm/i915/intel_sprite.c
>> >> >> >> @@ -433,6 +433,18 @@ icl_program_input_csc(struct intel_plane 
>> >> >> >> *plane,
>> >> >> >> 0x9EF8, 0x7800, 0xABF8,
>> >> >> >> 0x0, 0x7800,  0x7ED8,
>> >> >> >> },
>> >> >> >> +   /*
>> >> >> >> +* BT.2020 full range YCbCr -> full range RGB
>> >> >> >> +* The matrix required is :
>> >> >> >> +* [1.000, 0.000, 1.474,
>> >> >> >> +*  1.000, -0.1645, -0.5713,
>> >> >> >> +*  1.000, 1.8814, 0.]
>> >> >> >> +*/
>> >> >> >> +   [DRM_COLOR_YCBCR_BT2020] = {
>> >> >> >> +   0x7BC8, 0x7800, 0x0,
>> >> >> >> +   0x8928, 0x7800, 0xAA88,
>> >> >> >> +   0x0, 0x7800, 0x7F10,
>> >> >> >> +   },
>> >> >> >> };
>> >> >> >>
>> >> >> >> /* Matrix for Limited Range to Full Range Conversion */ @@
>> >> >> >> -461,6
>> >> >> >> +473,18 @@ icl_program_input_csc(struct int

Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion for BT2020 case

2019-05-09 Thread Ville Syrjälä
On Thu, May 09, 2019 at 03:08:40PM +, Shankar, Uma wrote:
> 
> 
> >-Original Message-
> >From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
> >Sent: Thursday, May 9, 2019 8:28 PM
> >To: Shankar, Uma 
> >Cc: Sharma, Shashank ; intel-
> >g...@lists.freedesktop.org
> >Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB 
> >conversion for
> >BT2020 case
> >
> >On Thu, May 09, 2019 at 02:54:19PM +, Shankar, Uma wrote:
> >>
> >>
> >> >-Original Message-
> >> >From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
> >> >Sent: Tuesday, May 7, 2019 9:08 PM
> >> >To: Shankar, Uma 
> >> >Cc: Sharma, Shashank ; intel-
> >> >g...@lists.freedesktop.org
> >> >Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB
> >> >conversion for
> >> >BT2020 case
> >> >
> >> >On Tue, May 07, 2019 at 02:35:15PM +, Shankar, Uma wrote:
> >> >>
> >> >>
> >> >> >-Original Message-
> >> >> >From: Intel-gfx [mailto:intel-gfx-boun...@lists.freedesktop.org]
> >> >> >On Behalf Of Ville Syrjälä
> >> >> >Sent: Tuesday, May 7, 2019 7:37 PM
> >> >> >To: Sharma, Shashank 
> >> >> >Cc: intel-gfx@lists.freedesktop.org
> >> >> >Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB
> >> >> >conversion for
> >> >> >BT2020 case
> >> >> >
> >> >> >On Tue, May 07, 2019 at 06:32:57PM +0530, Shashank Sharma wrote:
> >> >> >> From: Uma Shankar 
> >> >> >>
> >> >> >> Currently input csc for YCbCR to RGB conversion handles only
> >> >> >> BT601 and Bt709. Extending it to support BT2020 as well.
> >> >> >>
> >> >> >> Signed-off-by: Uma Shankar 
> >> >> >> Signed-off-by: Shashank Sharma 
> >> >> >> ---
> >> >> >>  drivers/gpu/drm/i915/intel_sprite.c | 24
> >> >> >> 
> >> >> >>  1 file changed, 24 insertions(+)
> >> >> >>
> >> >> >> diff --git a/drivers/gpu/drm/i915/intel_sprite.c
> >> >> >> b/drivers/gpu/drm/i915/intel_sprite.c
> >> >> >> index 44aaeac1b2ed..2536e757bec2 100644
> >> >> >> --- a/drivers/gpu/drm/i915/intel_sprite.c
> >> >> >> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> >> >> >> @@ -433,6 +433,18 @@ icl_program_input_csc(struct intel_plane *plane,
> >> >> >>  0x9EF8, 0x7800, 0xABF8,
> >> >> >>  0x0, 0x7800,  0x7ED8,
> >> >> >>  },
> >> >> >> +/*
> >> >> >> + * BT.2020 full range YCbCr -> full range RGB
> >> >> >> + * The matrix required is :
> >> >> >> + * [1.000, 0.000, 1.474,
> >> >> >> + *  1.000, -0.1645, -0.5713,
> >> >> >> + *  1.000, 1.8814, 0.]
> >> >> >> + */
> >> >> >> +[DRM_COLOR_YCBCR_BT2020] = {
> >> >> >> +0x7BC8, 0x7800, 0x0,
> >> >> >> +0x8928, 0x7800, 0xAA88,
> >> >> >> +0x0, 0x7800, 0x7F10,
> >> >> >> +},
> >> >> >>  };
> >> >> >>
> >> >> >>  /* Matrix for Limited Range to Full Range Conversion */ @@
> >> >> >> -461,6
> >> >> >> +473,18 @@ icl_program_input_csc(struct intel_plane *plane,
> >> >> >>  0x, 0x7918, 0xADA8,
> >> >> >>  0x0, 0x7918,  0x6870,
> >> >> >>  },
> >> >> >> +/*
> >> >> >> + * BT.2020 Limited range YCbCr -> full range RGB
> >> >> >> + * The matrix required is :
> >> >> >> + * [1.164, 0.000, 1.717,
> >> >> >> + *  1.138, -0.1873, -0.6504,
> >> >> >> + *  1.1380, 2.1417, 0.]
> >> >> >
> >> >&g

Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion for BT2020 case

2019-05-09 Thread Shankar, Uma


>-Original Message-
>From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>Sent: Thursday, May 9, 2019 8:28 PM
>To: Shankar, Uma 
>Cc: Sharma, Shashank ; intel-
>g...@lists.freedesktop.org
>Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion 
>for
>BT2020 case
>
>On Thu, May 09, 2019 at 02:54:19PM +, Shankar, Uma wrote:
>>
>>
>> >-Original Message-
>> >From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>> >Sent: Tuesday, May 7, 2019 9:08 PM
>> >To: Shankar, Uma 
>> >Cc: Sharma, Shashank ; intel-
>> >g...@lists.freedesktop.org
>> >Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB
>> >conversion for
>> >BT2020 case
>> >
>> >On Tue, May 07, 2019 at 02:35:15PM +, Shankar, Uma wrote:
>> >>
>> >>
>> >> >-Original Message-
>> >> >From: Intel-gfx [mailto:intel-gfx-boun...@lists.freedesktop.org]
>> >> >On Behalf Of Ville Syrjälä
>> >> >Sent: Tuesday, May 7, 2019 7:37 PM
>> >> >To: Sharma, Shashank 
>> >> >Cc: intel-gfx@lists.freedesktop.org
>> >> >Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB
>> >> >conversion for
>> >> >BT2020 case
>> >> >
>> >> >On Tue, May 07, 2019 at 06:32:57PM +0530, Shashank Sharma wrote:
>> >> >> From: Uma Shankar 
>> >> >>
>> >> >> Currently input csc for YCbCR to RGB conversion handles only
>> >> >> BT601 and Bt709. Extending it to support BT2020 as well.
>> >> >>
>> >> >> Signed-off-by: Uma Shankar 
>> >> >> Signed-off-by: Shashank Sharma 
>> >> >> ---
>> >> >>  drivers/gpu/drm/i915/intel_sprite.c | 24
>> >> >> 
>> >> >>  1 file changed, 24 insertions(+)
>> >> >>
>> >> >> diff --git a/drivers/gpu/drm/i915/intel_sprite.c
>> >> >> b/drivers/gpu/drm/i915/intel_sprite.c
>> >> >> index 44aaeac1b2ed..2536e757bec2 100644
>> >> >> --- a/drivers/gpu/drm/i915/intel_sprite.c
>> >> >> +++ b/drivers/gpu/drm/i915/intel_sprite.c
>> >> >> @@ -433,6 +433,18 @@ icl_program_input_csc(struct intel_plane *plane,
>> >> >>0x9EF8, 0x7800, 0xABF8,
>> >> >>0x0, 0x7800,  0x7ED8,
>> >> >>},
>> >> >> +  /*
>> >> >> +   * BT.2020 full range YCbCr -> full range RGB
>> >> >> +   * The matrix required is :
>> >> >> +   * [1.000, 0.000, 1.474,
>> >> >> +   *  1.000, -0.1645, -0.5713,
>> >> >> +   *  1.000, 1.8814, 0.]
>> >> >> +   */
>> >> >> +  [DRM_COLOR_YCBCR_BT2020] = {
>> >> >> +  0x7BC8, 0x7800, 0x0,
>> >> >> +  0x8928, 0x7800, 0xAA88,
>> >> >> +  0x0, 0x7800, 0x7F10,
>> >> >> +  },
>> >> >>};
>> >> >>
>> >> >>/* Matrix for Limited Range to Full Range Conversion */ @@
>> >> >> -461,6
>> >> >> +473,18 @@ icl_program_input_csc(struct intel_plane *plane,
>> >> >>0x, 0x7918, 0xADA8,
>> >> >>0x0, 0x7918,  0x6870,
>> >> >>},
>> >> >> +  /*
>> >> >> +   * BT.2020 Limited range YCbCr -> full range RGB
>> >> >> +   * The matrix required is :
>> >> >> +   * [1.164, 0.000, 1.717,
>> >> >> +   *  1.138, -0.1873, -0.6504,
>> >> >> +   *  1.1380, 2.1417, 0.]
>> >> >
>> >> >Where are those 1.138 coming from?
>> >>
>> >> Hi Ville,
>> >> This is the original YCBCR to RGB BT2020 matrix:
>> >> {
>> >> 1.000,  0.000,  1.4746000,
>> >> 1.000,  -0.16455312684, -0.57135312684,
>> >> 1.000,  1.8814000,  0.000 };
>> >>
>> >> We have to convert Limit

Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion for BT2020 case

2019-05-09 Thread Ville Syrjälä
On Thu, May 09, 2019 at 02:54:19PM +, Shankar, Uma wrote:
> 
> 
> >-Original Message-
> >From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
> >Sent: Tuesday, May 7, 2019 9:08 PM
> >To: Shankar, Uma 
> >Cc: Sharma, Shashank ; intel-
> >g...@lists.freedesktop.org
> >Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB 
> >conversion for
> >BT2020 case
> >
> >On Tue, May 07, 2019 at 02:35:15PM +, Shankar, Uma wrote:
> >>
> >>
> >> >-Original Message-
> >> >From: Intel-gfx [mailto:intel-gfx-boun...@lists.freedesktop.org] On
> >> >Behalf Of Ville Syrjälä
> >> >Sent: Tuesday, May 7, 2019 7:37 PM
> >> >To: Sharma, Shashank 
> >> >Cc: intel-gfx@lists.freedesktop.org
> >> >Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB
> >> >conversion for
> >> >BT2020 case
> >> >
> >> >On Tue, May 07, 2019 at 06:32:57PM +0530, Shashank Sharma wrote:
> >> >> From: Uma Shankar 
> >> >>
> >> >> Currently input csc for YCbCR to RGB conversion handles only
> >> >> BT601 and Bt709. Extending it to support BT2020 as well.
> >> >>
> >> >> Signed-off-by: Uma Shankar 
> >> >> Signed-off-by: Shashank Sharma 
> >> >> ---
> >> >>  drivers/gpu/drm/i915/intel_sprite.c | 24 
> >> >>  1 file changed, 24 insertions(+)
> >> >>
> >> >> diff --git a/drivers/gpu/drm/i915/intel_sprite.c
> >> >> b/drivers/gpu/drm/i915/intel_sprite.c
> >> >> index 44aaeac1b2ed..2536e757bec2 100644
> >> >> --- a/drivers/gpu/drm/i915/intel_sprite.c
> >> >> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> >> >> @@ -433,6 +433,18 @@ icl_program_input_csc(struct intel_plane *plane,
> >> >> 0x9EF8, 0x7800, 0xABF8,
> >> >> 0x0, 0x7800,  0x7ED8,
> >> >> },
> >> >> +   /*
> >> >> +* BT.2020 full range YCbCr -> full range RGB
> >> >> +* The matrix required is :
> >> >> +* [1.000, 0.000, 1.474,
> >> >> +*  1.000, -0.1645, -0.5713,
> >> >> +*  1.000, 1.8814, 0.]
> >> >> +*/
> >> >> +   [DRM_COLOR_YCBCR_BT2020] = {
> >> >> +   0x7BC8, 0x7800, 0x0,
> >> >> +   0x8928, 0x7800, 0xAA88,
> >> >> +   0x0, 0x7800, 0x7F10,
> >> >> +   },
> >> >> };
> >> >>
> >> >> /* Matrix for Limited Range to Full Range Conversion */ @@ 
> >> >> -461,6
> >> >> +473,18 @@ icl_program_input_csc(struct intel_plane *plane,
> >> >> 0x, 0x7918, 0xADA8,
> >> >> 0x0, 0x7918,  0x6870,
> >> >> },
> >> >> +   /*
> >> >> +* BT.2020 Limited range YCbCr -> full range RGB
> >> >> +* The matrix required is :
> >> >> +* [1.164, 0.000, 1.717,
> >> >> +*  1.138, -0.1873, -0.6504,
> >> >> +*  1.1380, 2.1417, 0.]
> >> >
> >> >Where are those 1.138 coming from?
> >>
> >> Hi Ville,
> >> This is the original YCBCR to RGB BT2020 matrix:
> >> {
> >> 1.000,  0.000,  1.4746000,
> >> 1.000,  -0.16455312684, -0.57135312684,
> >> 1.000,  1.8814000,  0.000 };
> >>
> >> We have to convert Limited Range YCbCr to Full Range RGB. Hence we need to
> >apply a scale factor:
> >>  yscalefactor = 219.0 * normalizingfactor;  cbcrscalefactor = 224.0 *
> >> normalizingfactor;
> >>
> >>  /* Scale factors are inverted for LR to FR conversion */
> >> yscalefactor = 1.0 / yscalefactor;  cbcrscalefactor = 1.0 /
> >> cbcrscalefactor;
> >>
> >> This yields the above results.
> >
> >Those are the coefficients for Y, so they should still be the same for all 
> >three output
> >channels.
> >
> >igt_color_encoding gives me:
> >|1.1644, 0., 1.6787,|
> >|1.1644,-0.1873,-0.6504,|
> >|1.1644, 2.1418, 0.,|
> 
> Ok, I used the igt_color_encoding method and able to get values what you got.
> Will update the matrix. Thanks Ville.
> 
> >Looks like we're also misprogramming the Y pre-offset for the full range 
> >YCbCr case.
> For full range, I am getting same values as programmed above. Looks ok, can 
> you double check.

The matrix itself looks OK (some minor rounding differences perhaps, but
nothing major). But the Y preoffset should be zero for full range
YCbCr.

-- 
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion for BT2020 case

2019-05-09 Thread Shankar, Uma


>-Original Message-
>From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>Sent: Tuesday, May 7, 2019 9:08 PM
>To: Shankar, Uma 
>Cc: Sharma, Shashank ; intel-
>g...@lists.freedesktop.org
>Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion 
>for
>BT2020 case
>
>On Tue, May 07, 2019 at 02:35:15PM +, Shankar, Uma wrote:
>>
>>
>> >-Original Message-
>> >From: Intel-gfx [mailto:intel-gfx-boun...@lists.freedesktop.org] On
>> >Behalf Of Ville Syrjälä
>> >Sent: Tuesday, May 7, 2019 7:37 PM
>> >To: Sharma, Shashank 
>> >Cc: intel-gfx@lists.freedesktop.org
>> >Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB
>> >conversion for
>> >BT2020 case
>> >
>> >On Tue, May 07, 2019 at 06:32:57PM +0530, Shashank Sharma wrote:
>> >> From: Uma Shankar 
>> >>
>> >> Currently input csc for YCbCR to RGB conversion handles only
>> >> BT601 and Bt709. Extending it to support BT2020 as well.
>> >>
>> >> Signed-off-by: Uma Shankar 
>> >> Signed-off-by: Shashank Sharma 
>> >> ---
>> >>  drivers/gpu/drm/i915/intel_sprite.c | 24 
>> >>  1 file changed, 24 insertions(+)
>> >>
>> >> diff --git a/drivers/gpu/drm/i915/intel_sprite.c
>> >> b/drivers/gpu/drm/i915/intel_sprite.c
>> >> index 44aaeac1b2ed..2536e757bec2 100644
>> >> --- a/drivers/gpu/drm/i915/intel_sprite.c
>> >> +++ b/drivers/gpu/drm/i915/intel_sprite.c
>> >> @@ -433,6 +433,18 @@ icl_program_input_csc(struct intel_plane *plane,
>> >>   0x9EF8, 0x7800, 0xABF8,
>> >>   0x0, 0x7800,  0x7ED8,
>> >>   },
>> >> + /*
>> >> +  * BT.2020 full range YCbCr -> full range RGB
>> >> +  * The matrix required is :
>> >> +  * [1.000, 0.000, 1.474,
>> >> +  *  1.000, -0.1645, -0.5713,
>> >> +  *  1.000, 1.8814, 0.]
>> >> +  */
>> >> + [DRM_COLOR_YCBCR_BT2020] = {
>> >> + 0x7BC8, 0x7800, 0x0,
>> >> + 0x8928, 0x7800, 0xAA88,
>> >> + 0x0, 0x7800, 0x7F10,
>> >> + },
>> >>   };
>> >>
>> >>   /* Matrix for Limited Range to Full Range Conversion */ @@ -461,6
>> >> +473,18 @@ icl_program_input_csc(struct intel_plane *plane,
>> >>   0x, 0x7918, 0xADA8,
>> >>   0x0, 0x7918,  0x6870,
>> >>   },
>> >> + /*
>> >> +  * BT.2020 Limited range YCbCr -> full range RGB
>> >> +  * The matrix required is :
>> >> +  * [1.164, 0.000, 1.717,
>> >> +  *  1.138, -0.1873, -0.6504,
>> >> +  *  1.1380, 2.1417, 0.]
>> >
>> >Where are those 1.138 coming from?
>>
>> Hi Ville,
>> This is the original YCBCR to RGB BT2020 matrix:
>> {
>> 1.000,  0.000,  1.4746000,
>> 1.000,  -0.16455312684, -0.57135312684,
>> 1.000,  1.8814000,  0.000 };
>>
>> We have to convert Limited Range YCbCr to Full Range RGB. Hence we need to
>apply a scale factor:
>>  yscalefactor = 219.0 * normalizingfactor;  cbcrscalefactor = 224.0 *
>> normalizingfactor;
>>
>>  /* Scale factors are inverted for LR to FR conversion */
>> yscalefactor = 1.0 / yscalefactor;  cbcrscalefactor = 1.0 /
>> cbcrscalefactor;
>>
>> This yields the above results.
>
>Those are the coefficients for Y, so they should still be the same for all 
>three output
>channels.
>
>igt_color_encoding gives me:
>|1.1644, 0., 1.6787,|
>|1.1644,-0.1873,-0.6504,|
>|1.1644, 2.1418, 0.,|

Ok, I used the igt_color_encoding method and able to get values what you got.
Will update the matrix. Thanks Ville.

>Looks like we're also misprogramming the Y pre-offset for the full range YCbCr 
>case.
For full range, I am getting same values as programmed above. Looks ok, can you 
double check.

Regards,
Uma Shankar

>--
>Ville Syrjälä
>Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion for BT2020 case

2019-05-07 Thread Ville Syrjälä
On Tue, May 07, 2019 at 02:35:15PM +, Shankar, Uma wrote:
> 
> 
> >-Original Message-
> >From: Intel-gfx [mailto:intel-gfx-boun...@lists.freedesktop.org] On Behalf 
> >Of Ville
> >Syrjälä
> >Sent: Tuesday, May 7, 2019 7:37 PM
> >To: Sharma, Shashank 
> >Cc: intel-gfx@lists.freedesktop.org
> >Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB 
> >conversion for
> >BT2020 case
> >
> >On Tue, May 07, 2019 at 06:32:57PM +0530, Shashank Sharma wrote:
> >> From: Uma Shankar 
> >>
> >> Currently input csc for YCbCR to RGB conversion handles only
> >> BT601 and Bt709. Extending it to support BT2020 as well.
> >>
> >> Signed-off-by: Uma Shankar 
> >> Signed-off-by: Shashank Sharma 
> >> ---
> >>  drivers/gpu/drm/i915/intel_sprite.c | 24 
> >>  1 file changed, 24 insertions(+)
> >>
> >> diff --git a/drivers/gpu/drm/i915/intel_sprite.c
> >> b/drivers/gpu/drm/i915/intel_sprite.c
> >> index 44aaeac1b2ed..2536e757bec2 100644
> >> --- a/drivers/gpu/drm/i915/intel_sprite.c
> >> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> >> @@ -433,6 +433,18 @@ icl_program_input_csc(struct intel_plane *plane,
> >>0x9EF8, 0x7800, 0xABF8,
> >>0x0, 0x7800,  0x7ED8,
> >>},
> >> +  /*
> >> +   * BT.2020 full range YCbCr -> full range RGB
> >> +   * The matrix required is :
> >> +   * [1.000, 0.000, 1.474,
> >> +   *  1.000, -0.1645, -0.5713,
> >> +   *  1.000, 1.8814, 0.]
> >> +   */
> >> +  [DRM_COLOR_YCBCR_BT2020] = {
> >> +  0x7BC8, 0x7800, 0x0,
> >> +  0x8928, 0x7800, 0xAA88,
> >> +  0x0, 0x7800, 0x7F10,
> >> +  },
> >>};
> >>
> >>/* Matrix for Limited Range to Full Range Conversion */ @@ -461,6
> >> +473,18 @@ icl_program_input_csc(struct intel_plane *plane,
> >>0x, 0x7918, 0xADA8,
> >>0x0, 0x7918,  0x6870,
> >>},
> >> +  /*
> >> +   * BT.2020 Limited range YCbCr -> full range RGB
> >> +   * The matrix required is :
> >> +   * [1.164, 0.000, 1.717,
> >> +   *  1.138, -0.1873, -0.6504,
> >> +   *  1.1380, 2.1417, 0.]
> >
> >Where are those 1.138 coming from?
> 
> Hi Ville,
> This is the original YCBCR to RGB BT2020 matrix:
> {
> 1.000,  0.000,  1.4746000,
> 1.000,  -0.16455312684, -0.57135312684,
> 1.000,  1.8814000,  0.000
> };
> 
> We have to convert Limited Range YCbCr to Full Range RGB. Hence we need to 
> apply a scale factor:
>  yscalefactor = 219.0 * normalizingfactor;
>  cbcrscalefactor = 224.0 * normalizingfactor;
> 
>  /* Scale factors are inverted for LR to FR conversion */
>  yscalefactor = 1.0 / yscalefactor;
>  cbcrscalefactor = 1.0 / cbcrscalefactor;
> 
> This yields the above results. 

Those are the coefficients for Y, so they should still
be the same for all three output channels.

igt_color_encoding gives me:
|1.1644, 0., 1.6787,|
|1.1644,-0.1873,-0.6504,|
|1.1644, 2.1418, 0.,|

Looks like we're also misprogramming the Y pre-offset
for the full range YCbCr case.

-- 
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion for BT2020 case

2019-05-07 Thread Shankar, Uma


>-Original Message-
>From: Intel-gfx [mailto:intel-gfx-boun...@lists.freedesktop.org] On Behalf Of 
>Ville
>Syrjälä
>Sent: Tuesday, May 7, 2019 7:37 PM
>To: Sharma, Shashank 
>Cc: intel-gfx@lists.freedesktop.org
>Subject: Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion 
>for
>BT2020 case
>
>On Tue, May 07, 2019 at 06:32:57PM +0530, Shashank Sharma wrote:
>> From: Uma Shankar 
>>
>> Currently input csc for YCbCR to RGB conversion handles only
>> BT601 and Bt709. Extending it to support BT2020 as well.
>>
>> Signed-off-by: Uma Shankar 
>> Signed-off-by: Shashank Sharma 
>> ---
>>  drivers/gpu/drm/i915/intel_sprite.c | 24 
>>  1 file changed, 24 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_sprite.c
>> b/drivers/gpu/drm/i915/intel_sprite.c
>> index 44aaeac1b2ed..2536e757bec2 100644
>> --- a/drivers/gpu/drm/i915/intel_sprite.c
>> +++ b/drivers/gpu/drm/i915/intel_sprite.c
>> @@ -433,6 +433,18 @@ icl_program_input_csc(struct intel_plane *plane,
>>  0x9EF8, 0x7800, 0xABF8,
>>  0x0, 0x7800,  0x7ED8,
>>  },
>> +/*
>> + * BT.2020 full range YCbCr -> full range RGB
>> + * The matrix required is :
>> + * [1.000, 0.000, 1.474,
>> + *  1.000, -0.1645, -0.5713,
>> + *  1.000, 1.8814, 0.]
>> + */
>> +[DRM_COLOR_YCBCR_BT2020] = {
>> +0x7BC8, 0x7800, 0x0,
>> +0x8928, 0x7800, 0xAA88,
>> +0x0, 0x7800, 0x7F10,
>> +},
>>  };
>>
>>  /* Matrix for Limited Range to Full Range Conversion */ @@ -461,6
>> +473,18 @@ icl_program_input_csc(struct intel_plane *plane,
>>  0x, 0x7918, 0xADA8,
>>  0x0, 0x7918,  0x6870,
>>  },
>> +/*
>> + * BT.2020 Limited range YCbCr -> full range RGB
>> + * The matrix required is :
>> + * [1.164, 0.000, 1.717,
>> + *  1.138, -0.1873, -0.6504,
>> + *  1.1380, 2.1417, 0.]
>
>Where are those 1.138 coming from?

Hi Ville,
This is the original YCBCR to RGB BT2020 matrix:
{
1.000,  0.000,  1.4746000,
1.000,  -0.16455312684, -0.57135312684,
1.000,  1.8814000,  0.000
};

We have to convert Limited Range YCbCr to Full Range RGB. Hence we need to 
apply a scale factor:
 yscalefactor = 219.0 * normalizingfactor;
 cbcrscalefactor = 224.0 * normalizingfactor;

 /* Scale factors are inverted for LR to FR conversion */
 yscalefactor = 1.0 / yscalefactor;
 cbcrscalefactor = 1.0 / cbcrscalefactor;

This yields the above results. 

Regards,
Uma Shankar

>> + */
>> +[DRM_COLOR_YCBCR_BT2020] = {
>> +0x7DC0, 0x7950, 0x0,
>> +0x8A68, 0x7918, 0xAC00,
>> +0x0, 0x7918, 0x6890,
>> +},
>>  };
>>  const u16 *csc;
>>
>> --
>> 2.17.1
>>
>> ___
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
>--
>Ville Syrjälä
>Intel
>___
>Intel-gfx mailing list
>Intel-gfx@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/intel-gfx
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion for BT2020 case

2019-05-07 Thread Ville Syrjälä
On Tue, May 07, 2019 at 06:32:57PM +0530, Shashank Sharma wrote:
> From: Uma Shankar 
> 
> Currently input csc for YCbCR to RGB conversion handles only
> BT601 and Bt709. Extending it to support BT2020 as well.
> 
> Signed-off-by: Uma Shankar 
> Signed-off-by: Shashank Sharma 
> ---
>  drivers/gpu/drm/i915/intel_sprite.c | 24 
>  1 file changed, 24 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c 
> b/drivers/gpu/drm/i915/intel_sprite.c
> index 44aaeac1b2ed..2536e757bec2 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -433,6 +433,18 @@ icl_program_input_csc(struct intel_plane *plane,
>   0x9EF8, 0x7800, 0xABF8,
>   0x0, 0x7800,  0x7ED8,
>   },
> + /*
> +  * BT.2020 full range YCbCr -> full range RGB
> +  * The matrix required is :
> +  * [1.000, 0.000, 1.474,
> +  *  1.000, -0.1645, -0.5713,
> +  *  1.000, 1.8814, 0.]
> +  */
> + [DRM_COLOR_YCBCR_BT2020] = {
> + 0x7BC8, 0x7800, 0x0,
> + 0x8928, 0x7800, 0xAA88,
> + 0x0, 0x7800, 0x7F10,
> + },
>   };
>  
>   /* Matrix for Limited Range to Full Range Conversion */
> @@ -461,6 +473,18 @@ icl_program_input_csc(struct intel_plane *plane,
>   0x, 0x7918, 0xADA8,
>   0x0, 0x7918,  0x6870,
>   },
> + /*
> +  * BT.2020 Limited range YCbCr -> full range RGB
> +  * The matrix required is :
> +  * [1.164, 0.000, 1.717,
> +  *  1.138, -0.1873, -0.6504,
> +  *  1.1380, 2.1417, 0.]

Where are those 1.138 coming from?

> +  */
> + [DRM_COLOR_YCBCR_BT2020] = {
> + 0x7DC0, 0x7950, 0x0,
> + 0x8A68, 0x7918, 0xAC00,
> + 0x0, 0x7918, 0x6890,
> + },
>   };
>   const u16 *csc;
>  
> -- 
> 2.17.1
> 
> ___
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion for BT2020 case

2019-05-07 Thread Shashank Sharma
From: Uma Shankar 

Currently input csc for YCbCR to RGB conversion handles only
BT601 and Bt709. Extending it to support BT2020 as well.

Signed-off-by: Uma Shankar 
Signed-off-by: Shashank Sharma 
---
 drivers/gpu/drm/i915/intel_sprite.c | 24 
 1 file changed, 24 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_sprite.c 
b/drivers/gpu/drm/i915/intel_sprite.c
index 44aaeac1b2ed..2536e757bec2 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -433,6 +433,18 @@ icl_program_input_csc(struct intel_plane *plane,
0x9EF8, 0x7800, 0xABF8,
0x0, 0x7800,  0x7ED8,
},
+   /*
+* BT.2020 full range YCbCr -> full range RGB
+* The matrix required is :
+* [1.000, 0.000, 1.474,
+*  1.000, -0.1645, -0.5713,
+*  1.000, 1.8814, 0.]
+*/
+   [DRM_COLOR_YCBCR_BT2020] = {
+   0x7BC8, 0x7800, 0x0,
+   0x8928, 0x7800, 0xAA88,
+   0x0, 0x7800, 0x7F10,
+   },
};
 
/* Matrix for Limited Range to Full Range Conversion */
@@ -461,6 +473,18 @@ icl_program_input_csc(struct intel_plane *plane,
0x, 0x7918, 0xADA8,
0x0, 0x7918,  0x6870,
},
+   /*
+* BT.2020 Limited range YCbCr -> full range RGB
+* The matrix required is :
+* [1.164, 0.000, 1.717,
+*  1.138, -0.1873, -0.6504,
+*  1.1380, 2.1417, 0.]
+*/
+   [DRM_COLOR_YCBCR_BT2020] = {
+   0x7DC0, 0x7950, 0x0,
+   0x8A68, 0x7918, 0xAC00,
+   0x0, 0x7918, 0x6890,
+   },
};
const u16 *csc;
 
-- 
2.17.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx