void dce110_opp_set_csc_adjustment( struct transform *xfm, const struct out_csc_color_matrix *tbl_entry) { struct dce_transform *xfm_dce = TO_DCE_TRANSFORM(xfm); enum csc_color_mode config = CSC_COLOR_MODE_GRAPHICS_OUTPUT_CSC; program_color_matrix( xfm_dce, tbl_entry, GRPH_COLOR_MATRIX_SW); /* We did everything ,now program DxOUTPUT_CSC_CONTROL */ configure_graphics_mode(xfm_dce, config, GRAPHICS_CSC_ADJUST_TYPE_SW, tbl_entry->color_space); }
void dce110_opp_set_csc_default( struct transform *xfm, const struct default_adjustment *default_adjust) { struct dce_transform *xfm_dce = TO_DCE_TRANSFORM(xfm); enum csc_color_mode config = CSC_COLOR_MODE_GRAPHICS_PREDEFINED; if (default_adjust->force_hw_default == false) { const struct out_csc_color_matrix *elm; /* currently parameter not in use */ enum grph_color_adjust_option option = GRPH_COLOR_MATRIX_HW_DEFAULT; uint32_t i; /* * HW default false we program locally defined matrix * HW default true we use predefined hw matrix and we * do not need to program matrix * OEM wants the HW default via runtime parameter. */ option = GRPH_COLOR_MATRIX_SW; for (i = 0; i < ARRAY_SIZE(global_color_matrix); ++i) { elm = &global_color_matrix[i]; if (elm->color_space != default_adjust->out_color_space) continue; /* program the matrix with default values from this * file */ program_color_matrix(xfm_dce, elm, option); config = CSC_COLOR_MODE_GRAPHICS_OUTPUT_CSC; break; } } /* configure the what we programmed : * 1. Default values from this file * 2. Use hardware default from ROM_A and we do not need to program * matrix */ configure_graphics_mode(xfm_dce, config, default_adjust->csc_adjust_type, default_adjust->out_color_space); }
void dce110_opp_set_csc_adjustment( struct output_pixel_processor *opp, const struct opp_grph_csc_adjustment *adjust) { struct dce110_opp *opp110 = TO_DCE110_OPP(opp); enum csc_color_mode config = CSC_COLOR_MODE_GRAPHICS_OUTPUT_CSC; /* Apply color adjustments: brightness, saturation, hue, contrast and * CSC. No need for different color space routine, color space defines * the ideal values only, but keep original design to allow quick switch * to the old legacy routines */ switch (adjust->c_space) { case COLOR_SPACE_SRGB: set_rgb_adjustment_legacy(opp110, adjust); break; case COLOR_SPACE_SRGB_LIMITED: set_rgb_limited_range_adjustment( opp110, adjust); break; case COLOR_SPACE_YCBCR601: case COLOR_SPACE_YCBCR709: case COLOR_SPACE_YCBCR601_LIMITED: case COLOR_SPACE_YCBCR709_LIMITED: case COLOR_SPACE_YPBPR601: case COLOR_SPACE_YPBPR709: set_yuv_adjustment(opp110, adjust); break; default: set_rgb_adjustment_legacy(opp110, adjust); break; } /* We did everything ,now program DxOUTPUT_CSC_CONTROL */ configure_graphics_mode(opp110, config, adjust->csc_adjust_type, adjust->c_space); }