]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amd/display: Check for sharpening case when calculating max vtaps for scaler
authorSamson Tam <Samson.Tam@amd.com>
Thu, 14 May 2026 12:10:14 +0000 (08:10 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 3 Jun 2026 17:32:02 +0000 (13:32 -0400)
[Why & How]
- calc_lb_num_partitions has check when scaler is not enabled to use
 larger LB in calculations for max vtaps based on viewport being 1:1
- however, scaler is forced on when sharpening is enabled, so need
 to consider this in check
- taps is predetermined in spl_get_optimal_number_of_taps prior to
 calc_lb_num_partitions.  Add check for taps not 1 to handle
 sharpening case

Reviewed-by: Charlene Liu <charlene.liu@amd.com>
Signed-off-by: Samson Tam <Samson.Tam@amd.com>
Signed-off-by: Ray Wu <ray.wu@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/dpp/dcn401/dcn401_dpp.c

index 2d6a646462e217c4f75b62d46723cf6ce9ea7376..8e0fa7be34ee738c5d7a03859f3b892249d90bc4 100644 (file)
@@ -390,9 +390,11 @@ void dscl401_spl_calc_lb_num_partitions(
                lb_memory_size_a = 1290;
        } else if (lb_config == LB_MEMORY_CONFIG_3) {
                if (scl_data->viewport.width  == scl_data->h_active &&
-                       scl_data->viewport.height == scl_data->v_active) {
+                       scl_data->viewport.height == scl_data->v_active &&
+                       scl_data->taps.h_taps == 1 && scl_data->taps.v_taps == 1) {
                        /* 420 mode: luma using all 3 mem from Y, plus 3rd mem from Cr and Cb */
                        /* use increased LB size for calculation only if Scaler not enabled */
+                       /* Scaler is forced on when sharpening is on. Add check for taps = 1 */
                        lb_memory_size = 970 + 1290 + 1170 + 1170 + 1170;
                        lb_memory_size_c = 970 + 1290;
                        lb_memory_size_a = 970 + 1290 + 1170;
@@ -404,8 +406,10 @@ void dscl401_spl_calc_lb_num_partitions(
                }
        } else {
                if (scl_data->viewport.width  == scl_data->h_active &&
-                       scl_data->viewport.height == scl_data->v_active) {
+                       scl_data->viewport.height == scl_data->v_active &&
+                       scl_data->taps.h_taps == 1 && scl_data->taps.v_taps == 1) {
                        /* use increased LB size for calculation only if Scaler not enabled */
+                       /* Scaler is forced on when sharpening is on. Add check for taps = 1 */
                        lb_memory_size = 970 + 1290 + 1170;
                        lb_memory_size_c = 970 + 1290 + 1170;
                        lb_memory_size_a = 970 + 1290 + 1170;