Re: [PATCH 12/12] drm/amd/display: Rewrite CalculateWriteBackDISPCLK function

2022-07-16 Thread André Almeida
Às 13:45 de 14/07/22, Maíra Canal escreveu:
> Based on the dml30_CalculateWriteBackDISPCLK, it separates the
> DISPCLK calculations on three variables, making no functional changes, in 
> order
> to make it more readable and better express that three values are being 
> compared
> on dml_max.
> 
> Signed-off-by: Maíra Canal 
> ---
>  .../drm/amd/display/dc/dml/display_mode_vba.c | 31 ---
>  1 file changed, 20 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c 
> b/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
> index c5a0a3649e9a..5fc1d16a2e15 100644
> --- a/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
> +++ b/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
> @@ -1113,20 +1113,29 @@ double CalculateWriteBackDISPCLK(
>   unsigned int HTotal,
>   unsigned int WritebackChromaLineBufferWidth)
>  {
> - double CalculateWriteBackDISPCLK = 1.01 * PixelClock * dml_max(
> - dml_ceil(WritebackLumaHTaps / 4.0, 1) / WritebackHRatio,
> - dml_max((WritebackLumaVTaps * dml_ceil(1.0 / WritebackVRatio, 
> 1) * dml_ceil(WritebackDestinationWidth / 4.0, 1)
> +
> + double DISPCLK_H = 0, DISPCLK_V = 0, DISPCLK_HB = 0;
> + double CalculateWriteBackDISPCLK = 0;
> +

Small nit: no need to initialize to 0 those variables here. They are
getting initialized bellow anyway.

> + DISPCLK_H = dml_ceil(WritebackLumaHTaps / 4.0, 1) / WritebackHRatio;
> + DISPCLK_V = (WritebackLumaVTaps * dml_ceil(1.0 / WritebackVRatio, 1) * 
> dml_ceil(WritebackDestinationWidth / 4.0, 1)
>   + dml_ceil(WritebackDestinationWidth / 4.0, 1)) / 
> (double) HTotal + dml_ceil(1.0 / WritebackVRatio, 1)
> - * (dml_ceil(WritebackLumaVTaps / 4.0, 1) + 4.0) / 
> (double) HTotal,
> - dml_ceil(1.0 / WritebackVRatio, 1) * 
> WritebackDestinationWidth / (double) HTotal));
> + * (dml_ceil(WritebackLumaVTaps / 4.0, 1) + 4.0) / 
> (double) HTotal;
> + DISPCLK_HB = dml_ceil(1.0 / WritebackVRatio, 1) * 
> WritebackDestinationWidth / (double) HTotal;
> +
> + CalculateWriteBackDISPCLK = 1.01 * PixelClock * dml_max3(DISPCLK_H, 
> DISPCLK_V, DISPCLK_HB);
> +
>   if (WritebackPixelFormat != dm_444_32) {
> - CalculateWriteBackDISPCLK = dml_max(CalculateWriteBackDISPCLK, 
> 1.01 * PixelClock * dml_max(
> - dml_ceil(WritebackChromaHTaps / 2.0, 1) / (2 * 
> WritebackHRatio),
> - dml_max((WritebackChromaVTaps * dml_ceil(1 / (2 * 
> WritebackVRatio), 1) * dml_ceil(WritebackDestinationWidth / 2.0 / 2.0, 1)
> - + dml_ceil(WritebackDestinationWidth / 2.0 / 
> WritebackChromaLineBufferWidth, 1)) / HTotal
> - + dml_ceil(1 / (2 * WritebackVRatio), 1) * 
> (dml_ceil(WritebackChromaVTaps / 4.0, 1) + 4) / HTotal,
> - dml_ceil(1.0 / (2 * WritebackVRatio), 1) * 
> WritebackDestinationWidth / 2.0 / HTotal)));
> + DISPCLK_H = dml_ceil(WritebackChromaHTaps / 2.0, 1) / (2 * 
> WritebackHRatio);
> + DISPCLK_V = (WritebackChromaVTaps * dml_ceil(1 / (2 * 
> WritebackVRatio), 1) *
> + dml_ceil(WritebackDestinationWidth / 4.0, 1) +
> + dml_ceil(WritebackDestinationWidth / 2.0 / 
> WritebackChromaLineBufferWidth, 1)) / HTotal +
> + dml_ceil(1 / (2 * WritebackVRatio), 1) 
> *(dml_ceil(WritebackChromaVTaps / 4.0, 1) + 4) / HTotal;
> + DISPCLK_HB = dml_ceil(1.0 / (2 * WritebackVRatio), 1) * 
> WritebackDestinationWidth / 2.0 / HTotal;
> + CalculateWriteBackDISPCLK = dml_max(CalculateWriteBackDISPCLK,
> + 1.01 * PixelClock * dml_max3(DISPCLK_H, 
> DISPCLK_V, DISPCLK_HB));
>   }
> +
>   return CalculateWriteBackDISPCLK;
>  }
>  


[PATCH 12/12] drm/amd/display: Rewrite CalculateWriteBackDISPCLK function

2022-07-14 Thread Maíra Canal
Based on the dml30_CalculateWriteBackDISPCLK, it separates the
DISPCLK calculations on three variables, making no functional changes, in order
to make it more readable and better express that three values are being compared
on dml_max.

Signed-off-by: Maíra Canal 
---
 .../drm/amd/display/dc/dml/display_mode_vba.c | 31 ---
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c 
b/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
index c5a0a3649e9a..5fc1d16a2e15 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
@@ -1113,20 +1113,29 @@ double CalculateWriteBackDISPCLK(
unsigned int HTotal,
unsigned int WritebackChromaLineBufferWidth)
 {
-   double CalculateWriteBackDISPCLK = 1.01 * PixelClock * dml_max(
-   dml_ceil(WritebackLumaHTaps / 4.0, 1) / WritebackHRatio,
-   dml_max((WritebackLumaVTaps * dml_ceil(1.0 / WritebackVRatio, 
1) * dml_ceil(WritebackDestinationWidth / 4.0, 1)
+
+   double DISPCLK_H = 0, DISPCLK_V = 0, DISPCLK_HB = 0;
+   double CalculateWriteBackDISPCLK = 0;
+
+   DISPCLK_H = dml_ceil(WritebackLumaHTaps / 4.0, 1) / WritebackHRatio;
+   DISPCLK_V = (WritebackLumaVTaps * dml_ceil(1.0 / WritebackVRatio, 1) * 
dml_ceil(WritebackDestinationWidth / 4.0, 1)
+ dml_ceil(WritebackDestinationWidth / 4.0, 1)) / 
(double) HTotal + dml_ceil(1.0 / WritebackVRatio, 1)
-   * (dml_ceil(WritebackLumaVTaps / 4.0, 1) + 4.0) / 
(double) HTotal,
-   dml_ceil(1.0 / WritebackVRatio, 1) * 
WritebackDestinationWidth / (double) HTotal));
+   * (dml_ceil(WritebackLumaVTaps / 4.0, 1) + 4.0) / 
(double) HTotal;
+   DISPCLK_HB = dml_ceil(1.0 / WritebackVRatio, 1) * 
WritebackDestinationWidth / (double) HTotal;
+
+   CalculateWriteBackDISPCLK = 1.01 * PixelClock * dml_max3(DISPCLK_H, 
DISPCLK_V, DISPCLK_HB);
+
if (WritebackPixelFormat != dm_444_32) {
-   CalculateWriteBackDISPCLK = dml_max(CalculateWriteBackDISPCLK, 
1.01 * PixelClock * dml_max(
-   dml_ceil(WritebackChromaHTaps / 2.0, 1) / (2 * 
WritebackHRatio),
-   dml_max((WritebackChromaVTaps * dml_ceil(1 / (2 * 
WritebackVRatio), 1) * dml_ceil(WritebackDestinationWidth / 2.0 / 2.0, 1)
-   + dml_ceil(WritebackDestinationWidth / 2.0 / 
WritebackChromaLineBufferWidth, 1)) / HTotal
-   + dml_ceil(1 / (2 * WritebackVRatio), 1) * 
(dml_ceil(WritebackChromaVTaps / 4.0, 1) + 4) / HTotal,
-   dml_ceil(1.0 / (2 * WritebackVRatio), 1) * 
WritebackDestinationWidth / 2.0 / HTotal)));
+   DISPCLK_H = dml_ceil(WritebackChromaHTaps / 2.0, 1) / (2 * 
WritebackHRatio);
+   DISPCLK_V = (WritebackChromaVTaps * dml_ceil(1 / (2 * 
WritebackVRatio), 1) *
+   dml_ceil(WritebackDestinationWidth / 4.0, 1) +
+   dml_ceil(WritebackDestinationWidth / 2.0 / 
WritebackChromaLineBufferWidth, 1)) / HTotal +
+   dml_ceil(1 / (2 * WritebackVRatio), 1) 
*(dml_ceil(WritebackChromaVTaps / 4.0, 1) + 4) / HTotal;
+   DISPCLK_HB = dml_ceil(1.0 / (2 * WritebackVRatio), 1) * 
WritebackDestinationWidth / 2.0 / HTotal;
+   CalculateWriteBackDISPCLK = dml_max(CalculateWriteBackDISPCLK,
+   1.01 * PixelClock * dml_max3(DISPCLK_H, 
DISPCLK_V, DISPCLK_HB));
}
+
return CalculateWriteBackDISPCLK;
 }
 
-- 
2.36.1