All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Deucher <alexdeucher@gmail.com>
To: "Maíra Canal" <mairacanal@riseup.net>
Cc: "Nathan Chancellor" <nathan@kernel.org>,
	"Harry Wentland" <harry.wentland@amd.com>,
	"Leo Li" <sunpeng.li@amd.com>,
	"Rodrigo Siqueira" <Rodrigo.Siqueira@amd.com>,
	"Alex Deucher" <alexander.deucher@amd.com>,
	"Christian König" <christian.koenig@amd.com>,
	"Pan, Xinhui" <Xinhui.Pan@amd.com>,
	"kernelci.org bot" <bot@kernelci.org>,
	"Tom Rix" <trix@redhat.com>,
	llvm@lists.linux.dev,
	"Nick Desaulniers" <ndesaulniers@google.com>,
	patches@lists.linux.dev, dri-devel@lists.freedesktop.org,
	amd-gfx@lists.freedesktop.org
Subject: Re: [PATCH 1/2] drm/amd/display: Reduce number of arguments of dml314's CalculateWatermarksAndDRAMSpeedChangeSupport()
Date: Tue, 20 Sep 2022 12:06:46 -0400	[thread overview]
Message-ID: <CADnq5_O67aFW95nNbgPJipypnpzAC-HO=FYkdxOMpOJQXF+CKw@mail.gmail.com> (raw)
In-Reply-To: <5e0b4692-b3ac-20ce-bd0b-65f52804601b@riseup.net>

Applied the series.  Thanks!

Alex

On Sat, Sep 17, 2022 at 8:38 AM Maíra Canal <mairacanal@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" <bot@kernelci.org>
> > Signed-off-by: Nathan Chancellor <nathan@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 <mairacanal@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

WARNING: multiple messages have this Message-ID (diff)
From: Alex Deucher <alexdeucher@gmail.com>
To: "Maíra Canal" <mairacanal@riseup.net>
Cc: "Nick Desaulniers" <ndesaulniers@google.com>,
	llvm@lists.linux.dev, "kernelci.org bot" <bot@kernelci.org>,
	"Leo Li" <sunpeng.li@amd.com>, "Tom Rix" <trix@redhat.com>,
	"Pan, Xinhui" <Xinhui.Pan@amd.com>,
	"Rodrigo Siqueira" <Rodrigo.Siqueira@amd.com>,
	patches@lists.linux.dev, dri-devel@lists.freedesktop.org,
	"Nathan Chancellor" <nathan@kernel.org>,
	amd-gfx@lists.freedesktop.org,
	"Alex Deucher" <alexander.deucher@amd.com>,
	"Christian König" <christian.koenig@amd.com>
Subject: Re: [PATCH 1/2] drm/amd/display: Reduce number of arguments of dml314's CalculateWatermarksAndDRAMSpeedChangeSupport()
Date: Tue, 20 Sep 2022 12:06:46 -0400	[thread overview]
Message-ID: <CADnq5_O67aFW95nNbgPJipypnpzAC-HO=FYkdxOMpOJQXF+CKw@mail.gmail.com> (raw)
In-Reply-To: <5e0b4692-b3ac-20ce-bd0b-65f52804601b@riseup.net>

Applied the series.  Thanks!

Alex

On Sat, Sep 17, 2022 at 8:38 AM Maíra Canal <mairacanal@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" <bot@kernelci.org>
> > Signed-off-by: Nathan Chancellor <nathan@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 <mairacanal@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

WARNING: multiple messages have this Message-ID (diff)
From: Alex Deucher <alexdeucher@gmail.com>
To: "Maíra Canal" <mairacanal@riseup.net>
Cc: "Nick Desaulniers" <ndesaulniers@google.com>,
	llvm@lists.linux.dev, "kernelci.org bot" <bot@kernelci.org>,
	"Leo Li" <sunpeng.li@amd.com>, "Tom Rix" <trix@redhat.com>,
	"Pan, Xinhui" <Xinhui.Pan@amd.com>,
	"Rodrigo Siqueira" <Rodrigo.Siqueira@amd.com>,
	patches@lists.linux.dev, dri-devel@lists.freedesktop.org,
	"Nathan Chancellor" <nathan@kernel.org>,
	amd-gfx@lists.freedesktop.org,
	"Alex Deucher" <alexander.deucher@amd.com>,
	"Harry Wentland" <harry.wentland@amd.com>,
	"Christian König" <christian.koenig@amd.com>
Subject: Re: [PATCH 1/2] drm/amd/display: Reduce number of arguments of dml314's CalculateWatermarksAndDRAMSpeedChangeSupport()
Date: Tue, 20 Sep 2022 12:06:46 -0400	[thread overview]
Message-ID: <CADnq5_O67aFW95nNbgPJipypnpzAC-HO=FYkdxOMpOJQXF+CKw@mail.gmail.com> (raw)
In-Reply-To: <5e0b4692-b3ac-20ce-bd0b-65f52804601b@riseup.net>

Applied the series.  Thanks!

Alex

On Sat, Sep 17, 2022 at 8:38 AM Maíra Canal <mairacanal@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" <bot@kernelci.org>
> > Signed-off-by: Nathan Chancellor <nathan@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 <mairacanal@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	other threads:[~2022-09-20 16:06 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-16 21:06 [PATCH 1/2] drm/amd/display: Reduce number of arguments of dml314's CalculateWatermarksAndDRAMSpeedChangeSupport() Nathan Chancellor
2022-09-16 21:06 ` Nathan Chancellor
2022-09-16 21:06 ` [PATCH 2/2] drm/amd/display: Reduce number of arguments of dml314's CalculateFlipSchedule() Nathan Chancellor
2022-09-16 21:06   ` Nathan Chancellor
2022-09-16 22:04 ` [PATCH 1/2] drm/amd/display: Reduce number of arguments of dml314's CalculateWatermarksAndDRAMSpeedChangeSupport() Tom Rix
2022-09-16 22:04   ` Tom Rix
2022-09-16 22:16   ` Nathan Chancellor
2022-09-16 22:16     ` Nathan Chancellor
2022-09-16 22:16     ` Nathan Chancellor
2022-09-17 12:38 ` Maíra Canal
2022-09-20 16:06   ` Alex Deucher [this message]
2022-09-20 16:06     ` Alex Deucher
2022-09-20 16:06     ` Alex Deucher
2022-09-20 23:48     ` Nathan Chancellor
2022-09-20 23:48       ` Nathan Chancellor
2022-09-20 23:48       ` Nathan Chancellor
2022-09-21  1:12       ` Alex Deucher
2022-09-21  1:12         ` Alex Deucher
2022-09-21  1:12         ` Alex Deucher

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CADnq5_O67aFW95nNbgPJipypnpzAC-HO=FYkdxOMpOJQXF+CKw@mail.gmail.com' \
    --to=alexdeucher@gmail.com \
    --cc=Rodrigo.Siqueira@amd.com \
    --cc=Xinhui.Pan@amd.com \
    --cc=alexander.deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=bot@kernelci.org \
    --cc=christian.koenig@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=harry.wentland@amd.com \
    --cc=llvm@lists.linux.dev \
    --cc=mairacanal@riseup.net \
    --cc=nathan@kernel.org \
    --cc=ndesaulniers@google.com \
    --cc=patches@lists.linux.dev \
    --cc=sunpeng.li@amd.com \
    --cc=trix@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.