ge2d: correct YUV limit/full range config when RGB->YUV [1/1]
authorJian Cao <jian.cao@amlogic.com>
Wed, 8 May 2019 13:41:58 +0000 (21:41 +0800)
committerTao Zeng <tao.zeng@amlogic.com>
Mon, 13 May 2019 05:48:32 +0000 (22:48 -0700)
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>
drivers/amlogic/media/common/ge2d/ge2dgen.c
include/linux/amlogic/media/ge2d/ge2d.h

index 2fa47aa..a64026c 100644 (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;
index 72ac15a..c326906 100644 (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.*/