drm/amd/display: correct DML calc error
authorSherry Wang <Yao.Wang1@amd.com>
Sun, 9 Oct 2022 09:05:51 +0000 (17:05 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 21 Apr 2023 12:50:21 +0000 (08:50 -0400)
[Why]
DML calculation is different from HW formula.

[How]
Correct the bug to keep it same as HW formula.

Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Sherry Wang <Yao.Wang1@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/dml/dcn30/display_mode_vba_30.c
drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c
drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c

index 7d0626e..dea2b84 100644 (file)
@@ -4939,8 +4939,8 @@ void dml30_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                                        }
                                        v->TotImmediateFlipBytes = 0.0;
                                        for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
-                                               v->TotImmediateFlipBytes = v->TotImmediateFlipBytes + v->NoOfDPP[i][j][k] * v->PDEAndMetaPTEBytesPerFrame[i][j][k]
-                                                               + v->MetaRowBytes[i][j][k] + v->DPTEBytesPerRow[i][j][k];
+                                               v->TotImmediateFlipBytes = v->TotImmediateFlipBytes + v->NoOfDPP[i][j][k] * (v->PDEAndMetaPTEBytesPerFrame[i][j][k]
+                                                               + v->MetaRowBytes[i][j][k] + v->DPTEBytesPerRow[i][j][k]);
                                        }
 
                                        for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
index bd674dc..330b089 100644 (file)
@@ -5274,8 +5274,8 @@ void dml31_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                                        v->TotImmediateFlipBytes = 0.0;
                                        for (k = 0; k < v->NumberOfActivePlanes; k++) {
                                                v->TotImmediateFlipBytes = v->TotImmediateFlipBytes
-                                                               + v->NoOfDPP[i][j][k] * v->PDEAndMetaPTEBytesPerFrame[i][j][k] + v->MetaRowBytes[i][j][k]
-                                                               + v->DPTEBytesPerRow[i][j][k];
+                                                               + v->NoOfDPP[i][j][k] * (v->PDEAndMetaPTEBytesPerFrame[i][j][k] + v->MetaRowBytes[i][j][k]
+                                                               + v->DPTEBytesPerRow[i][j][k]);
                                        }
 
                                        for (k = 0; k < v->NumberOfActivePlanes; k++) {
index 7eb2173..27b8316 100644 (file)
@@ -5371,8 +5371,8 @@ void dml314_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_
                                        v->TotImmediateFlipBytes = 0.0;
                                        for (k = 0; k < v->NumberOfActivePlanes; k++) {
                                                v->TotImmediateFlipBytes = v->TotImmediateFlipBytes
-                                                               + v->NoOfDPP[i][j][k] * v->PDEAndMetaPTEBytesPerFrame[i][j][k] + v->MetaRowBytes[i][j][k]
-                                                               + v->DPTEBytesPerRow[i][j][k];
+                                                               + v->NoOfDPP[i][j][k] * (v->PDEAndMetaPTEBytesPerFrame[i][j][k] + v->MetaRowBytes[i][j][k]
+                                                               + v->DPTEBytesPerRow[i][j][k]);
                                        }
 
                                        for (k = 0; k < v->NumberOfActivePlanes; k++) {