From af91bb5d39db4bef99eb2a88b89d6c36f6de85b0 Mon Sep 17 00:00:00 2001 From: Jian Cao Date: Wed, 8 May 2019 21:41:58 +0800 Subject: [PATCH] ge2d: correct YUV limit/full range config when RGB->YUV [1/1] PD#OTT-3500 Problem: Grey-scale graph image on video layer performance worse. Solution: correct YUV limit/full range config to set ge2d, when converting RGB to YUV. Verify: G12B_W400 board. Change-Id: I304298a0a6942482196fe5d56a0f356fb30cbe61 Signed-off-by: Jian Cao --- drivers/amlogic/media/common/ge2d/ge2dgen.c | 12 ++++++------ include/linux/amlogic/media/ge2d/ge2d.h | 22 +++++++++++----------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/drivers/amlogic/media/common/ge2d/ge2dgen.c b/drivers/amlogic/media/common/ge2d/ge2dgen.c index 687b2a6..fd6f63c 100644 --- a/drivers/amlogic/media/common/ge2d/ge2dgen.c +++ b/drivers/amlogic/media/common/ge2d/ge2dgen.c @@ -49,14 +49,14 @@ static inline void _set_src1_format(struct ge2d_src1_data_s *src1_data_cfg, if ((format_src & GE2D_FORMAT_YUV) && ((format_dst & GE2D_FORMAT_YUV) == 0)) { dp_gen_cfg->use_matrix_default = - (format_src & GE2D_FORMAT_COMP_RANGE) ? + (format_src & GE2D_FORMAT_FULL_RANGE) ? MATRIX_FULL_RANGE_YCC_TO_RGB : MATRIX_YCC_TO_RGB; dp_gen_cfg->conv_matrix_en = 1; } else if (((format_src & GE2D_FORMAT_YUV) == 0) && (format_dst & GE2D_FORMAT_YUV)) { dp_gen_cfg->use_matrix_default = - (format_dst & GE2D_FORMAT_COMP_RANGE) ? - MATRIX_RGB_TO_YCC : MATRIX_RGB_TO_FULL_RANGE_YCC; + (format_dst & GE2D_FORMAT_FULL_RANGE) ? + MATRIX_RGB_TO_FULL_RANGE_YCC : MATRIX_RGB_TO_YCC; dp_gen_cfg->conv_matrix_en = 1; } else dp_gen_cfg->conv_matrix_en = 0; @@ -100,14 +100,14 @@ static inline void _set_dst_format( if ((format_src & GE2D_FORMAT_YUV) && ((format_dst & GE2D_FORMAT_YUV) == 0)) { dp_gen_cfg->use_matrix_default = - (format_src & GE2D_FORMAT_COMP_RANGE) ? + (format_src & GE2D_FORMAT_FULL_RANGE) ? MATRIX_FULL_RANGE_YCC_TO_RGB : MATRIX_YCC_TO_RGB; dp_gen_cfg->conv_matrix_en = 1; } else if (((format_src & GE2D_FORMAT_YUV) == 0) && (format_dst & GE2D_FORMAT_YUV)) { dp_gen_cfg->use_matrix_default = - (format_dst & GE2D_FORMAT_COMP_RANGE) ? - MATRIX_RGB_TO_YCC : MATRIX_RGB_TO_FULL_RANGE_YCC; + (format_dst & GE2D_FORMAT_FULL_RANGE) ? + MATRIX_RGB_TO_FULL_RANGE_YCC : MATRIX_RGB_TO_YCC; dp_gen_cfg->conv_matrix_en = 1; } else dp_gen_cfg->conv_matrix_en = 0; diff --git a/include/linux/amlogic/media/ge2d/ge2d.h b/include/linux/amlogic/media/ge2d/ge2d.h index c3fdd91..bdd8968 100644 --- a/include/linux/amlogic/media/ge2d/ge2d.h +++ b/include/linux/amlogic/media/ge2d/ge2d.h @@ -195,16 +195,16 @@ enum ge2d_memtype_s { #define GE2D_COLOR_MAP_VUYA8888 (3 << GE2D_COLOR_MAP_SHIFT) /* - *format code is defined as: - *[18] : 1-deep color mode(10/12 bit), 0-8bit mode - *[17] : 1-YUV color space, 0-RGB color space - *[16] : compress_range - *[9:8]: format - *[7:6]: 8bit_mode_sel - *[5] : LUT_EN - *[4:3]: PIC_STRUCT - *[2] : SEP_EN - *[1:0]: X_YC_RATIO, SRC1_Y_YC_RATIO + * format code is defined as: + * [18] : 1-deep color mode(10/12 bit), 0-8bit mode + * [17] : 1-YUV color space, 0-RGB color space + * [16] : compress_range, 1-full ramge, 0-limited range + * [9:8]: format + * [7:6]: 8bit_mode_sel + * [5] : LUT_EN + * [4:3]: PIC_STRUCT + * [2] : SEP_EN + * [1:0]: X_YC_RATIO, SRC1_Y_YC_RATIO */ #define GE2D_FORMAT_MASK 0x0ffff #define GE2D_BPP_MASK 0x00300 @@ -214,7 +214,7 @@ enum ge2d_memtype_s { #define GE2D_BPP_32BIT 0x00300 #define GE2D_FORMAT_DEEP_COLOR 0x40000 #define GE2D_FORMAT_YUV 0x20000 -#define GE2D_FORMAT_COMP_RANGE 0x10000 +#define GE2D_FORMAT_FULL_RANGE 0x10000 /*bit8(2) format bi6(2) mode_8b_sel bit5(1)lut_en bit2 sep_en*/ /*M separate block S one block.*/ -- 2.7.4