drm/amd/display: combined user regamma and OS GAMMA_CS_TFM_1D
[Why] For user regamma we're missing this function call to combine user regamma + OS for GAMMA_CS_TFM_1D type. [How] Applied 1D LUT in the mod_color_build_user_regamma. And Set the regamma dirty as updateGamma. Signed-off-by: Derek Lai <Derek.Lai@amd.com> Acked-by: Aurabindo Pillai <aurabindo.pillai@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
7154a51b53
commit
5d1b3211da
2 changed files with 14 additions and 4 deletions
|
|
@ -1737,7 +1737,8 @@ static bool map_regamma_hw_to_x_user(
|
|||
|
||||
bool calculate_user_regamma_coeff(struct dc_transfer_func *output_tf,
|
||||
const struct regamma_lut *regamma,
|
||||
struct calculate_buffer *cal_buffer)
|
||||
struct calculate_buffer *cal_buffer,
|
||||
const struct dc_gamma *ramp)
|
||||
{
|
||||
struct gamma_coefficients coeff;
|
||||
const struct hw_x_point *coord_x = coordinates_x;
|
||||
|
|
@ -1778,6 +1779,9 @@ bool calculate_user_regamma_coeff(struct dc_transfer_func *output_tf,
|
|||
++i;
|
||||
}
|
||||
|
||||
if (ramp && ramp->type == GAMMA_CS_TFM_1D)
|
||||
apply_lut_1d(ramp, MAX_HW_POINTS, &output_tf->tf_pts);
|
||||
|
||||
// this function just clamps output to 0-1
|
||||
build_new_custom_resulted_curve(MAX_HW_POINTS, &output_tf->tf_pts);
|
||||
output_tf->type = TF_TYPE_DISTRIBUTED_POINTS;
|
||||
|
|
@ -1787,7 +1791,8 @@ bool calculate_user_regamma_coeff(struct dc_transfer_func *output_tf,
|
|||
|
||||
bool calculate_user_regamma_ramp(struct dc_transfer_func *output_tf,
|
||||
const struct regamma_lut *regamma,
|
||||
struct calculate_buffer *cal_buffer)
|
||||
struct calculate_buffer *cal_buffer,
|
||||
const struct dc_gamma *ramp)
|
||||
{
|
||||
struct dc_transfer_func_distributed_points *tf_pts = &output_tf->tf_pts;
|
||||
struct dividers dividers;
|
||||
|
|
@ -1834,6 +1839,9 @@ bool calculate_user_regamma_ramp(struct dc_transfer_func *output_tf,
|
|||
tf_pts->x_point_at_y1_green = 1;
|
||||
tf_pts->x_point_at_y1_blue = 1;
|
||||
|
||||
if (ramp && ramp->type == GAMMA_CS_TFM_1D)
|
||||
apply_lut_1d(ramp, MAX_HW_POINTS, &output_tf->tf_pts);
|
||||
|
||||
// this function just clamps output to 0-1
|
||||
build_new_custom_resulted_curve(MAX_HW_POINTS, tf_pts);
|
||||
|
||||
|
|
|
|||
|
|
@ -120,11 +120,13 @@ bool mod_color_calculate_degamma_curve(enum dc_transfer_func_predefined trans,
|
|||
|
||||
bool calculate_user_regamma_coeff(struct dc_transfer_func *output_tf,
|
||||
const struct regamma_lut *regamma,
|
||||
struct calculate_buffer *cal_buffer);
|
||||
struct calculate_buffer *cal_buffer,
|
||||
const struct dc_gamma *ramp);
|
||||
|
||||
bool calculate_user_regamma_ramp(struct dc_transfer_func *output_tf,
|
||||
const struct regamma_lut *regamma,
|
||||
struct calculate_buffer *cal_buffer);
|
||||
struct calculate_buffer *cal_buffer,
|
||||
const struct dc_gamma *ramp);
|
||||
|
||||
|
||||
#endif /* COLOR_MOD_COLOR_GAMMA_H_ */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue