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 <jian.cao@amlogic.com>
This commit is contained in:
Jian Cao
2019-05-08 21:41:58 +08:00
committed by Tao Zeng
parent ff60d1531d
commit 3f864a1f4b
2 changed files with 17 additions and 17 deletions

View File

@@ -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;
@@ -102,14 +102,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;

View File

@@ -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.*/