From: Derek Lai <[email protected]>

[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 <[email protected]>
Acked-by: Aurabindo Pillai <[email protected]>
---
 .../gpu/drm/amd/display/modules/color/color_gamma.c  | 12 ++++++++++--
 .../gpu/drm/amd/display/modules/color/color_gamma.h  |  6 ++++--
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/modules/color/color_gamma.c 
b/drivers/gpu/drm/amd/display/modules/color/color_gamma.c
index e866da639637..bbd025bcfe0d 100644
--- a/drivers/gpu/drm/amd/display/modules/color/color_gamma.c
+++ b/drivers/gpu/drm/amd/display/modules/color/color_gamma.c
@@ -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);
 
diff --git a/drivers/gpu/drm/amd/display/modules/color/color_gamma.h 
b/drivers/gpu/drm/amd/display/modules/color/color_gamma.h
index 37ffbef6602b..7563457e2ff4 100644
--- a/drivers/gpu/drm/amd/display/modules/color/color_gamma.h
+++ b/drivers/gpu/drm/amd/display/modules/color/color_gamma.h
@@ -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_ */
-- 
2.25.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to