drm/amd/display: DETBufferSizeInKbyte variable type modifications
authorChaitanya Dhere <chaitanya.dhere@amd.com>
Tue, 20 Apr 2021 21:21:17 +0000 (17:21 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 10 May 2021 22:10:34 +0000 (18:10 -0400)
[Why]
DETBufferSizeInKByte is not expected to be sub-dividable, hence
unsigned int is a better suited data-type. Change it to an array
as well to satisfy current requirements.

[How]
Change the data-type of DETBufferSizeInKByte to an unsigned int
array. Modify the all the variables like DETBufferSizeY,
DETBufferSizeC that are involved in DETBufferSizeInKByte calculations
to unsigned int in all the display_mode_vba_xx files.

Signed-off-by: Chaitanya Dhere <chaitanya.dhere@amd.com>
Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Acked-by: Stylon Wang <stylon.wang@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/dcn20/display_mode_vba_20.c
drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c
drivers/gpu/drm/amd/display/dc/dml/dcn21/display_mode_vba_21.c
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c
drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h

index 9729cf2..d3b5b6f 100644 (file)
@@ -2895,7 +2895,7 @@ static void dml20_DisplayPipeConfiguration(struct display_mode_lib *mode_lib)
                        RoundedUpMaxSwathSizeBytesC = 0.0;
 
                if (RoundedUpMaxSwathSizeBytesY + RoundedUpMaxSwathSizeBytesC
-                               <= mode_lib->vba.DETBufferSizeInKByte * 1024.0 / 2.0) {
+                               <= mode_lib->vba.DETBufferSizeInKByte[0] * 1024.0 / 2.0) {
                        mode_lib->vba.SwathHeightY[k] = MaximumSwathHeightY;
                        mode_lib->vba.SwathHeightC[k] = MaximumSwathHeightC;
                } else {
@@ -2904,17 +2904,17 @@ static void dml20_DisplayPipeConfiguration(struct display_mode_lib *mode_lib)
                }
 
                if (mode_lib->vba.SwathHeightC[k] == 0) {
-                       mode_lib->vba.DETBufferSizeY[k] = mode_lib->vba.DETBufferSizeInKByte * 1024;
+                       mode_lib->vba.DETBufferSizeY[k] = mode_lib->vba.DETBufferSizeInKByte[0] * 1024;
                        mode_lib->vba.DETBufferSizeC[k] = 0;
                } else if (mode_lib->vba.SwathHeightY[k] <= mode_lib->vba.SwathHeightC[k]) {
-                       mode_lib->vba.DETBufferSizeY[k] = mode_lib->vba.DETBufferSizeInKByte
+                       mode_lib->vba.DETBufferSizeY[k] = mode_lib->vba.DETBufferSizeInKByte[0]
                                        * 1024.0 / 2;
-                       mode_lib->vba.DETBufferSizeC[k] = mode_lib->vba.DETBufferSizeInKByte
+                       mode_lib->vba.DETBufferSizeC[k] = mode_lib->vba.DETBufferSizeInKByte[0]
                                        * 1024.0 / 2;
                } else {
-                       mode_lib->vba.DETBufferSizeY[k] = mode_lib->vba.DETBufferSizeInKByte
+                       mode_lib->vba.DETBufferSizeY[k] = mode_lib->vba.DETBufferSizeInKByte[0]
                                        * 1024.0 * 2 / 3;
-                       mode_lib->vba.DETBufferSizeC[k] = mode_lib->vba.DETBufferSizeInKByte
+                       mode_lib->vba.DETBufferSizeC[k] = mode_lib->vba.DETBufferSizeInKByte[0]
                                        * 1024.0 / 3;
                }
        }
