Applied the series.  Thanks!

Alex

On Sat, Sep 17, 2022 at 8:38 AM Maíra Canal <mairaca...@riseup.net> wrote:
>
> Hi Nathan,
>
> On 9/16/22 18:06, Nathan Chancellor wrote:
> > Most of the arguments are identical between the two call sites and they
> > can be accessed through the 'struct vba_vars_st' pointer. This reduces
> > the total amount of stack space that
> > dml314_ModeSupportAndSystemConfigurationFull() uses by 240 bytes with
> > LLVM 16 (2216 -> 1976), helping clear up the following clang warning:
> >
> >   
> > drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn314/display_mode_vba_314.c:4020:6:
> >  error: stack frame size (2216) exceeds limit (2048) in 
> > 'dml314_ModeSupportAndSystemConfigurationFull' [-Werror,-Wframe-larger-than]
> >   void dml314_ModeSupportAndSystemConfigurationFull(struct display_mode_lib 
> > *mode_lib)
> >        ^
> >   1 error generated.
> >
> > Link: https://github.com/ClangBuiltLinux/linux/issues/1710
> > Reported-by: "kernelci.org bot" <b...@kernelci.org>
> > Signed-off-by: Nathan Chancellor <nat...@kernel.org>
>
> I have built-tested the whole series with clang 14.0.5 (Fedora
> 14.0.5-1.fc36), using:
>
> $ make -kj"$(nproc)" ARCH=x86_64 LLVM=1 mrproper allmodconfig
> drivers/gpu/drm/amd/amdgpu/
>
> Another great patch to the DML! As Tom, I also would like to see this
> expand to all display_mode_vba files, but so far this is great to
> unbreak the build.
>
> To the whole series:
>
> Tested-by: Maíra Canal <mairaca...@riseup.net>
>
> Best Regards,
> - Maíra Canal
>
> > ---
> >
> > This is just commit ab2ac59c32db ("drm/amd/display: Reduce number of
> > arguments of dml31's CalculateWatermarksAndDRAMSpeedChangeSupport()")
> > applied to dml314.
> >
> >  .../dc/dml/dcn314/display_mode_vba_314.c      | 248 ++++--------------
> >  1 file changed, 52 insertions(+), 196 deletions(-)
> >
> > diff --git 
> > a/drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c 
> > b/drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
> > index 2829f179f982..32ceb72f7a14 100644
> > --- a/drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
> > +++ b/drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
> > @@ -325,64 +325,28 @@ static void 
> > CalculateVupdateAndDynamicMetadataParameters(
> >  static void CalculateWatermarksAndDRAMSpeedChangeSupport(
> >               struct display_mode_lib *mode_lib,
> >               unsigned int PrefetchMode,
> > -             unsigned int NumberOfActivePlanes,
> > -             unsigned int MaxLineBufferLines,
> > -             unsigned int LineBufferSize,
> > -             unsigned int WritebackInterfaceBufferSize,
> >               double DCFCLK,
> >               double ReturnBW,
> > -             bool SynchronizedVBlank,
> > -             unsigned int dpte_group_bytes[],
> > -             unsigned int MetaChunkSize,
> >               double UrgentLatency,
> >               double ExtraLatency,
> > -             double WritebackLatency,
> > -             double WritebackChunkSize,
> >               double SOCCLK,
> > -             double DRAMClockChangeLatency,
> > -             double SRExitTime,
> > -             double SREnterPlusExitTime,
> > -             double SRExitZ8Time,
> > -             double SREnterPlusExitZ8Time,
> >               double DCFCLKDeepSleep,
> >               unsigned int DETBufferSizeY[],
> >               unsigned int DETBufferSizeC[],
> >               unsigned int SwathHeightY[],
> >               unsigned int SwathHeightC[],
> > -             unsigned int LBBitPerPixel[],
> >               double SwathWidthY[],
> >               double SwathWidthC[],
> > -             double HRatio[],
> > -             double HRatioChroma[],
> > -             unsigned int vtaps[],
> > -             unsigned int VTAPsChroma[],
> > -             double VRatio[],
> > -             double VRatioChroma[],
> > -             unsigned int HTotal[],
> > -             double PixelClock[],
> > -             unsigned int BlendingAndTiming[],
> >               unsigned int DPPPerPlane[],
> >               double BytePerPixelDETY[],
> >               double BytePerPixelDETC[],
> > -             double DSTXAfterScaler[],
> > -             double DSTYAfterScaler[],
> > -             bool WritebackEnable[],
> > -             enum source_format_class WritebackPixelFormat[],
> > -             double WritebackDestinationWidth[],
> > -             double WritebackDestinationHeight[],
> > -             double WritebackSourceHeight[],
> >               bool UnboundedRequestEnabled,
> >               unsigned int CompressedBufferSizeInkByte,
> >               enum clock_change_support *DRAMClockChangeSupport,
> > -             double *UrgentWatermark,
> > -             double *WritebackUrgentWatermark,
> > -             double *DRAMClockChangeWatermark,
> > -             double *WritebackDRAMClockChangeWatermark,
> >               double *StutterExitWatermark,
> >               double *StutterEnterPlusExitWatermark,
> >               double *Z8StutterExitWatermark,
> > -             double *Z8StutterEnterPlusExitWatermark,
> > -             double *MinActiveDRAMClockChangeLatencySupported);
> > +             double *Z8StutterEnterPlusExitWatermark);
> >
> >  static void CalculateDCFCLKDeepSleep(
> >               struct display_mode_lib *mode_lib,
> > @@ -3041,64 +3005,28 @@ static void 
> > DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
> >               CalculateWatermarksAndDRAMSpeedChangeSupport(
> >                               mode_lib,
> >                               PrefetchMode,
> > -                             v->NumberOfActivePlanes,
> > -                             v->MaxLineBufferLines,
> > -                             v->LineBufferSize,
> > -                             v->WritebackInterfaceBufferSize,
> >                               v->DCFCLK,
> >                               v->ReturnBW,
> > -                             v->SynchronizedVBlank,
> > -                             v->dpte_group_bytes,
> > -                             v->MetaChunkSize,
> >                               v->UrgentLatency,
> >                               v->UrgentExtraLatency,
> > -                             v->WritebackLatency,
> > -                             v->WritebackChunkSize,
> >                               v->SOCCLK,
> > -                             v->DRAMClockChangeLatency,
> > -                             v->SRExitTime,
> > -                             v->SREnterPlusExitTime,
> > -                             v->SRExitZ8Time,
> > -                             v->SREnterPlusExitZ8Time,
> >                               v->DCFCLKDeepSleep,
> >                               v->DETBufferSizeY,
> >                               v->DETBufferSizeC,
> >                               v->SwathHeightY,
> >                               v->SwathHeightC,
> > -                             v->LBBitPerPixel,
> >                               v->SwathWidthY,
> >                               v->SwathWidthC,
> > -                             v->HRatio,
> > -                             v->HRatioChroma,
> > -                             v->vtaps,
> > -                             v->VTAPsChroma,
> > -                             v->VRatio,
> > -                             v->VRatioChroma,
> > -                             v->HTotal,
> > -                             v->PixelClock,
> > -                             v->BlendingAndTiming,
> >                               v->DPPPerPlane,
> >                               v->BytePerPixelDETY,
> >                               v->BytePerPixelDETC,
> > -                             v->DSTXAfterScaler,
> > -                             v->DSTYAfterScaler,
> > -                             v->WritebackEnable,
> > -                             v->WritebackPixelFormat,
> > -                             v->WritebackDestinationWidth,
> > -                             v->WritebackDestinationHeight,
> > -                             v->WritebackSourceHeight,
> >                               v->UnboundedRequestEnabled,
> >                               v->CompressedBufferSizeInkByte,
> >                               &DRAMClockChangeSupport,
> > -                             &v->UrgentWatermark,
> > -                             &v->WritebackUrgentWatermark,
> > -                             &v->DRAMClockChangeWatermark,
> > -                             &v->WritebackDRAMClockChangeWatermark,
> >                               &v->StutterExitWatermark,
> >                               &v->StutterEnterPlusExitWatermark,
> >                               &v->Z8StutterExitWatermark,
> > -                             &v->Z8StutterEnterPlusExitWatermark,
> > -                             &v->MinActiveDRAMClockChangeLatencySupported);
> > +                             &v->Z8StutterEnterPlusExitWatermark);
> >
> >               for (k = 0; k < v->NumberOfActivePlanes; ++k) {
> >                       if (v->WritebackEnable[k] == true) {
> > @@ -5496,64 +5424,28 @@ void 
> > dml314_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_
> >                       CalculateWatermarksAndDRAMSpeedChangeSupport(
> >                                       mode_lib,
> >                                       v->PrefetchModePerState[i][j],
> > -                                     v->NumberOfActivePlanes,
> > -                                     v->MaxLineBufferLines,
> > -                                     v->LineBufferSize,
> > -                                     v->WritebackInterfaceBufferSize,
> >                                       v->DCFCLKState[i][j],
> >                                       v->ReturnBWPerState[i][j],
> > -                                     v->SynchronizedVBlank,
> > -                                     v->dpte_group_bytes,
> > -                                     v->MetaChunkSize,
> >                                       v->UrgLatency[i],
> >                                       v->ExtraLatency,
> > -                                     v->WritebackLatency,
> > -                                     v->WritebackChunkSize,
> >                                       v->SOCCLKPerState[i],
> > -                                     v->DRAMClockChangeLatency,
> > -                                     v->SRExitTime,
> > -                                     v->SREnterPlusExitTime,
> > -                                     v->SRExitZ8Time,
> > -                                     v->SREnterPlusExitZ8Time,
> >                                       v->ProjectedDCFCLKDeepSleep[i][j],
> >                                       v->DETBufferSizeYThisState,
> >                                       v->DETBufferSizeCThisState,
> >                                       v->SwathHeightYThisState,
> >                                       v->SwathHeightCThisState,
> > -                                     v->LBBitPerPixel,
> >                                       v->SwathWidthYThisState,
> >                                       v->SwathWidthCThisState,
> > -                                     v->HRatio,
> > -                                     v->HRatioChroma,
> > -                                     v->vtaps,
> > -                                     v->VTAPsChroma,
> > -                                     v->VRatio,
> > -                                     v->VRatioChroma,
> > -                                     v->HTotal,
> > -                                     v->PixelClock,
> > -                                     v->BlendingAndTiming,
> >                                       v->NoOfDPPThisState,
> >                                       v->BytePerPixelInDETY,
> >                                       v->BytePerPixelInDETC,
> > -                                     v->DSTXAfterScaler,
> > -                                     v->DSTYAfterScaler,
> > -                                     v->WritebackEnable,
> > -                                     v->WritebackPixelFormat,
> > -                                     v->WritebackDestinationWidth,
> > -                                     v->WritebackDestinationHeight,
> > -                                     v->WritebackSourceHeight,
> >                                       UnboundedRequestEnabledThisState,
> >                                       CompressedBufferSizeInkByteThisState,
> >                                       &v->DRAMClockChangeSupport[i][j],
> > -                                     &v->UrgentWatermark,
> > -                                     &v->WritebackUrgentWatermark,
> > -                                     &v->DRAMClockChangeWatermark,
> > -                                     &v->WritebackDRAMClockChangeWatermark,
> > -                                     &dummy,
> >                                       &dummy,
> >                                       &dummy,
> >                                       &dummy,
> > -                                     
> > &v->MinActiveDRAMClockChangeLatencySupported);
> > +                                     &dummy);
> >               }
> >       }
> >
> > @@ -5679,64 +5571,28 @@ void 
> > dml314_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_
> >  static void CalculateWatermarksAndDRAMSpeedChangeSupport(
> >               struct display_mode_lib *mode_lib,
> >               unsigned int PrefetchMode,
> > -             unsigned int NumberOfActivePlanes,
> > -             unsigned int MaxLineBufferLines,
> > -             unsigned int LineBufferSize,
> > -             unsigned int WritebackInterfaceBufferSize,
> >               double DCFCLK,
> >               double ReturnBW,
> > -             bool SynchronizedVBlank,
> > -             unsigned int dpte_group_bytes[],
> > -             unsigned int MetaChunkSize,
> >               double UrgentLatency,
> >               double ExtraLatency,
> > -             double WritebackLatency,
> > -             double WritebackChunkSize,
> >               double SOCCLK,
> > -             double DRAMClockChangeLatency,
> > -             double SRExitTime,
> > -             double SREnterPlusExitTime,
> > -             double SRExitZ8Time,
> > -             double SREnterPlusExitZ8Time,
> >               double DCFCLKDeepSleep,
> >               unsigned int DETBufferSizeY[],
> >               unsigned int DETBufferSizeC[],
> >               unsigned int SwathHeightY[],
> >               unsigned int SwathHeightC[],
> > -             unsigned int LBBitPerPixel[],
> >               double SwathWidthY[],
> >               double SwathWidthC[],
> > -             double HRatio[],
> > -             double HRatioChroma[],
> > -             unsigned int vtaps[],
> > -             unsigned int VTAPsChroma[],
> > -             double VRatio[],
> > -             double VRatioChroma[],
> > -             unsigned int HTotal[],
> > -             double PixelClock[],
> > -             unsigned int BlendingAndTiming[],
> >               unsigned int DPPPerPlane[],
> >               double BytePerPixelDETY[],
> >               double BytePerPixelDETC[],
> > -             double DSTXAfterScaler[],
> > -             double DSTYAfterScaler[],
> > -             bool WritebackEnable[],
> > -             enum source_format_class WritebackPixelFormat[],
> > -             double WritebackDestinationWidth[],
> > -             double WritebackDestinationHeight[],
> > -             double WritebackSourceHeight[],
> >               bool UnboundedRequestEnabled,
> >               unsigned int CompressedBufferSizeInkByte,
> >               enum clock_change_support *DRAMClockChangeSupport,
> > -             double *UrgentWatermark,
> > -             double *WritebackUrgentWatermark,
> > -             double *DRAMClockChangeWatermark,
> > -             double *WritebackDRAMClockChangeWatermark,
> >               double *StutterExitWatermark,
> >               double *StutterEnterPlusExitWatermark,
> >               double *Z8StutterExitWatermark,
> > -             double *Z8StutterEnterPlusExitWatermark,
> > -             double *MinActiveDRAMClockChangeLatencySupported)
> > +             double *Z8StutterEnterPlusExitWatermark)
> >  {
> >       struct vba_vars_st *v = &mode_lib->vba;
> >       double EffectiveLBLatencyHidingY;
> > @@ -5756,103 +5612,103 @@ static void 
> > CalculateWatermarksAndDRAMSpeedChangeSupport(
> >       double TotalPixelBW = 0.0;
> >       int k, j;
> >
> > -     *UrgentWatermark = UrgentLatency + ExtraLatency;
> > +     v->UrgentWatermark = UrgentLatency + ExtraLatency;
> >
> >  #ifdef __DML_VBA_DEBUG__
> >       dml_print("DML::%s: UrgentLatency = %f\n", __func__, UrgentLatency);
> >       dml_print("DML::%s: ExtraLatency = %f\n", __func__, ExtraLatency);
> > -     dml_print("DML::%s: UrgentWatermark = %f\n", __func__, 
> > *UrgentWatermark);
> > +     dml_print("DML::%s: UrgentWatermark = %f\n", __func__, 
> > v->UrgentWatermark);
> >  #endif
> >
> > -     *DRAMClockChangeWatermark = DRAMClockChangeLatency + *UrgentWatermark;
> > +     v->DRAMClockChangeWatermark = v->DRAMClockChangeLatency + 
> > v->UrgentWatermark;
> >
> >  #ifdef __DML_VBA_DEBUG__
> > -     dml_print("DML::%s: DRAMClockChangeLatency = %f\n", __func__, 
> > DRAMClockChangeLatency);
> > -     dml_print("DML::%s: DRAMClockChangeWatermark = %f\n", __func__, 
> > *DRAMClockChangeWatermark);
> > +     dml_print("DML::%s: v->DRAMClockChangeLatency = %f\n", __func__, 
> > v->DRAMClockChangeLatency);
> > +     dml_print("DML::%s: DRAMClockChangeWatermark = %f\n", __func__, 
> > v->DRAMClockChangeWatermark);
> >  #endif
> >
> >       v->TotalActiveWriteback = 0;
> > -     for (k = 0; k < NumberOfActivePlanes; ++k) {
> > -             if (WritebackEnable[k] == true) {
> > +     for (k = 0; k < v->NumberOfActivePlanes; ++k) {
> > +             if (v->WritebackEnable[k] == true) {
> >                       v->TotalActiveWriteback = v->TotalActiveWriteback + 1;
> >               }
> >       }
> >
> >       if (v->TotalActiveWriteback <= 1) {
> > -             *WritebackUrgentWatermark = WritebackLatency;
> > +             v->WritebackUrgentWatermark = v->WritebackLatency;
> >       } else {
> > -             *WritebackUrgentWatermark = WritebackLatency + 
> > WritebackChunkSize * 1024.0 / 32.0 / SOCCLK;
> > +             v->WritebackUrgentWatermark = v->WritebackLatency + 
> > v->WritebackChunkSize * 1024.0 / 32.0 / SOCCLK;
> >       }
> >
> >       if (v->TotalActiveWriteback <= 1) {
> > -             *WritebackDRAMClockChangeWatermark = DRAMClockChangeLatency + 
> > WritebackLatency;
> > +             v->WritebackDRAMClockChangeWatermark = 
> > v->DRAMClockChangeLatency + v->WritebackLatency;
> >       } else {
> > -             *WritebackDRAMClockChangeWatermark = DRAMClockChangeLatency + 
> > WritebackLatency + WritebackChunkSize * 1024.0 / 32.0 / SOCCLK;
> > +             v->WritebackDRAMClockChangeWatermark = 
> > v->DRAMClockChangeLatency + v->WritebackLatency + v->WritebackChunkSize * 
> > 1024.0 / 32.0 / SOCCLK;
> >       }
> >
> > -     for (k = 0; k < NumberOfActivePlanes; ++k) {
> > +     for (k = 0; k < v->NumberOfActivePlanes; ++k) {
> >               TotalPixelBW = TotalPixelBW
> > -                             + DPPPerPlane[k] * (SwathWidthY[k] * 
> > BytePerPixelDETY[k] * VRatio[k] + SwathWidthC[k] * BytePerPixelDETC[k] * 
> > VRatioChroma[k])
> > -                                             / (HTotal[k] / PixelClock[k]);
> > +                             + DPPPerPlane[k] * (SwathWidthY[k] * 
> > BytePerPixelDETY[k] * v->VRatio[k] + SwathWidthC[k] * BytePerPixelDETC[k] * 
> > v->VRatioChroma[k])
> > +                                             / (v->HTotal[k] / 
> > v->PixelClock[k]);
> >       }
> >
> > -     for (k = 0; k < NumberOfActivePlanes; ++k) {
> > +     for (k = 0; k < v->NumberOfActivePlanes; ++k) {
> >               double EffectiveDETBufferSizeY = DETBufferSizeY[k];
> >
> >               v->LBLatencyHidingSourceLinesY = dml_min(
> > -                             (double) MaxLineBufferLines,
> > -                             dml_floor(LineBufferSize / LBBitPerPixel[k] / 
> > (SwathWidthY[k] / dml_max(HRatio[k], 1.0)), 1)) - (vtaps[k] - 1);
> > +                             (double) v->MaxLineBufferLines,
> > +                             dml_floor(v->LineBufferSize / 
> > v->LBBitPerPixel[k] / (SwathWidthY[k] / dml_max(v->HRatio[k], 1.0)), 1)) - 
> > (v->vtaps[k] - 1);
> >
> >               v->LBLatencyHidingSourceLinesC = dml_min(
> > -                             (double) MaxLineBufferLines,
> > -                             dml_floor(LineBufferSize / LBBitPerPixel[k] / 
> > (SwathWidthC[k] / dml_max(HRatioChroma[k], 1.0)), 1)) - (VTAPsChroma[k] - 
> > 1);
> > +                             (double) v->MaxLineBufferLines,
> > +                             dml_floor(v->LineBufferSize / 
> > v->LBBitPerPixel[k] / (SwathWidthC[k] / dml_max(v->HRatioChroma[k], 1.0)), 
> > 1)) - (v->VTAPsChroma[k] - 1);
> >
> > -             EffectiveLBLatencyHidingY = v->LBLatencyHidingSourceLinesY / 
> > VRatio[k] * (HTotal[k] / PixelClock[k]);
> > +             EffectiveLBLatencyHidingY = v->LBLatencyHidingSourceLinesY / 
> > v->VRatio[k] * (v->HTotal[k] / v->PixelClock[k]);
> >
> > -             EffectiveLBLatencyHidingC = v->LBLatencyHidingSourceLinesC / 
> > VRatioChroma[k] * (HTotal[k] / PixelClock[k]);
> > +             EffectiveLBLatencyHidingC = v->LBLatencyHidingSourceLinesC / 
> > v->VRatioChroma[k] * (v->HTotal[k] / v->PixelClock[k]);
> >
> >               if (UnboundedRequestEnabled) {
> >                       EffectiveDETBufferSizeY = EffectiveDETBufferSizeY
> > -                                     + CompressedBufferSizeInkByte * 1024 
> > * SwathWidthY[k] * BytePerPixelDETY[k] * VRatio[k] / (HTotal[k] / 
> > PixelClock[k]) / TotalPixelBW;
> > +                                     + CompressedBufferSizeInkByte * 1024 
> > * SwathWidthY[k] * BytePerPixelDETY[k] * v->VRatio[k] / (v->HTotal[k] / 
> > v->PixelClock[k]) / TotalPixelBW;
> >               }
> >
> >               LinesInDETY[k] = (double) EffectiveDETBufferSizeY / 
> > BytePerPixelDETY[k] / SwathWidthY[k];
> >               LinesInDETYRoundedDownToSwath[k] = dml_floor(LinesInDETY[k], 
> > SwathHeightY[k]);
> > -             FullDETBufferingTimeY = LinesInDETYRoundedDownToSwath[k] * 
> > (HTotal[k] / PixelClock[k]) / VRatio[k];
> > +             FullDETBufferingTimeY = LinesInDETYRoundedDownToSwath[k] * 
> > (v->HTotal[k] / v->PixelClock[k]) / v->VRatio[k];
> >               if (BytePerPixelDETC[k] > 0) {
> >                       LinesInDETC = v->DETBufferSizeC[k] / 
> > BytePerPixelDETC[k] / SwathWidthC[k];
> >                       LinesInDETCRoundedDownToSwath = 
> > dml_floor(LinesInDETC, SwathHeightC[k]);
> > -                     FullDETBufferingTimeC = LinesInDETCRoundedDownToSwath 
> > * (HTotal[k] / PixelClock[k]) / VRatioChroma[k];
> > +                     FullDETBufferingTimeC = LinesInDETCRoundedDownToSwath 
> > * (v->HTotal[k] / v->PixelClock[k]) / v->VRatioChroma[k];
> >               } else {
> >                       LinesInDETC = 0;
> >                       FullDETBufferingTimeC = 999999;
> >               }
> >
> >               ActiveDRAMClockChangeLatencyMarginY = 
> > EffectiveLBLatencyHidingY + FullDETBufferingTimeY
> > -                             - ((double) DSTXAfterScaler[k] / HTotal[k] + 
> > DSTYAfterScaler[k]) * HTotal[k] / PixelClock[k] - *UrgentWatermark - 
> > *DRAMClockChangeWatermark;
> > +                             - ((double) v->DSTXAfterScaler[k] / 
> > v->HTotal[k] + v->DSTYAfterScaler[k]) * v->HTotal[k] / v->PixelClock[k] - 
> > v->UrgentWatermark - v->DRAMClockChangeWatermark;
> >
> > -             if (NumberOfActivePlanes > 1) {
> > +             if (v->NumberOfActivePlanes > 1) {
> >                       ActiveDRAMClockChangeLatencyMarginY = 
> > ActiveDRAMClockChangeLatencyMarginY
> > -                                     - (1 - 1.0 / NumberOfActivePlanes) * 
> > SwathHeightY[k] * HTotal[k] / PixelClock[k] / VRatio[k];
> > +                                     - (1 - 1.0 / v->NumberOfActivePlanes) 
> > * SwathHeightY[k] * v->HTotal[k] / v->PixelClock[k] / v->VRatio[k];
> >               }
> >
> >               if (BytePerPixelDETC[k] > 0) {
> >                       ActiveDRAMClockChangeLatencyMarginC = 
> > EffectiveLBLatencyHidingC + FullDETBufferingTimeC
> > -                                     - ((double) DSTXAfterScaler[k] / 
> > HTotal[k] + DSTYAfterScaler[k]) * HTotal[k] / PixelClock[k] - 
> > *UrgentWatermark - *DRAMClockChangeWatermark;
> > +                                     - ((double) v->DSTXAfterScaler[k] / 
> > v->HTotal[k] + v->DSTYAfterScaler[k]) * v->HTotal[k] / v->PixelClock[k] - 
> > v->UrgentWatermark - v->DRAMClockChangeWatermark;
> >
> > -                     if (NumberOfActivePlanes > 1) {
> > +                     if (v->NumberOfActivePlanes > 1) {
> >                               ActiveDRAMClockChangeLatencyMarginC = 
> > ActiveDRAMClockChangeLatencyMarginC
> > -                                             - (1 - 1.0 / 
> > NumberOfActivePlanes) * SwathHeightC[k] * HTotal[k] / PixelClock[k] / 
> > VRatioChroma[k];
> > +                                             - (1 - 1.0 / 
> > v->NumberOfActivePlanes) * SwathHeightC[k] * v->HTotal[k] / 
> > v->PixelClock[k] / v->VRatioChroma[k];
> >                       }
> >                       v->ActiveDRAMClockChangeLatencyMargin[k] = 
> > dml_min(ActiveDRAMClockChangeLatencyMarginY, 
> > ActiveDRAMClockChangeLatencyMarginC);
> >               } else {
> >                       v->ActiveDRAMClockChangeLatencyMargin[k] = 
> > ActiveDRAMClockChangeLatencyMarginY;
> >               }
> >
> > -             if (WritebackEnable[k] == true) {
> > -                     WritebackDRAMClockChangeLatencyHiding = 
> > WritebackInterfaceBufferSize * 1024
> > -                                     / (WritebackDestinationWidth[k] * 
> > WritebackDestinationHeight[k] / (WritebackSourceHeight[k] * HTotal[k] / 
> > PixelClock[k]) * 4);
> > -                     if (WritebackPixelFormat[k] == dm_444_64) {
> > +             if (v->WritebackEnable[k] == true) {
> > +                     WritebackDRAMClockChangeLatencyHiding = 
> > v->WritebackInterfaceBufferSize * 1024
> > +                                     / (v->WritebackDestinationWidth[k] * 
> > v->WritebackDestinationHeight[k] / (v->WritebackSourceHeight[k] * 
> > v->HTotal[k] / v->PixelClock[k]) * 4);
> > +                     if (v->WritebackPixelFormat[k] == dm_444_64) {
> >                               WritebackDRAMClockChangeLatencyHiding = 
> > WritebackDRAMClockChangeLatencyHiding / 2;
> >                       }
> >                       WritebackDRAMClockChangeLatencyMargin = 
> > WritebackDRAMClockChangeLatencyHiding - 
> > v->WritebackDRAMClockChangeWatermark;
> > @@ -5862,14 +5718,14 @@ static void 
> > CalculateWatermarksAndDRAMSpeedChangeSupport(
> >
> >       v->MinActiveDRAMClockChangeMargin = 999999;
> >       PlaneWithMinActiveDRAMClockChangeMargin = 0;
> > -     for (k = 0; k < NumberOfActivePlanes; ++k) {
> > +     for (k = 0; k < v->NumberOfActivePlanes; ++k) {
> >               if (v->ActiveDRAMClockChangeLatencyMargin[k] < 
> > v->MinActiveDRAMClockChangeMargin) {
> >                       v->MinActiveDRAMClockChangeMargin = 
> > v->ActiveDRAMClockChangeLatencyMargin[k];
> > -                     if (BlendingAndTiming[k] == k) {
> > +                     if (v->BlendingAndTiming[k] == k) {
> >                               PlaneWithMinActiveDRAMClockChangeMargin = k;
> >                       } else {
> > -                             for (j = 0; j < NumberOfActivePlanes; ++j) {
> > -                                     if (BlendingAndTiming[k] == j) {
> > +                             for (j = 0; j < v->NumberOfActivePlanes; ++j) 
> > {
> > +                                     if (v->BlendingAndTiming[k] == j) {
> >                                               
> > PlaneWithMinActiveDRAMClockChangeMargin = j;
> >                                       }
> >                               }
> > @@ -5877,11 +5733,11 @@ static void 
> > CalculateWatermarksAndDRAMSpeedChangeSupport(
> >               }
> >       }
> >
> > -     *MinActiveDRAMClockChangeLatencySupported = 
> > v->MinActiveDRAMClockChangeMargin + DRAMClockChangeLatency;
> > +     v->MinActiveDRAMClockChangeLatencySupported = 
> > v->MinActiveDRAMClockChangeMargin + v->DRAMClockChangeLatency ;
> >
> >       SecondMinActiveDRAMClockChangeMarginOneDisplayInVBLank = 999999;
> > -     for (k = 0; k < NumberOfActivePlanes; ++k) {
> > -             if (!((k == PlaneWithMinActiveDRAMClockChangeMargin) && 
> > (BlendingAndTiming[k] == k)) && !(BlendingAndTiming[k] == 
> > PlaneWithMinActiveDRAMClockChangeMargin)
> > +     for (k = 0; k < v->NumberOfActivePlanes; ++k) {
> > +             if (!((k == PlaneWithMinActiveDRAMClockChangeMargin) && 
> > (v->BlendingAndTiming[k] == k)) && !(v->BlendingAndTiming[k] == 
> > PlaneWithMinActiveDRAMClockChangeMargin)
> >                               && v->ActiveDRAMClockChangeLatencyMargin[k] < 
> > SecondMinActiveDRAMClockChangeMarginOneDisplayInVBLank) {
> >                       
> > SecondMinActiveDRAMClockChangeMarginOneDisplayInVBLank = 
> > v->ActiveDRAMClockChangeLatencyMargin[k];
> >               }
> > @@ -5889,25 +5745,25 @@ static void 
> > CalculateWatermarksAndDRAMSpeedChangeSupport(
> >
> >       v->TotalNumberOfActiveOTG = 0;
> >
> > -     for (k = 0; k < NumberOfActivePlanes; ++k) {
> > -             if (BlendingAndTiming[k] == k) {
> > +     for (k = 0; k < v->NumberOfActivePlanes; ++k) {
> > +             if (v->BlendingAndTiming[k] == k) {
> >                       v->TotalNumberOfActiveOTG = v->TotalNumberOfActiveOTG 
> > + 1;
> >               }
> >       }
> >
> >       if (v->MinActiveDRAMClockChangeMargin > 0 && PrefetchMode == 0) {
> >               *DRAMClockChangeSupport = dm_dram_clock_change_vactive;
> > -     } else if ((SynchronizedVBlank == true || v->TotalNumberOfActiveOTG 
> > == 1
> > +     } else if ((v->SynchronizedVBlank == true || 
> > v->TotalNumberOfActiveOTG == 1
> >                       || 
> > SecondMinActiveDRAMClockChangeMarginOneDisplayInVBLank > 0) && PrefetchMode 
> > == 0) {
> >               *DRAMClockChangeSupport = dm_dram_clock_change_vblank;
> >       } else {
> >               *DRAMClockChangeSupport = dm_dram_clock_change_unsupported;
> >       }
> >
> > -     *StutterExitWatermark = SRExitTime + ExtraLatency + 10 / 
> > DCFCLKDeepSleep;
> > -     *StutterEnterPlusExitWatermark = (SREnterPlusExitTime + ExtraLatency 
> > + 10 / DCFCLKDeepSleep);
> > -     *Z8StutterExitWatermark = SRExitZ8Time + ExtraLatency + 10 / 
> > DCFCLKDeepSleep;
> > -     *Z8StutterEnterPlusExitWatermark = SREnterPlusExitZ8Time + 
> > ExtraLatency + 10 / DCFCLKDeepSleep;
> > +     *StutterExitWatermark = v->SRExitTime + ExtraLatency + 10 / 
> > DCFCLKDeepSleep;
> > +     *StutterEnterPlusExitWatermark = (v->SREnterPlusExitTime + 
> > ExtraLatency + 10 / DCFCLKDeepSleep);
> > +     *Z8StutterExitWatermark = v->SRExitZ8Time + ExtraLatency + 10 / 
> > DCFCLKDeepSleep;
> > +     *Z8StutterEnterPlusExitWatermark = v->SREnterPlusExitZ8Time + 
> > ExtraLatency + 10 / DCFCLKDeepSleep;
> >
> >  #ifdef __DML_VBA_DEBUG__
> >       dml_print("DML::%s: StutterExitWatermark = %f\n", __func__, 
> > *StutterExitWatermark);
> >
> > base-commit: dacd2d2d9d800b7ab2ee2734578112532cba8105

Reply via email to