From: Samson Tam <[email protected]>

[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 <[email protected]>
Signed-off-by: Samson Tam <[email protected]>
Signed-off-by: Ray Wu <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/dpp/dcn401/dcn401_dpp.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dpp/dcn401/dcn401_dpp.c 
b/drivers/gpu/drm/amd/display/dc/dpp/dcn401/dcn401_dpp.c
index 2d6a646462e2..8e0fa7be34ee 100644
--- a/drivers/gpu/drm/amd/display/dc/dpp/dcn401/dcn401_dpp.c
+++ b/drivers/gpu/drm/amd/display/dc/dpp/dcn401/dcn401_dpp.c
@@ -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;
-- 
2.43.0

Reply via email to