Hi Jyri,

Thank you for the patch.

On Friday 21 Apr 2017 12:51:16 Jyri Sarha wrote:
> From: Tomi Valkeinen <tomi.valkei...@ti.com>
> 
> At the moment the driver always uses limited range when doing YUV-RGB
> conversions. This patch adds full-range tables, and makes the code to
> always use full-range tables.
> 
> In the future we should allow the user to select the color range instead
> of hardcoding it.
> 
> Signed-off-by: Tomi Valkeinen <tomi.valkei...@ti.com>
> Signed-off-by: Jyri Sarha <jsa...@ti.com>
> ---
>  drivers/gpu/drm/omapdrm/dss/dispc.c | 33 +++++++++++++++++++++++++++++++--
>  1 file changed, 31 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c
> b/drivers/gpu/drm/omapdrm/dss/dispc.c index b53e63d..f2a2d08 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dispc.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
> @@ -799,6 +799,8 @@ static void dispc_setup_color_conv_coef(void)
>  {
>       int i;
>       int num_ovl = dss_feat_get_num_ovls();
> +     /* always use full range for now */
> +     bool use_full_range = true;
> 
>       /* YUV -> RGB, ITU-R BT.601, limited range */
>       const struct csc_coef_yuv2rgb coefs_yuv2rgb_bt601_lim = {
> @@ -808,6 +810,14 @@ static void dispc_setup_color_conv_coef(void)
>               false,                  /* limited range */
>       };
> 
> +     /* YUV -> RGB, ITU-R BT.601, full range */
> +     const struct csc_coef_yuv2rgb coefs_yuv2rgb_bt601_full = {
> +             256,   0,  358,         /* ry, rcb, rcr */
> +             256, -88, -182,         /* gy, gcb, gcr */
> +             256, 452,    0,         /* by, bcb, bcr */
> +             true,                   /* full range */
> +     };

Shouldn't all those tables be static const ?

With that fixed,

Reviewed-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>

> +
>       /* RGB -> YUV, ITU-R BT.601, limited range */
>       const struct csc_coef_rgb2yuv coefs_rgb2yuv_bt601_lim = {
>                66, 129,  25,          /* yr,   yg,  yb */
> @@ -816,11 +826,30 @@ static void dispc_setup_color_conv_coef(void)
>               false,                  /* limited range */
>       };
> 
> +     /* RGB -> YUV, ITU-R BT.601, full range */
> +     const struct csc_coef_rgb2yuv coefs_rgb2yuv_bt601_full = {
> +              77,  150,  29,         /* yr,   yg,  yb */
> +             -43,  -85, 128,         /* cbr, cbg, cbb */
> +             128, -107, -21,         /* crr, crg, crb */
> +             true,                   /* full range */
> +     };
> +
> +     const struct csc_coef_yuv2rgb *yuv2rgb;
> +     const struct csc_coef_rgb2yuv *rgb2yuv;
> +
> +     if (use_full_range) {
> +             yuv2rgb = &coefs_yuv2rgb_bt601_full;
> +             rgb2yuv = &coefs_rgb2yuv_bt601_full;
> +     } else {
> +             yuv2rgb = &coefs_yuv2rgb_bt601_lim;
> +             rgb2yuv = &coefs_rgb2yuv_bt601_lim;
> +     }
> +
>       for (i = 1; i < num_ovl; i++)
> -             dispc_ovl_write_color_conv_coef(i, &coefs_yuv2rgb_bt601_lim);
> +             dispc_ovl_write_color_conv_coef(i, yuv2rgb);
> 
>       if (dispc.feat->has_writeback)
> -             dispc_wb_write_color_conv_coef(&coefs_rgb2yuv_bt601_lim);
> +             dispc_wb_write_color_conv_coef(rgb2yuv);
>  }
> 
>  static void dispc_ovl_set_ba0(enum omap_plane_id plane, u32 paddr)

-- 
Regards,

Laurent Pinchart

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to