@@ -3819,7 +3819,7 @@ void dml20_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                mode_lib->vba.MaximumSwathWidthInDETBuffer =
                                dml_min(
                                                mode_lib->vba.MaximumSwathWidthSupport,
-                                               mode_lib->vba.DETBufferSizeInKByte * 1024.0 / 2.0
+                                               mode_lib->vba.DETBufferSizeInKByte[0] * 1024.0 / 2.0
                                                                / (locals->BytePerPixelInDETY[k]
                                                                                * locals->MinSwathHeightY[k]
                                                                                + locals->BytePerPixelInDETC[k]
@@ -4322,7 +4322,7 @@ void dml20_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                                        locals->RoundedUpMaxSwathSizeBytesC = 0;
                                }
 
-                               if (locals->RoundedUpMaxSwathSizeBytesY + locals->RoundedUpMaxSwathSizeBytesC <= locals->DETBufferSizeInKByte * 1024 / 2) {
+                               if (locals->RoundedUpMaxSwathSizeBytesY + locals->RoundedUpMaxSwathSizeBytesC <= locals->DETBufferSizeInKByte[0] * 1024 / 2) {
                                        locals->SwathHeightYPerState[i][j][k] = locals->MaxSwathHeightY[k];
                                        locals->SwathHeightCPerState[i][j][k] = locals->MaxSwathHeightC[k];
                                } else {
@@ -4331,15 +4331,15 @@ void dml20_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                                }
 
                                if (locals->BytePerPixelInDETC[k] == 0) {
-                                       locals->LinesInDETLuma = locals->DETBufferSizeInKByte * 1024 / locals->BytePerPixelInDETY[k] / locals->SwathWidthYPerState[i][j][k];
+                                       locals->LinesInDETLuma = locals->DETBufferSizeInKByte[0] * 1024 / locals->BytePerPixelInDETY[k] / locals->SwathWidthYPerState[i][j][k];
                                        locals->LinesInDETChroma = 0;
                                } else if (locals->SwathHeightYPerState[i][j][k] <= locals->SwathHeightCPerState[i][j][k]) {
-                                       locals->LinesInDETLuma = locals->DETBufferSizeInKByte * 1024 / 2 / locals->BytePerPixelInDETY[k] /
+                                       locals->LinesInDETLuma = locals->DETBufferSizeInKByte[0] * 1024 / 2 / locals->BytePerPixelInDETY[k] /
                                                        locals->SwathWidthYPerState[i][j][k];
-                                       locals->LinesInDETChroma = locals->DETBufferSizeInKByte * 1024 / 2 / locals->BytePerPixelInDETC[k] / (locals->SwathWidthYPerState[i][j][k] / 2);
+                                       locals->LinesInDETChroma = locals->DETBufferSizeInKByte[0] * 1024 / 2 / locals->BytePerPixelInDETC[k] / (locals->SwathWidthYPerState[i][j][k] / 2);
                                } else {
-                                       locals->LinesInDETLuma = locals->DETBufferSizeInKByte * 1024 * 2 / 3 / locals->BytePerPixelInDETY[k] / locals->SwathWidthYPerState[i][j][k];
-                                       locals->LinesInDETChroma = locals->DETBufferSizeInKByte * 1024 / 3 / locals->BytePerPixelInDETY[k] / (locals->SwathWidthYPerState[i][j][k] / 2);
+                                       locals->LinesInDETLuma = locals->DETBufferSizeInKByte[0] * 1024 * 2 / 3 / locals->BytePerPixelInDETY[k] / locals->SwathWidthYPerState[i][j][k];
+                                       locals->LinesInDETChroma = locals->DETBufferSizeInKByte[0] * 1024 / 3 / locals->BytePerPixelInDETY[k] / (locals->SwathWidthYPerState[i][j][k] / 2);
                                }
 
                                locals->EffectiveLBLatencyHidingSourceLinesLuma = dml_min(locals->MaxLineBufferLines,
index 51098c2..fbed530 100644 (file)
@@ -2968,7 +2968,7 @@ static void dml20v2_DisplayPipeConfiguration(struct display_mode_lib *mode_lib)
                        RoundedUpMaxSwathSizeBytesC = 0.0;
 
                if (RoundedUpMaxSwathSizeBytesY + RoundedUpMaxSwathSizeBytesC
-                               <= mode_lib->vba.DETBufferSizeInKByte * 1024.0 / 2.0) {
+                               <= mode_lib->vba.DETBufferSizeInKByte[0] * 1024.0 / 2.0) {
                        mode_lib->vba.SwathHeightY[k] = MaximumSwathHeightY;
                        mode_lib->vba.SwathHeightC[k] = MaximumSwathHeightC;
                } else {
@@ -2977,17 +2977,17 @@ static void dml20v2_DisplayPipeConfiguration(struct display_mode_lib *mode_lib)
                }
 
                if (mode_lib->vba.SwathHeightC[k] == 0) {
-                       mode_lib->vba.DETBufferSizeY[k] = mode_lib->vba.DETBufferSizeInKByte * 1024;
+                       mode_lib->vba.DETBufferSizeY[k] = mode_lib->vba.DETBufferSizeInKByte[0] * 1024;
                        mode_lib->vba.DETBufferSizeC[k] = 0;
                } else if (mode_lib->vba.SwathHeightY[k] <= mode_lib->vba.SwathHeightC[k]) {
-                       mode_lib->vba.DETBufferSizeY[k] = mode_lib->vba.DETBufferSizeInKByte
+                       mode_lib->vba.DETBufferSizeY[k] = mode_lib->vba.DETBufferSizeInKByte[0]
                                        * 1024.0 / 2;
-                       mode_lib->vba.DETBufferSizeC[k] = mode_lib->vba.DETBufferSizeInKByte
+                       mode_lib->vba.DETBufferSizeC[k] = mode_lib->vba.DETBufferSizeInKByte[0]
                                        * 1024.0 / 2;
                } else {
-                       mode_lib->vba.DETBufferSizeY[k] = mode_lib->vba.DETBufferSizeInKByte
+                       mode_lib->vba.DETBufferSizeY[k] = mode_lib->vba.DETBufferSizeInKByte[0]
                                        * 1024.0 * 2 / 3;
-                       mode_lib->vba.DETBufferSizeC[k] = mode_lib->vba.DETBufferSizeInKByte
+                       mode_lib->vba.DETBufferSizeC[k] = mode_lib->vba.DETBufferSizeInKByte[0]
                                        * 1024.0 / 3;
                }
        }
@@ -3926,7 +3926,7 @@ void dml20v2_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode
                mode_lib->vba.MaximumSwathWidthInDETBuffer =
                                dml_min(
                                                mode_lib->vba.MaximumSwathWidthSupport,
-                                               mode_lib->vba.DETBufferSizeInKByte * 1024.0 / 2.0
+                                               mode_lib->vba.DETBufferSizeInKByte[0] * 1024.0 / 2.0
                                                                / (locals->BytePerPixelInDETY[k]
                                                                                * locals->MinSwathHeightY[k]
                                                                                + locals->BytePerPixelInDETC[k]
@@ -4443,7 +4443,7 @@ void dml20v2_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode
                                        locals->RoundedUpMaxSwathSizeBytesC = 0;
                                }
 
-                               if (locals->RoundedUpMaxSwathSizeBytesY + locals->RoundedUpMaxSwathSizeBytesC <= locals->DETBufferSizeInKByte * 1024 / 2) {
+                               if (locals->RoundedUpMaxSwathSizeBytesY + locals->RoundedUpMaxSwathSizeBytesC <= locals->DETBufferSizeInKByte[0] * 1024 / 2) {
                                        locals->SwathHeightYPerState[i][j][k] = locals->MaxSwathHeightY[k];
                                        locals->SwathHeightCPerState[i][j][k] = locals->MaxSwathHeightC[k];
                                } else {
@@ -4452,15 +4452,15 @@ void dml20v2_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode
                                }
 
                                if (locals->BytePerPixelInDETC[k] == 0) {
-                                       locals->LinesInDETLuma = locals->DETBufferSizeInKByte * 1024 / locals->BytePerPixelInDETY[k] / locals->SwathWidthYPerState[i][j][k];
+                                       locals->LinesInDETLuma = locals->DETBufferSizeInKByte[0] * 1024 / locals->BytePerPixelInDETY[k] / locals->SwathWidthYPerState[i][j][k];
                                        locals->LinesInDETChroma = 0;
                                } else if (locals->SwathHeightYPerState[i][j][k] <= locals->SwathHeightCPerState[i][j][k]) {
-                                       locals->LinesInDETLuma = locals->DETBufferSizeInKByte * 1024 / 2 / locals->BytePerPixelInDETY[k] /
+                                       locals->LinesInDETLuma = locals->DETBufferSizeInKByte[0] * 1024 / 2 / locals->BytePerPixelInDETY[k] /
                                                        locals->SwathWidthYPerState[i][j][k];
-                                       locals->LinesInDETChroma = locals->DETBufferSizeInKByte * 1024 / 2 / locals->BytePerPixelInDETC[k] / (locals->SwathWidthYPerState[i][j][k] / 2);
+                                       locals->LinesInDETChroma = locals->DETBufferSizeInKByte[0] * 1024 / 2 / locals->BytePerPixelInDETC[k] / (locals->SwathWidthYPerState[i][j][k] / 2);
                                } else {
-                                       locals->LinesInDETLuma = locals->DETBufferSizeInKByte * 1024 * 2 / 3 / locals->BytePerPixelInDETY[k] / locals->SwathWidthYPerState[i][j][k];
-                                       locals->LinesInDETChroma = locals->DETBufferSizeInKByte * 1024 / 3 / locals->BytePerPixelInDETY[k] / (locals->SwathWidthYPerState[i][j][k] / 2);
+                                       locals->LinesInDETLuma = locals->DETBufferSizeInKByte[0] * 1024 * 2 / 3 / locals->BytePerPixelInDETY[k] / locals->SwathWidthYPerState[i][j][k];
+                                       locals->LinesInDETChroma = locals->DETBufferSizeInKByte[0] * 1024 / 3 / locals->BytePerPixelInDETY[k] / (locals->SwathWidthYPerState[i][j][k] / 2);
                                }
 
                                locals->EffectiveLBLatencyHidingSourceLinesLuma = dml_min(locals->MaxLineBufferLines,
index 398210d..c26e742 100644 (file)
@@ -148,7 +148,7 @@ static double CalculateDCCConfiguration(
                bool                 DCCProgrammingAssumesScanDirectionUnknown,
                unsigned int         ViewportWidth,
                unsigned int         ViewportHeight,
-               double               DETBufferSize,
+               unsigned int         DETBufferSize,
                unsigned int         RequestHeight256Byte,
                unsigned int         SwathHeight,
                enum dm_swizzle_mode TilingFormat,
@@ -289,7 +289,7 @@ static void CalculateWatermarksAndDRAMSpeedChangeSupport(
                unsigned int MaxLineBufferLines,
                unsigned int LineBufferSize,
                unsigned int DPPOutputBufferPixels,
-               double DETBufferSizeInKByte,
+               unsigned int DETBufferSizeInKByte,
                unsigned int WritebackInterfaceLumaBufferSize,
                unsigned int WritebackInterfaceChromaBufferSize,
                double DCFCLK,
@@ -354,11 +354,11 @@ static void CalculateDCFCLKDeepSleep(
                double DPPCLK[],
                double *DCFCLKDeepSleep);
 static void CalculateDETBufferSize(
-               double DETBufferSizeInKByte,
+               unsigned int DETBufferSizeInKByte,
                unsigned int SwathHeightY,
                unsigned int SwathHeightC,
-               double *DETBufferSizeY,
-               double *DETBufferSizeC);
+               unsigned int *DETBufferSizeY,
+               unsigned int *DETBufferSizeC);
 static void CalculateUrgentBurstFactor(
                unsigned int DETBufferSizeInKByte,
                unsigned int SwathHeightY,
@@ -1074,7 +1074,7 @@ static double CalculateDCCConfiguration(
                bool DCCProgrammingAssumesScanDirectionUnknown,
                unsigned int ViewportWidth,
                unsigned int ViewportHeight,
-               double DETBufferSize,
+               unsigned int DETBufferSize,
                unsigned int RequestHeight256Byte,
                unsigned int SwathHeight,
                enum dm_swizzle_mode TilingFormat,
@@ -2246,7 +2246,7 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                        }
 
                        CalculateUrgentBurstFactor(
-                                       mode_lib->vba.DETBufferSizeInKByte,
+                                       mode_lib->vba.DETBufferSizeInKByte[0],
                                        mode_lib->vba.SwathHeightY[k],
                                        mode_lib->vba.SwathHeightC[k],
                                        locals->SwathWidthY[k],
@@ -2415,7 +2415,7 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                                mode_lib->vba.MaxLineBufferLines,
                                mode_lib->vba.LineBufferSize,
                                mode_lib->vba.DPPOutputBufferPixels,
-                               mode_lib->vba.DETBufferSizeInKByte,
+                               mode_lib->vba.DETBufferSizeInKByte[0],
                                mode_lib->vba.WritebackInterfaceLumaBufferSize,
                                mode_lib->vba.WritebackInterfaceChromaBufferSize,
                                mode_lib->vba.DCFCLK,
@@ -2588,7 +2588,7 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                        false, // We should always know the direction DCCProgrammingAssumesScanDirectionUnknown,
                        mode_lib->vba.ViewportWidth[k],
                        mode_lib->vba.ViewportHeight[k],
-                       mode_lib->vba.DETBufferSizeInKByte * 1024,
+                       mode_lib->vba.DETBufferSizeInKByte[0] * 1024,
                        locals->BlockHeight256BytesY[k],
                        mode_lib->vba.SwathHeightY[k],
                        mode_lib->vba.SurfaceTiling[k],
@@ -2689,13 +2689,13 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
        // Stutter Efficiency
        for (k = 0; k < mode_lib->vba.NumberOfActivePlanes; ++k) {
                CalculateDETBufferSize(
-                       mode_lib->vba.DETBufferSizeInKByte,
+                       mode_lib->vba.DETBufferSizeInKByte[0],
                        mode_lib->vba.SwathHeightY[k],
                        mode_lib->vba.SwathHeightC[k],
                        &locals->DETBufferSizeY[k],
                        &locals->DETBufferSizeC[k]);
 
-               locals->LinesInDETY[k] = locals->DETBufferSizeY[k]
+               locals->LinesInDETY[k] = (double)locals->DETBufferSizeY[k]
                                / locals->BytePerPixelDETY[k] / locals->SwathWidthY[k];
                locals->LinesInDETYRoundedDownToSwath[k] = dml_floor(
                                locals->LinesInDETY[k],
@@ -2984,7 +2984,7 @@ static void DisplayPipeConfiguration(struct display_mode_lib *mode_lib)
                        RoundedUpMaxSwathSizeBytesC = 0.0;
 
                if (RoundedUpMaxSwathSizeBytesY + RoundedUpMaxSwathSizeBytesC
-                               <= mode_lib->vba.DETBufferSizeInKByte * 1024.0 / 2.0) {
+                               <= mode_lib->vba.DETBufferSizeInKByte[0] * 1024.0 / 2.0) {
                        mode_lib->vba.SwathHeightY[k] = MaximumSwathHeightY;
                        mode_lib->vba.SwathHeightC[k] = MaximumSwathHeightC;
                } else {
@@ -2993,7 +2993,7 @@ static void DisplayPipeConfiguration(struct display_mode_lib *mode_lib)
                }
 
                CalculateDETBufferSize(
-                               mode_lib->vba.DETBufferSizeInKByte,
+                               mode_lib->vba.DETBufferSizeInKByte[0],
                                mode_lib->vba.SwathHeightY[k],
                                mode_lib->vba.SwathHeightC[k],
                                &mode_lib->vba.DETBufferSizeY[k],
@@ -3888,7 +3888,7 @@ void dml21_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                mode_lib->vba.MaximumSwathWidthInDETBuffer =
                                dml_min(
                                                mode_lib->vba.MaximumSwathWidthSupport,
-                                               mode_lib->vba.DETBufferSizeInKByte * 1024.0 / 2.0
+                                               mode_lib->vba.DETBufferSizeInKByte[0] * 1024.0 / 2.0
                                                                / (locals->BytePerPixelInDETY[k]
                                                                                * locals->MinSwathHeightY[k]
                                                                                + locals->BytePerPixelInDETC[k]
@@ -4437,7 +4437,7 @@ void dml21_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                                        mode_lib->vba.RoundedUpMaxSwathSizeBytesC = 0.0;
                                }
                                if (mode_lib->vba.RoundedUpMaxSwathSizeBytesY + mode_lib->vba.RoundedUpMaxSwathSizeBytesC
-                                               <= mode_lib->vba.DETBufferSizeInKByte * 1024.0 / 2.0) {
+                                               <= mode_lib->vba.DETBufferSizeInKByte[0] * 1024.0 / 2.0) {
                                        locals->SwathHeightYThisState[k] = locals->MaxSwathHeightY[k];
                                        locals->SwathHeightCThisState[k] = locals->MaxSwathHeightC[k];
                                } else {
@@ -4801,7 +4801,7 @@ void dml21_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                                        }
 
                                        CalculateUrgentBurstFactor(
-                                                       mode_lib->vba.DETBufferSizeInKByte,
+                                                       mode_lib->vba.DETBufferSizeInKByte[0],
                                                        locals->SwathHeightYThisState[k],
                                                        locals->SwathHeightCThisState[k],
                                                        locals->SwathWidthYThisState[k],
@@ -4975,7 +4975,7 @@ void dml21_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                                        mode_lib->vba.MaxLineBufferLines,
                                        mode_lib->vba.LineBufferSize,
                                        mode_lib->vba.DPPOutputBufferPixels,
-                                       mode_lib->vba.DETBufferSizeInKByte,
+                                       mode_lib->vba.DETBufferSizeInKByte[0],
                                        mode_lib->vba.WritebackInterfaceLumaBufferSize,
                                        mode_lib->vba.WritebackInterfaceChromaBufferSize,
                                        mode_lib->vba.DCFCLKPerState[i],
@@ -5230,7 +5230,7 @@ static void CalculateWatermarksAndDRAMSpeedChangeSupport(
                unsigned int MaxLineBufferLines,
                unsigned int LineBufferSize,
                unsigned int DPPOutputBufferPixels,
-               double DETBufferSizeInKByte,
+               unsigned int DETBufferSizeInKByte,
                unsigned int WritebackInterfaceLumaBufferSize,
                unsigned int WritebackInterfaceChromaBufferSize,
                double DCFCLK,
@@ -5285,8 +5285,8 @@ static void CalculateWatermarksAndDRAMSpeedChangeSupport(
        double EffectiveLBLatencyHidingC;
        double DPPOutputBufferLinesY;
        double DPPOutputBufferLinesC;
-       double DETBufferSizeY;
-       double DETBufferSizeC;
+       unsigned int DETBufferSizeY;
+       unsigned int DETBufferSizeC;
        double LinesInDETY[DC__NUM_DPP__MAX];
        double LinesInDETC;
        unsigned int LinesInDETYRoundedDownToSwath[DC__NUM_DPP__MAX];
@@ -5382,12 +5382,12 @@ static void CalculateWatermarksAndDRAMSpeedChangeSupport(
                                &DETBufferSizeY,
                                &DETBufferSizeC);
 
-               LinesInDETY[k] = DETBufferSizeY / BytePerPixelDETY[k] / SwathWidthY[k];
+               LinesInDETY[k] = (double)DETBufferSizeY / BytePerPixelDETY[k] / SwathWidthY[k];
                LinesInDETYRoundedDownToSwath[k] = dml_floor(LinesInDETY[k], SwathHeightY[k]);
                FullDETBufferingTimeY[k] = LinesInDETYRoundedDownToSwath[k]
                                * (HTotal[k] / PixelClock[k]) / VRatio[k];
                if (BytePerPixelDETC[k] > 0) {
-                       LinesInDETC = DETBufferSizeC / BytePerPixelDETC[k] / (SwathWidthY[k] / 2.0);
+                       LinesInDETC = (double)DETBufferSizeC / BytePerPixelDETC[k] / (SwathWidthY[k] / 2.0);
                        LinesInDETCRoundedDownToSwath = dml_floor(LinesInDETC, SwathHeightC[k]);
                        FullDETBufferingTimeC = LinesInDETCRoundedDownToSwath
                                        * (HTotal[k] / PixelClock[k]) / (VRatio[k] / 2);
@@ -5574,11 +5574,11 @@ static void CalculateDCFCLKDeepSleep(
 }
 
 static void CalculateDETBufferSize(
-               double DETBufferSizeInKByte,
+               unsigned int DETBufferSizeInKByte,
                unsigned int SwathHeightY,
                unsigned int SwathHeightC,
-               double *DETBufferSizeY,
-               double *DETBufferSizeC)
+               unsigned int *DETBufferSizeY,
+               unsigned int *DETBufferSizeC)
 {
        if (SwathHeightC == 0) {
                *DETBufferSizeY = DETBufferSizeInKByte * 1024;
@@ -5625,8 +5625,8 @@ static void CalculateUrgentBurstFactor(
        double DETBufferSizeInTimeLumaPre;
        double DETBufferSizeInTimeChroma;
        double DETBufferSizeInTimeChromaPre;
-       double DETBufferSizeY;
-       double DETBufferSizeC;
+       unsigned int DETBufferSizeY;
+       unsigned int DETBufferSizeC;
 
        *NotEnoughUrgentLatencyHiding = 0;
        *NotEnoughUrgentLatencyHidingPre = 0;
@@ -5663,7 +5663,7 @@ static void CalculateUrgentBurstFactor(
                        &DETBufferSizeY,
                        &DETBufferSizeC);
 
-       LinesInDETLuma = DETBufferSizeY / BytePerPixelInDETY / SwathWidthY;
+       LinesInDETLuma = (double)DETBufferSizeY / BytePerPixelInDETY / SwathWidthY;
        DETBufferSizeInTimeLuma = dml_floor(LinesInDETLuma, SwathHeightY) * LineTime / VRatio;
        if (DETBufferSizeInTimeLuma - UrgentLatency <= 0) {
                *NotEnoughUrgentLatencyHiding = 1;
@@ -5687,7 +5687,7 @@ static void CalculateUrgentBurstFactor(
        }
 
        if (BytePerPixelInDETC > 0) {
-               LinesInDETChroma = DETBufferSizeC / BytePerPixelInDETC / (SwathWidthY / 2);
+               LinesInDETChroma = (double)DETBufferSizeC / BytePerPixelInDETC / (SwathWidthY / 2);
                DETBufferSizeInTimeChroma = dml_floor(LinesInDETChroma, SwathHeightC) * LineTime
                                / (VRatio / 2);
                if (DETBufferSizeInTimeChroma - UrgentLatency <= 0) {
index cb3f70a..ec56210 100644 (file)
@@ -299,7 +299,7 @@ static void CalculateWatermarksAndDRAMSpeedChangeSupport(
                unsigned int MaxLineBufferLines,
                unsigned int LineBufferSize,
                unsigned int DPPOutputBufferPixels,
-               double DETBufferSizeInKByte,
+               unsigned int DETBufferSizeInKByte,
                unsigned int WritebackInterfaceBufferSize,
                double DCFCLK,
                double ReturnBW,
@@ -318,8 +318,8 @@ static void CalculateWatermarksAndDRAMSpeedChangeSupport(
                unsigned int DPPPerPlane[],
                bool DCCEnable[],
                double DPPCLK[],
-               double DETBufferSizeY[],
-               double DETBufferSizeC[],
+               unsigned int DETBufferSizeY[],
+               unsigned int DETBufferSizeC[],
                unsigned int SwathHeightY[],
                unsigned int SwathHeightC[],
                unsigned int LBBitPerPixel[],
@@ -570,7 +570,7 @@ static void CalculateStutterEfficiency(
                double SRExitTime,
                bool SynchronizedVBlank,
                int DPPPerPlane[],
-               double DETBufferSizeY[],
+               unsigned int DETBufferSizeY[],
                int BytePerPixelY[],
                double BytePerPixelDETY[],
                double SwathWidthY[],
@@ -603,7 +603,7 @@ static void CalculateStutterEfficiency(
 static void CalculateSwathAndDETConfiguration(
                bool ForceSingleDPP,
                int NumberOfActivePlanes,
-               long DETBufferSizeInKByte,
+               unsigned int DETBufferSizeInKByte,
                double MaximumSwathWidthLuma[],
                double MaximumSwathWidthChroma[],
                enum scan_direction_class SourceScan[],
@@ -635,8 +635,8 @@ static void CalculateSwathAndDETConfiguration(
                double SwathWidthChroma[],
                int SwathHeightY[],
                int SwathHeightC[],
-               double DETBufferSizeY[],
-               double DETBufferSizeC[],
+               unsigned int DETBufferSizeY[],
+               unsigned int DETBufferSizeC[],
                bool ViewportSizeSupportPerPlane[],
                bool *ViewportSizeSupport);
 static void CalculateSwathWidth(
@@ -2613,7 +2613,7 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                        CalculateUrgentBurstFactor(
                                        v->swath_width_luma_ub[k],
                                        v->swath_width_chroma_ub[k],
-                                       v->DETBufferSizeInKByte,
+                                       v->DETBufferSizeInKByte[0],
                                        v->SwathHeightY[k],
                                        v->SwathHeightC[k],
                                        v->HTotal[k] / v->PixelClock[k],
@@ -2635,7 +2635,7 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                        CalculateUrgentBurstFactor(
                                        v->swath_width_luma_ub[k],
                                        v->swath_width_chroma_ub[k],
-                                       v->DETBufferSizeInKByte,
+                                       v->DETBufferSizeInKByte[0],
                                        v->SwathHeightY[k],
                                        v->SwathHeightC[k],
                                        v->HTotal[k] / v->PixelClock[k],
@@ -2808,7 +2808,7 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                        v->MaxLineBufferLines,
                        v->LineBufferSize,
                        v->DPPOutputBufferPixels,
-                       v->DETBufferSizeInKByte,
+                       v->DETBufferSizeInKByte[0],
                        v->WritebackInterfaceBufferSize,
                        v->DCFCLK,
                        v->ReturnBW,
@@ -3027,7 +3027,7 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
                                v->SurfaceWidthC[k],
                                v->SurfaceHeightY[k],
                                v->SurfaceHeightC[k],
-                               v->DETBufferSizeInKByte * 1024,
+                               v->DETBufferSizeInKByte[0] * 1024,
                                v->BlockHeight256BytesY[k],
                                v->BlockHeight256BytesC[k],
                                v->SurfaceTiling[k],
@@ -3177,7 +3177,7 @@ static void DisplayPipeConfiguration(struct display_mode_lib *mode_lib)
        CalculateSwathAndDETConfiguration(
                        false,
                        mode_lib->vba.NumberOfActivePlanes,
-                       mode_lib->vba.DETBufferSizeInKByte,
+                       mode_lib->vba.DETBufferSizeInKByte[0],
                        dummy1,
                        dummy2,
                        mode_lib->vba.SourceScan,
@@ -3911,7 +3911,7 @@ void dml30_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
        CalculateSwathAndDETConfiguration(
                        true,
                        v->NumberOfActivePlanes,
-                       v->DETBufferSizeInKByte,
+                       v->DETBufferSizeInKByte[0],
                        v->MaximumSwathWidthLuma,
                        v->MaximumSwathWidthChroma,
                        v->SourceScan,
@@ -4399,7 +4399,7 @@ void dml30_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                        CalculateSwathAndDETConfiguration(
                                        false,
                                        v->NumberOfActivePlanes,
-                                       v->DETBufferSizeInKByte,
+                                       v->DETBufferSizeInKByte[0],
                                        v->MaximumSwathWidthLuma,
                                        v->MaximumSwathWidthChroma,
                                        v->SourceScan,
@@ -4622,7 +4622,7 @@ void dml30_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                                CalculateUrgentBurstFactor(
                                                v->swath_width_luma_ub_this_state[k],
                                                v->swath_width_chroma_ub_this_state[k],
-                                               v->DETBufferSizeInKByte,
+                                               v->DETBufferSizeInKByte[0],
                                                v->SwathHeightYThisState[k],
                                                v->SwathHeightCThisState[k],
                                                v->HTotal[k] / v->PixelClock[k],
@@ -5025,7 +5025,7 @@ void dml30_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                                        CalculateUrgentBurstFactor(
                                                        v->swath_width_luma_ub_this_state[k],
                                                        v->swath_width_chroma_ub_this_state[k],
-                                                       v->DETBufferSizeInKByte,
+                                                       v->DETBufferSizeInKByte[0],
                                                        v->SwathHeightYThisState[k],
                                                        v->SwathHeightCThisState[k],
                                                        v->HTotal[k] / v->PixelClock[k],
@@ -5197,7 +5197,7 @@ void dml30_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                                        v->MaxLineBufferLines,
                                        v->LineBufferSize,
                                        v->DPPOutputBufferPixels,
-                                       v->DETBufferSizeInKByte,
+                                       v->DETBufferSizeInKByte[0],
                                        v->WritebackInterfaceBufferSize,
                                        v->DCFCLKState[i][j],
                                        v->ReturnBWPerState[i][j],
@@ -5369,7 +5369,7 @@ static void CalculateWatermarksAndDRAMSpeedChangeSupport(
                unsigned int MaxLineBufferLines,
                unsigned int LineBufferSize,
                unsigned int DPPOutputBufferPixels,
-               double DETBufferSizeInKByte,
+               unsigned int DETBufferSizeInKByte,
                unsigned int WritebackInterfaceBufferSize,
                double DCFCLK,
                double ReturnBW,
@@ -5388,8 +5388,8 @@ static void CalculateWatermarksAndDRAMSpeedChangeSupport(
                unsigned int DPPPerPlane[],
                bool DCCEnable[],
                double DPPCLK[],
-               double DETBufferSizeY[],
-               double DETBufferSizeC[],
+               unsigned int DETBufferSizeY[],
+               unsigned int DETBufferSizeC[],
                unsigned int SwathHeightY[],
                unsigned int SwathHeightC[],
                unsigned int LBBitPerPixel[],
@@ -6126,7 +6126,7 @@ static void CalculateStutterEfficiency(
                double SRExitTime,
                bool SynchronizedVBlank,
                int DPPPerPlane[],
-               double DETBufferSizeY[],
+               unsigned int DETBufferSizeY[],
                int BytePerPixelY[],
                double BytePerPixelDETY[],
                double SwathWidthY[],
@@ -6273,7 +6273,7 @@ static void CalculateStutterEfficiency(
 static void CalculateSwathAndDETConfiguration(
                bool ForceSingleDPP,
                int NumberOfActivePlanes,
-               long DETBufferSizeInKByte,
+               unsigned int DETBufferSizeInKByte,
                double MaximumSwathWidthLuma[],
                double MaximumSwathWidthChroma[],
                enum scan_direction_class SourceScan[],
@@ -6305,8 +6305,8 @@ static void CalculateSwathAndDETConfiguration(
                double SwathWidthChroma[],
                int SwathHeightY[],
                int SwathHeightC[],
-               double DETBufferSizeY[],
-               double DETBufferSizeC[],
+               unsigned int DETBufferSizeY[],
+               unsigned int DETBufferSizeC[],
                bool ViewportSizeSupportPerPlane[],
                bool *ViewportSizeSupport)
 {
index 2a96745..d764d78 100644 (file)
@@ -299,7 +299,7 @@ static void fetch_ip_params(struct display_mode_lib *mode_lib)
        mode_lib->vba.MaxDCHUBToPSCLThroughput = ip->max_dchub_pscl_bw_pix_per_clk;
        mode_lib->vba.MaxPSCLToLBThroughput = ip->max_pscl_lb_bw_pix_per_clk;
        mode_lib->vba.ROBBufferSizeInKByte = ip->rob_buffer_size_kbytes;
-       mode_lib->vba.DETBufferSizeInKByte = ip->det_buffer_size_kbytes;
+       mode_lib->vba.DETBufferSizeInKByte[0] = ip->det_buffer_size_kbytes;
 
        mode_lib->vba.PixelChunkSizeInKByte = ip->pixel_chunk_size_kbytes;
        mode_lib->vba.MetaChunkSize = ip->meta_chunk_size_kbytes;
index 025aa5b..86db86b 100644 (file)
@@ -233,7 +233,7 @@ struct vba_vars_st {
        // IP Parameters
        //
        unsigned int ROBBufferSizeInKByte;
-       double DETBufferSizeInKByte;
+       unsigned int DETBufferSizeInKByte[DC__NUM_DPP__MAX];
        double DETBufferSizeInTime;
        unsigned int DPPOutputBufferPixels;
        unsigned int OPPOutputBufferLines;
@@ -351,8 +351,8 @@ struct vba_vars_st {
 
        // Intermediates/Informational
        bool ImmediateFlipSupport;
-       double DETBufferSizeY[DC__NUM_DPP__MAX];
-       double DETBufferSizeC[DC__NUM_DPP__MAX];
+       unsigned int DETBufferSizeY[DC__NUM_DPP__MAX];
+       unsigned int DETBufferSizeC[DC__NUM_DPP__MAX];
        unsigned int SwathHeightY[DC__NUM_DPP__MAX];
        unsigned int SwathHeightC[DC__NUM_DPP__MAX];
        unsigned int LBBitPerPixel[DC__NUM_DPP__MAX];
@@ -631,8 +631,8 @@ struct vba_vars_st {
        enum odm_combine_mode odm_combine_dummy[DC__NUM_DPP__MAX];
        double         dummy1[DC__NUM_DPP__MAX];
        double         dummy2[DC__NUM_DPP__MAX];
-       double         dummy3[DC__NUM_DPP__MAX];
-       double         dummy4[DC__NUM_DPP__MAX];
+       unsigned int   dummy3[DC__NUM_DPP__MAX];
+       unsigned int   dummy4[DC__NUM_DPP__MAX];
        double         dummy5;
        double         dummy6;
        double         dummy7[DC__NUM_DPP__MAX];
@@ -872,8 +872,8 @@ struct vba_vars_st {
        int PercentMarginOverMinimumRequiredDCFCLK;
        bool DynamicMetadataSupported[DC__VOLTAGE_STATES][2];
        enum immediate_flip_requirement ImmediateFlipRequirement;
-       double DETBufferSizeYThisState[DC__NUM_DPP__MAX];
-       double DETBufferSizeCThisState[DC__NUM_DPP__MAX];
+       unsigned int DETBufferSizeYThisState[DC__NUM_DPP__MAX];
+       unsigned int DETBufferSizeCThisState[DC__NUM_DPP__MAX];
        bool NoUrgentLatencyHiding[DC__NUM_DPP__MAX];
        bool NoUrgentLatencyHidingPre[DC__NUM_DPP__MAX];
        int swath_width_luma_ub_this_state[DC__NUM_DPP__MAX];