From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "Shankar, Uma" <uma.shankar@intel.com>
Cc: "intel-gfx@lists.freedesktop.org" <intel-gfx@lists.freedesktop.org>
Subject: Re: [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion for BT2020 case
Date: Thu, 9 May 2019 18:30:11 +0300 [thread overview]
Message-ID: <20190509153011.GF24299@intel.com> (raw)
In-Reply-To: <E7C9878FBA1C6D42A1CA3F62AEB6945F81FF2098@BGSMSX104.gar.corp.intel.com>
On Thu, May 09, 2019 at 03:08:40PM +0000, Shankar, Uma wrote:
>
>
> >-----Original Message-----
> >From: Ville Syrjälä [mailto:ville.syrjala@linux.intel.com]
> >Sent: Thursday, May 9, 2019 8:28 PM
> >To: Shankar, Uma <uma.shankar@intel.com>
> >Cc: Sharma, Shashank <shashank.sharma@intel.com>; intel-
> >gfx@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 +0000, Shankar, Uma wrote:
> >>
> >>
> >> >-----Original Message-----
> >> >From: Ville Syrjälä [mailto:ville.syrjala@linux.intel.com]
> >> >Sent: Tuesday, May 7, 2019 9:08 PM
> >> >To: Shankar, Uma <uma.shankar@intel.com>
> >> >Cc: Sharma, Shashank <shashank.sharma@intel.com>; 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 02:35:15PM +0000, Shankar, Uma wrote:
> >> >>
> >> >>
> >> >> >-----Original Message-----
> >> >> >From: Intel-gfx [mailto:intel-gfx-bounces@lists.freedesktop.org]
> >> >> >On Behalf Of Ville Syrjälä
> >> >> >Sent: Tuesday, May 7, 2019 7:37 PM
> >> >> >To: Sharma, Shashank <shashank.sharma@intel.com>
> >> >> >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 <uma.shankar@intel.com>
> >> >> >>
> >> >> >> 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 <uma.shankar@intel.com>
> >> >> >> Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>
> >> >> >> ---
> >> >> >> 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.0000]
> >> >> >> + */
> >> >> >> + [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,
> >> >> >> 0x8888, 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.0000]
> >> >> >
> >> >> >Where are those 1.138 coming from?
> >> >>
> >> >> Hi Ville,
> >> >> This is the original YCBCR to RGB BT2020 matrix:
> >> >> {
> >> >> 1.00000000000, 0.00000000000, 1.47460000000,
> >> >> 1.00000000000, -0.16455312684, -0.57135312684,
> >> >> 1.00000000000, 1.88140000000, 0.00000000000 };
> >> >>
> >> >> 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.0000, 1.6787,|
> >> >|1.1644,-0.1873,-0.6504,|
> >> >|1.1644, 2.1418, 0.0000,|
> >>
> >> 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.
>
> Hi Ville,
> This is what I got for Full Range from igt_color_encoding.
> m4.d[m(row=0, col=0)] = 1.000000
> m4.d[m(row=1, col=0)] = 1.000000
> m4.d[m(row=2, col=0)] = 1.000000
> m4.d[m(row=3, col=0)] = 0.000000
> m4.d[m(row=0, col=1)] = 0.000000
> m4.d[m(row=1, col=1)] = -0.164553
> m4.d[m(row=2, col=1)] = 1.881400
> m4.d[m(row=3, col=1)] = 0.000000
> m4.d[m(row=0, col=2)] = 1.474600
> m4.d[m(row=1, col=2)] = -0.571353
> m4.d[m(row=2, col=2)] = 0.000000
> m4.d[m(row=3, col=2)] = 0.000000
> m4.d[m(row=0, col=3)] = -188.748810
> m4.d[m(row=1, col=3)] = 94.195992
> m4.d[m(row=2, col=3)] = -240.819199
> m4.d[m(row=3, col=3)] = 1.000000
>
> which matches our table. This is the argument list for :
> struct igt_mat4 m4 = igt_ycbcr_to_rgb_matrix(DRM_FORMAT_YUV420,
> DRM_FORMAT_XRGB8888,
> IGT_COLOR_YCBCR_BT2020,
> IGT_COLOR_YCBCR_FULL_RANGE);
>
> Am I am missing something ?
I'm talking about
I915_WRITE_FW(PLANE_INPUT_CSC_PREOFF(pipe, plane_id, 1),
PREOFF_YUV_TO_RGB_ME);
not sure what you're talking about :)
--
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2019-05-09 15:30 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-07 13:02 [PATCH v3 1/2] drm/i915/GLK: Properly handle plane CSC for BT2020 framebuffers Shashank Sharma
2019-05-07 13:02 ` [PATCH] drm/i915/icl: Handle YCbCr to RGB conversion for BT2020 case Shashank Sharma
2019-05-07 14:06 ` Ville Syrjälä
2019-05-07 14:35 ` Shankar, Uma
2019-05-07 15:38 ` Ville Syrjälä
2019-05-09 14:54 ` Shankar, Uma
2019-05-09 14:57 ` Ville Syrjälä
2019-05-09 15:08 ` Shankar, Uma
2019-05-09 15:30 ` Ville Syrjälä [this message]
2019-05-09 15:55 ` Shankar, Uma
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=20190509153011.GF24299@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=uma.shankar@intel.com \
/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.