mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
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:
@@ -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;
|
||||
|
||||
@@ -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.*/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user