drm/amd/display: Fix HSplit causing increase in DSC Slice Count
authorDillon Varone <dillon.varone@amd.com>
Fri, 19 Feb 2021 16:48:21 +0000 (11:48 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 2 Mar 2021 19:07:46 +0000 (14:07 -0500)
[Why?]
HSplit should not affect DSC slice count. Can cause improper timings to
be applied for certain modes.

[How?]
No longer change DSC Slice count based on HSplit.

Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Dillon Varone <dillon.varone@amd.com>
Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c
drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c

index bc07082c135755950e31b63af9bec7356907db1d..cb3f70a71b51258e159f3f939a17606d67328219 100644 (file)
@@ -4050,7 +4050,7 @@ void dml30_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                                        v->RequiredDPPCLK[i][j][NumberOfNonSplitPlaneOfMaximumBandwidth] = v->MinDPPCLKUsingSingleDPP[NumberOfNonSplitPlaneOfMaximumBandwidth]
                                                        * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100) / 2;
                                        v->TotalNumberOfActiveDPP[i][j] = v->TotalNumberOfActiveDPP[i][j] + 1;
-                                       v->TotalNumberOfSingleDPPPlanes[i][j] = v->TotalNumberOfSingleDPPPlanes[i][j] + 1;
+                                       v->TotalNumberOfSingleDPPPlanes[i][j] = v->TotalNumberOfSingleDPPPlanes[i][j] - 1;
                                }
                        }
                        if (v->TotalNumberOfActiveDPP[i][j] > v->MaxNumDPP) {
index bc0485a59018ad2622e3c19c2895b340cbe44c2f..94036a9612cf8f11b4c08d4991e8683e60ae7ecd 100644 (file)
@@ -599,7 +599,6 @@ static void fetch_pipe_params(struct display_mode_lib *mode_lib)
                        for (k = j + 1; k < mode_lib->vba.cache_num_pipes; ++k) {
                                display_pipe_source_params_st *src_k = &pipes[k].pipe.src;
                                display_pipe_dest_params_st *dst_k = &pipes[k].pipe.dest;
-                               display_output_params_st *dout_k = &pipes[j].dout;
 
                                if (src_k->is_hsplit && !visited[k]
                                                && src->hsplit_grp == src_k->hsplit_grp) {
@@ -620,8 +619,6 @@ static void fetch_pipe_params(struct display_mode_lib *mode_lib)
                                                mode_lib->vba.ViewportHeightChroma[mode_lib->vba.NumberOfActivePlanes] +=
                                                                src_k->viewport_height_c;
                                        }
-                                       mode_lib->vba.NumberOfDSCSlices[mode_lib->vba.NumberOfActivePlanes] +=
-                                                       dout_k->dsc_slices;
 
                                        visited[k] = true;
                                }