drm/amd/display: disable adaptive scaler and sharpener when integer scaling is enabled
authorSamson Tam <Samson.Tam@amd.com>
Fri, 6 Sep 2024 07:28:47 +0000 (03:28 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 1 Oct 2024 21:29:58 +0000 (17:29 -0400)
[Why & How]
When integer scaling is enabled, set taps to 1 and disable adaptive
 scaler and sharpener.

Reviewed-by: Jun Lei <jun.lei@amd.com>
Signed-off-by: Samson Tam <Samson.Tam@amd.com>
Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dc_spl_translate.c
drivers/gpu/drm/amd/display/dc/spl/dc_spl.c

index 603552d..20fd0af 100644 (file)
@@ -38,6 +38,7 @@ static void populate_spltaps_from_taps(struct spl_taps *spl_scaling_quality,
        spl_scaling_quality->h_taps = scaling_quality->h_taps;
        spl_scaling_quality->v_taps_c = scaling_quality->v_taps_c;
        spl_scaling_quality->v_taps = scaling_quality->v_taps;
+       spl_scaling_quality->integer_scaling = scaling_quality->integer_scaling;
 }
 static void populate_taps_from_spltaps(struct scaling_taps *scaling_quality,
                const struct spl_taps *spl_scaling_quality)
index 014e8a2..c38a5c8 100644 (file)
@@ -885,6 +885,18 @@ static bool spl_get_optimal_number_of_taps(
                spl_scratch->scl_data.viewport.width > max_downscale_src_width)
                return false;
 
+       /* Disable adaptive scaler and sharpener when integer scaling is enabled */
+       if (spl_in->scaling_quality.integer_scaling) {
+               spl_scratch->scl_data.taps.h_taps = 1;
+               spl_scratch->scl_data.taps.v_taps = 1;
+               spl_scratch->scl_data.taps.v_taps_c = 1;
+               spl_scratch->scl_data.taps.h_taps_c = 1;
+               *enable_easf_v = false;
+               *enable_easf_h = false;
+               *enable_isharp = false;
+               return true;
+       }
+
        /* Check if we are using EASF or not */
        skip_easf = enable_easf(spl_in, spl_scratch);