From: Wesley Chalmers <wesley.chalm...@amd.com>

[WHY]
dpp2_get_optimal_number_of_taps is incorrect, and dcn2 should be using
dpp1_get_optimal_number_of_taps instead

Change-Id: I421c9b8d9dc244d37f2bd9f99027ce2cca2b8817
Signed-off-by: Wesley Chalmers <wesley.chalm...@amd.com>
Reviewed-by: Dmytro Laktyushkin <dmytro.laktyush...@amd.com>
Acked-by: Bhawanpreet Lakha <bhawanpreet.la...@amd.com>
---
 .../gpu/drm/amd/display/dc/dcn10/dcn10_dpp.c  |  4 +-
 .../gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h  |  5 ++
 .../gpu/drm/amd/display/dc/dcn20/dcn20_dpp.c  | 86 +------------------
 .../gpu/drm/amd/display/dc/dcn20/dcn20_dpp.h  |  5 --
 4 files changed, 8 insertions(+), 92 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.c 
b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.c
index d8b2da18db39..997e9582edc7 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.c
@@ -129,7 +129,7 @@ void dpp_set_gamut_remap_bypass(struct dcn10_dpp *dpp)
 
 #define IDENTITY_RATIO(ratio) (dc_fixpt_u2d19(ratio) == (1 << 19))
 
