Re: [Intel-gfx] [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion for BT2020 case
>-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
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
>-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
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
>-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
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
>-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
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
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