Commit 5d1b3211 authored by Derek Lai's avatar Derek Lai Committed by Alex Deucher
Browse files

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: default avatarDerek Lai <Derek.Lai@amd.com>
Acked-by: default avatarAurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 7154a51b
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -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);

+4 −2
Original line number Diff line number Diff line
@@ -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_ */