-static bool dpp_get_optimal_number_of_taps(
+bool dpp1_get_optimal_number_of_taps(
                struct dpp *dpp,
                struct scaler_data *scl_data,
                const struct scaling_taps *in_taps)
@@ -521,7 +521,7 @@ static const struct dpp_funcs dcn10_dpp_funcs = {
                .dpp_read_state = dpp_read_state,
                .dpp_reset = dpp_reset,
                .dpp_set_scaler = dpp1_dscl_set_scaler_manual_scale,
-               .dpp_get_optimal_number_of_taps = 
dpp_get_optimal_number_of_taps,
+               .dpp_get_optimal_number_of_taps = 
dpp1_get_optimal_number_of_taps,
                .dpp_set_gamut_remap = dpp1_cm_set_gamut_remap,
                .dpp_set_csc_adjustment = dpp1_cm_set_output_csc_adjustment,
                .dpp_set_csc_default = dpp1_cm_set_output_csc_default,
diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h 
b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h
index e2c613611ac9..1d4a7d640334 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h
+++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h
@@ -1504,6 +1504,11 @@ void dpp1_set_hdr_multiplier(
                struct dpp *dpp_base,
                uint32_t multiplier);
 
+bool dpp1_get_optimal_number_of_taps(
+               struct dpp *dpp,
+               struct scaler_data *scl_data,
+               const struct scaling_taps *in_taps);
+
 void dpp1_construct(struct dcn10_dpp *dpp1,
        struct dc_context *ctx,
        uint32_t inst,
diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.c 
b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.c
index 2f5aade1e882..e991acafeedf 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.c
@@ -369,90 +369,6 @@ void dpp2_set_cursor_attributes(
        }
 }
 
-#define IDENTITY_RATIO(ratio) (dc_fixpt_u3d19(ratio) == (1 << 19))
-
-bool dpp2_get_optimal_number_of_taps(
-               struct dpp *dpp,
-               struct scaler_data *scl_data,
-               const struct scaling_taps *in_taps)
-{
-       uint32_t pixel_width;
-
-       if (scl_data->viewport.width > scl_data->recout.width)
-               pixel_width = scl_data->recout.width;
-       else
-               pixel_width = scl_data->viewport.width;
-
-       /* Some ASICs does not support  FP16 scaling, so we reject modes 
require this*/
-       if (scl_data->viewport.width  != scl_data->h_active &&
-               scl_data->viewport.height != scl_data->v_active &&
-               dpp->caps->dscl_data_proc_format == 
DSCL_DATA_PRCESSING_FIXED_FORMAT &&
-               scl_data->format == PIXEL_FORMAT_FP16)
-               return false;
-
-       if (scl_data->viewport.width > scl_data->h_active &&
-               dpp->ctx->dc->debug.max_downscale_src_width != 0 &&
-               scl_data->viewport.width > 
dpp->ctx->dc->debug.max_downscale_src_width)
-               return false;
-
-       /* TODO: add lb check */
-
-       /* No support for programming ratio of 8, drop to 7.99999.. */
-       if (scl_data->ratios.horz.value == (8ll << 32))
-               scl_data->ratios.horz.value--;
-       if (scl_data->ratios.vert.value == (8ll << 32))
-               scl_data->ratios.vert.value--;
-       if (scl_data->ratios.horz_c.value == (8ll << 32))
-               scl_data->ratios.horz_c.value--;
-       if (scl_data->ratios.vert_c.value == (8ll << 32))
-               scl_data->ratios.vert_c.value--;
-
-       /* Set default taps if none are provided */
-       if (in_taps->h_taps == 0) {
-               if (dc_fixpt_ceil(scl_data->ratios.horz) > 4)
-                       scl_data->taps.h_taps = 8;
-               else
-                       scl_data->taps.h_taps = 4;
-       } else
-               scl_data->taps.h_taps = in_taps->h_taps;
-       if (in_taps->v_taps == 0) {
-               if (dc_fixpt_ceil(scl_data->ratios.vert) > 4)
-                       scl_data->taps.v_taps = 8;
-               else
-                       scl_data->taps.v_taps = 4;
-       } else
-               scl_data->taps.v_taps = in_taps->v_taps;
-       if (in_taps->v_taps_c == 0) {
-               if (dc_fixpt_ceil(scl_data->ratios.vert_c) > 4)
-                       scl_data->taps.v_taps_c = 4;
-               else
-                       scl_data->taps.v_taps_c = 2;
-       } else
-               scl_data->taps.v_taps_c = in_taps->v_taps_c;
-       if (in_taps->h_taps_c == 0) {
-               if (dc_fixpt_ceil(scl_data->ratios.horz_c) > 4)
-                       scl_data->taps.h_taps_c = 4;
-               else
-                       scl_data->taps.h_taps_c = 2;
-       } else if ((in_taps->h_taps_c % 2) != 0 && in_taps->h_taps_c != 1)
-               /* Only 1 and even h_taps_c are supported by hw */
-               scl_data->taps.h_taps_c = in_taps->h_taps_c - 1;
-       else
-               scl_data->taps.h_taps_c = in_taps->h_taps_c;
-
-       if (!dpp->ctx->dc->debug.always_scale) {
-               if (IDENTITY_RATIO(scl_data->ratios.horz))
-                       scl_data->taps.h_taps = 1;
-               if (IDENTITY_RATIO(scl_data->ratios.vert))
-                       scl_data->taps.v_taps = 1;
-               if (IDENTITY_RATIO(scl_data->ratios.horz_c))
-                       scl_data->taps.h_taps_c = 1;
-               if (IDENTITY_RATIO(scl_data->ratios.vert_c))
-                       scl_data->taps.v_taps_c = 1;
-       }
-
-       return true;
-}
 
 void oppn20_dummy_program_regamma_pwl(
                struct dpp *dpp,
@@ -464,7 +380,7 @@ static struct dpp_funcs dcn20_dpp_funcs = {
        .dpp_read_state = dpp20_read_state,
        .dpp_reset = dpp_reset,
        .dpp_set_scaler = dpp1_dscl_set_scaler_manual_scale,
-       .dpp_get_optimal_number_of_taps = dpp2_get_optimal_number_of_taps,
+       .dpp_get_optimal_number_of_taps = dpp1_get_optimal_number_of_taps,
        .dpp_set_gamut_remap = dpp1_cm_set_gamut_remap,
        .dpp_set_csc_adjustment = NULL,
        .dpp_set_csc_default = NULL,
diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.h 
b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.h
index f8db8ad593f8..5b03b737b1d6 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.h
+++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.h
@@ -705,11 +705,6 @@ void dpp2_set_hdr_multiplier(
                struct dpp *dpp_base,
                uint32_t multiplier);
 
-bool dpp2_get_optimal_number_of_taps(
-               struct dpp *dpp,
-               struct scaler_data *scl_data,
-               const struct scaling_taps *in_taps);
-
 bool dpp2_construct(struct dcn20_dpp *dpp2,
        struct dc_context *ctx,
        uint32_t inst,
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to