Message ID | 20240530145741.7506-2-palmer@rivosinc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/amd/display: Increase frame-larger-than warning limit | expand |
Hi Palmer, On Thu, May 30, 2024 at 07:57:42AM -0700, Palmer Dabbelt wrote: > From: Palmer Dabbelt <palmer@rivosinc.com> > > I get a handful of build errors along the lines of > > linux/drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c:58:13: error: stack frame size (2352) exceeds limit (2048) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation' [-Werror,-Wframe-larger-than] > static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation( > ^ > linux/drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c:1724:6: error: stack frame size (2096) exceeds limit (2048) in 'dml32_ModeSupportAndSystemConfigurationFull' [-Werror,-Wframe-larger-than] > void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib) > ^ Judging from the message, this is clang/LLVM? What version? I assume this showed up in 6.10-rc1 because of commit 77acc6b55ae4 ("riscv: add support for kernel-mode FPU"), which allows this driver to be built for RISC-V. Is this allmodconfig or some other configuration? > as of 6.10-rc1. > > Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com> > --- > drivers/gpu/drm/amd/display/dc/dml/Makefile | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/dc/dml/Makefile b/drivers/gpu/drm/amd/display/dc/dml/Makefile > index c4a5efd2dda5..b2bd72e63734 100644 > --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile > +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile > @@ -62,9 +62,9 @@ endif > > ifneq ($(CONFIG_FRAME_WARN),0) > ifeq ($(filter y,$(CONFIG_KASAN)$(CONFIG_KCSAN)),y) > -frame_warn_flag := -Wframe-larger-than=3072 > +frame_warn_flag := -Wframe-larger-than=4096 > else > -frame_warn_flag := -Wframe-larger-than=2048 > +frame_warn_flag := -Wframe-larger-than=3072 > endif > endif > > -- > 2.45.1 >
On Mon, 03 Jun 2024 15:29:48 PDT (-0700), nathan@kernel.org wrote: > Hi Palmer, > > On Thu, May 30, 2024 at 07:57:42AM -0700, Palmer Dabbelt wrote: >> From: Palmer Dabbelt <palmer@rivosinc.com> >> >> I get a handful of build errors along the lines of >> >> linux/drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c:58:13: error: stack frame size (2352) exceeds limit (2048) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation' [-Werror,-Wframe-larger-than] >> static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation( >> ^ >> linux/drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c:1724:6: error: stack frame size (2096) exceeds limit (2048) in 'dml32_ModeSupportAndSystemConfigurationFull' [-Werror,-Wframe-larger-than] >> void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib) >> ^ > > Judging from the message, this is clang/LLVM? What version? Yes, LLVM. Looks like I'm on 16.0.6. Probably time for an update, so I'll give it a shot. > I assume > this showed up in 6.10-rc1 because of commit 77acc6b55ae4 ("riscv: add > support for kernel-mode FPU"), which allows this driver to be built for > RISC-V. Seems reasonable. This didn't show up until post-merge, not 100% sure why. I didn't really dig any farther. > Is this allmodconfig or some other configuration? IIRC both "allmodconfig" and "allyesconfig" show it, but I don't have a build tree sitting around to be 100% sure. >> as of 6.10-rc1. >> >> Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com> >> --- >> drivers/gpu/drm/amd/display/dc/dml/Makefile | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/gpu/drm/amd/display/dc/dml/Makefile b/drivers/gpu/drm/amd/display/dc/dml/Makefile >> index c4a5efd2dda5..b2bd72e63734 100644 >> --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile >> +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile >> @@ -62,9 +62,9 @@ endif >> >> ifneq ($(CONFIG_FRAME_WARN),0) >> ifeq ($(filter y,$(CONFIG_KASAN)$(CONFIG_KCSAN)),y) >> -frame_warn_flag := -Wframe-larger-than=3072 >> +frame_warn_flag := -Wframe-larger-than=4096 >> else >> -frame_warn_flag := -Wframe-larger-than=2048 >> +frame_warn_flag := -Wframe-larger-than=3072 >> endif >> endif >> >> -- >> 2.45.1 >>
Hi Palmer (and AMD folks), On Tue, Jun 04, 2024 at 09:04:23AM -0700, Palmer Dabbelt wrote: > On Mon, 03 Jun 2024 15:29:48 PDT (-0700), nathan@kernel.org wrote: > > On Thu, May 30, 2024 at 07:57:42AM -0700, Palmer Dabbelt wrote: > > > From: Palmer Dabbelt <palmer@rivosinc.com> > > > > > > I get a handful of build errors along the lines of > > > > > > linux/drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c:58:13: error: stack frame size (2352) exceeds limit (2048) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation' [-Werror,-Wframe-larger-than] > > > static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation( > > > ^ > > > linux/drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c:1724:6: error: stack frame size (2096) exceeds limit (2048) in 'dml32_ModeSupportAndSystemConfigurationFull' [-Werror,-Wframe-larger-than] > > > void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib) > > > ^ > > > > Judging from the message, this is clang/LLVM? What version? > > Yes, LLVM. Looks like I'm on 16.0.6. Probably time for an update, so I'll > give it a shot. FWIW, I can reproduce this with tip of tree, I was just curious in case that ended up mattering. > > I assume > > this showed up in 6.10-rc1 because of commit 77acc6b55ae4 ("riscv: add > > support for kernel-mode FPU"), which allows this driver to be built for > > RISC-V. > > Seems reasonable. This didn't show up until post-merge, not 100% sure why. > I didn't really dig any farther. Perhaps you fast forwarded your tree to include that commit? > > Is this allmodconfig or some other configuration? > > IIRC both "allmodconfig" and "allyesconfig" show it, but I don't have a > build tree sitting around to be 100% sure. Yeah, allmodconfig triggers it. I was able to come up with a "trivial" reproducer using cvise (attached to this mail if you are curious) that has worse stack usage by a rough factor of 2: $ clang --target=riscv64-linux-gnu -O2 -Wall -Wframe-larger-than=512 -c -o /dev/null display_mode_vba_32.i display_mode_vba_32.i:598:6: warning: stack frame size (1264) exceeds limit (512) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation' [-Wframe-larger-than] 598 | void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation() { | ^ 1 warning generated. $ riscv64-linux-gcc -O2 -Wall -Wframe-larger-than=512 -c -o /dev/null display_mode_vba_32.i display_mode_vba_32.i: In function 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation': display_mode_vba_32.i:1729:1: warning: the frame size of 528 bytes is larger than 512 bytes [-Wframe-larger-than=] 1729 | } | ^ I have not done too much further investigation but this is almost certainly the same issue that has come up before [1][2] with the AMD display code using functions with a large number of parameters, such that they have to passed on the stack, coupled with inlining (if I remember correctly, LLVM gives more of an inlining discount the less a function is used in a file). While clang does poorly with that code, I am not interested in continuing to fix this code new hardware revision after new hardware revision. We could just avoid this code like we do for arm64 for a similar reason: diff --git a/drivers/gpu/drm/amd/display/Kconfig b/drivers/gpu/drm/amd/display/Kconfig index 5fcd4f778dc3..64df713df878 100644 --- a/drivers/gpu/drm/amd/display/Kconfig +++ b/drivers/gpu/drm/amd/display/Kconfig @@ -8,7 +8,7 @@ config DRM_AMD_DC depends on BROKEN || !CC_IS_CLANG || ARM64 || RISCV || SPARC64 || X86_64 select SND_HDA_COMPONENT if SND_HDA_CORE # !CC_IS_CLANG: https://github.com/ClangBuiltLinux/linux/issues/1752 - select DRM_AMD_DC_FP if ARCH_HAS_KERNEL_FPU_SUPPORT && (!ARM64 || !CC_IS_CLANG) + select DRM_AMD_DC_FP if ARCH_HAS_KERNEL_FPU_SUPPORT && (!(ARM64 || RISCV) || !CC_IS_CLANG) help Choose this option if you want to use the new display engine support for AMDGPU. This adds required support for Vega and [1]: https://lore.kernel.org/20231019205117.GA839902@dev-arch.thelio-3990X/ [2]: https://lore.kernel.org/20220830203409.3491379-1-nathan@kernel.org/ Cheers, Nathan enum { false, true }; enum output_encoder_class { dm_dp2p0 }; enum output_format_class { dm_420 }; enum source_format_class { dm_444_32 }; enum scan_direction_class { dm_vert }; enum dm_swizzle_mode { dm_sw_linear }; enum clock_change_support { dm_std_cvt }; enum odm_combine_mode { dm_odm_combine_mode_2to1dm_odm_combine_mode_4to1 }; enum immediate_flip_requirement { dm_immediate_flip_not_required }; enum unbounded_requesting_policy { dm_unbounded_requesting_disable }; enum dm_rotation_angle { dm_rotation_270m }; enum dm_use_mall_for_pstate_change_mode { dm_use_mall_pstate_change_phantom_pipe }; enum dm_use_mall_for_static_screen_mode { dm_use_mall_static_screen_optimize }; enum dm_fclock_change_support { dm_fclock_change_unsupported }; enum dm_prefetch_modes { dm_prefetch_support_uclk_fclk_and_stutter }; struct _vcs_dpi_soc_bounding_box_st { int num_states; }; struct _vcs_dpi_ip_params_st { int rob_buffer_size_kbytes; int pixel_chunk_size_kbytes; double dsc_delay_factor_wa; }; typedef struct { double StutterEnterPlusExitWatermark; } Watermarks; typedef struct { double PixelClock; } DmlPipe; typedef struct { } SOCParametersList; struct DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation { int dummy_integer_array[2][8]; double dummy_single_array[2][8]; int dummy_long_array[2][8]; double dummy_double_array[2][8]; _Bool dummy_boolean_array[8]; enum output_encoder_class dummy_output_encoder_array[8]; DmlPipe SurfaceParameters[8]; _Bool dummy_boolean_array2[2][8]; double HostVMInefficiencyFactor; DmlPipe myPipe; SOCParametersList mmSOCParameters; double dummy_unit_vector[8]; double dummy_single[2]; enum clock_change_support dummy_dramchange_support; enum dm_fclock_change_support dummy_fclkchange_support; _Bool dummy_USRRetrainingSupport; }; struct dml32_ModeSupportAndSystemConfigurationFull { int dummy_integer_array[22][8]; double dummy_double_array[2][8]; enum odm_combine_mode dummy_odm_mode[8]; }; struct dummy_vars { struct DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation; struct dml32_ModeSupportAndSystemConfigurationFull dml32_ModeSupportAndSystemConfigurationFull; }; struct vba_vars_st { struct _vcs_dpi_ip_params_st ip; struct _vcs_dpi_soc_bounding_box_st soc; int maxMpcComb; double MaxVRatioPre; double WritebackDISPCLK; double GlobalDPPCLK; int TotalActiveDPP; int TotalDCCActiveDPP; double StutterPeriod; enum dm_prefetch_modes AllowForPStateChangeOrStutterInVBlankFinal; _Bool ImmediateFlipSupported; int VStartupLines; double ActiveDRAMClockChangeLatencyMargin[8]; double SRExitTime; double SREnterPlusExitTime; double UrgentLatencyPixelDataOnly; double UrgentLatencyPixelMixedWithVMData; double UrgentLatencyVMDataOnly; double UrgentLatency; double FCLKChangeLatency; int MALLAllocatedForDCNFinal; double ReturnBusWidth; double DISPCLKDPPCLKDSCCLKDownSpreading; double DISPCLKDPPCLKVCOSpeed; double RoundTripPingLatencyCycles; double DRAMClockChangeLatency; int ROBBufferSizeInKByte; int DETBufferSizeInKByte[8]; int PixelChunkSizeInKByte; double ReturnBW; int GPUVMMaxPageTableLevels; int MetaChunkSize; int MinMetaChunkSizeBytes; double MaxDCHUBToPSCLThroughput; double MaxPSCLToLBThroughput; int PTEBufferSizeInRequestsLuma; int PTEBufferSizeInRequestsChroma; double DISPCLKRampingMargin; int CompressedBufferSegmentSizeInkByteFinal; int CompbufReservedSpace64B; int CompbufReservedSpaceZs; int DCCMetaBufferSizeBytes; int VoltageLevel; double FabricClock; double DRAMSpeed; double SOCCLK; double DCFCLK; int MaxTotalDETInKByte; int MinCompressedBufferSizeInKByte; int NumberOfActiveSurfaces; _Bool ViewportStationary[8]; int GPUVMMinPageSizeKBytes[8]; int ViewportXStartY[8]; int ViewportXStartC[8]; enum dm_rotation_angle SourceRotation[8]; int NumberOfDSCSlices[8]; int ViewportWidth[8]; int ViewportHeight[8]; int ViewportYStartY[8]; int ViewportYStartC[8]; double HRatio[8]; double VRatio[8]; int htaps[8]; int vtaps[8]; int HTAPsChroma[8]; int VTAPsChroma[8]; int HTotal[8]; int VTotal[8]; int DPPPerPlane[8]; double PixelClock[8]; double PixelClockBackEnd[8]; _Bool DCCEnable[8]; int DCCMetaPitchY[8]; int DCCMetaPitchC[8]; enum scan_direction_class SourceScan[8]; enum source_format_class SourcePixelFormat[8]; _Bool WritebackEnable[8]; double WritebackDestinationWidth[8]; double WritebackDestinationHeight[8]; double WritebackSourceHeight[8]; enum source_format_class WritebackPixelFormat[8]; double WritebackHRatio[8]; double WritebackVRatio[8]; int HActive[8]; int VActive[8]; _Bool Interlace[8]; enum dm_swizzle_mode SurfaceTiling[8]; enum odm_combine_mode ODMCombineEnabled[8]; int DSCInputBitPerComponent[8]; enum output_format_class OutputFormat[8]; enum output_encoder_class Output[8]; int BlendingAndTiming[8]; int NumberOfCursors[8]; unsigned CursorWidth[8][2]; unsigned CursorBPP[8][2]; _Bool DisableUnboundRequestIfCompBufReservedSpaceNeedAdjustment; int DETBufferSizeY[8]; int DETBufferSizeC[8]; int SwathHeightY[8]; int SwathHeightC[8]; double TotalDataReadBandwidth; double BandwidthAvailableForImmediateFlip; int PrefetchModePerState[40][2]; int MinPrefetchMode; int MaxPrefetchMode; double StutterEfficiency; double StutterEfficiencyNotIncludingVBlank; Watermarks Watermark; _Bool DCHUBBUB_ARB_CSTATE_MAX_CAP_MODE; double DISPCLK_calculated; _Bool Use_One_Row_For_Frame[8]; _Bool Use_One_Row_For_Frame_Flip[8]; int VUpdateOffsetPix[8]; double VUpdateWidthPix[8]; double VReadyOffsetPix[8]; int TotImmediateFlipBytes; double TCalc; double MaxDppclk[40]; double CursorBufferSize; double total_dcn_read_bw_with_flip; double FractionOfUrgentBandwidth; double FractionOfUrgentBandwidthImmediateFlip; int NoOfDPPThisState[8]; double RequiredDPPCLKThisState[8]; double MinDPPCLKUsingSingleDPP[8]; double BytePerPixelInDETY[8]; double BytePerPixelInDETC[8]; double OutputBppPerState[40][8]; int Read256BlockHeightY[8]; int Read256BlockWidthY[8]; int Read256BlockHeightC[8]; int Read256BlockWidthC[8]; double ReadBandwidthLuma[8]; double ReadBandwidthChroma[8]; double cursor_bw[8]; double cursor_bw_pre[8]; double Tno_bw[8]; double prefetch_vmrow_bw[8]; double DestinationLinesToRequestVMInImmediateFlip[8]; double DestinationLinesToRequestRowInImmediateFlip[8]; double final_flip_bw[8]; double WritebackDelay[40][8]; int vm_group_bytes[8]; int dpte_group_bytes[8]; int dpte_row_height[8]; int meta_req_height[8]; int meta_req_width[8]; int meta_row_height[8]; int meta_row_width[8]; int dpte_row_height_chroma[8]; int meta_req_height_chroma[8]; int meta_req_width_chroma[8]; int meta_row_height_chroma[8]; int meta_row_width_chroma[8]; double meta_row_bw[8]; double dpte_row_bw[8]; double DisplayPipeLineDeliveryTimeLuma[8]; double DisplayPipeLineDeliveryTimeChroma[8]; double DisplayPipeRequestDeliveryTimeLuma[8]; double DisplayPipeRequestDeliveryTimeChroma[8]; _Bool MPCCombine[0][2][8]; double MaximumSwathWidthLuma[8]; double MaximumSwathWidthChroma[8]; double PrefetchBandwidth[8]; double VInitPreFillY[8]; double VInitPreFillC[8]; int MaxNumSwathY[8]; int MaxNumSwathC[8]; int VStartup[8]; double DSTYAfterScaler[8]; double DSTXAfterScaler[8]; double VRatioPrefetchY[8]; double VRatioPrefetchC[8]; double DestinationLinesForPrefetch[8]; double DestinationLinesToRequestVMInVBlank[8]; double DestinationLinesToRequestRowInVBlank[8]; double MinTTUVBlank[8]; double BytePerPixelDETY[8]; double BytePerPixelDETC[8]; double SwathWidthY[8]; double SwathWidthSingleDPPY[8]; double CursorRequestDeliveryTime[8]; double CursorRequestDeliveryTimePrefetch[8]; double DisplayPipeLineDeliveryTimeLumaPrefetch[8]; double DisplayPipeLineDeliveryTimeChromaPrefetch[8]; double DisplayPipeRequestDeliveryTimeLumaPrefetch[8]; double DisplayPipeRequestDeliveryTimeChromaPrefetch[8]; double PixelPTEBytesPerRow[8]; double PDEAndMetaPTEBytesFrame[8]; double MetaRowByte[8]; double PrefetchSourceLinesY[8]; double RequiredPrefetchPixDataBWLuma[8]; double RequiredPrefetchPixDataBWChroma[8]; double PrefetchSourceLinesC[8]; double PSCL_THROUGHPUT_LUMA[8]; double PSCL_THROUGHPUT_CHROMA[8]; int DSCDelay[8]; int MaxVStartupLines[8]; double DPPCLKUsingSingleDPP[8]; double DPPCLK[8]; int DCCYMaxUncompressedBlock[8]; int DCCYMaxCompressedBlock[8]; int BlockHeight256BytesY[8]; int BlockHeight256BytesC[8]; int BlockWidth256BytesY[8]; int BlockWidth256BytesC[8]; int dpte_row_width_luma_ub[8]; int dpte_row_width_chroma_ub[8]; double DST_Y_PER_PTE_ROW_NOM_L[8]; double DST_Y_PER_PTE_ROW_NOM_C[8]; double DST_Y_PER_META_ROW_NOM_L[8]; double TimePerMetaChunkNominal[8]; double TimePerMetaChunkVBlank[8]; double TimePerMetaChunkFlip[8]; int swath_width_luma_ub[8]; int swath_width_chroma_ub[8]; int PixelPTEReqWidthY[8]; int PixelPTEReqHeightY[8]; int PTERequestSizeY[8]; int PixelPTEReqWidthC[8]; int PixelPTEReqHeightC[8]; int PTERequestSizeC[8]; double time_per_pte_group_nom_luma[8]; double time_per_pte_group_nom_chroma[8]; double time_per_pte_group_vblank_luma[8]; double time_per_pte_group_vblank_chroma[8]; double time_per_pte_group_flip_luma[8]; double time_per_pte_group_flip_chroma[8]; double TimePerVMGroupVBlank[8]; double TimePerVMGroupFlip[8]; double TimePerVMRequestVBlank[8]; double TimePerVMRequestFlip[8]; int dpde0_bytes_per_frame_ub_l[8]; int meta_pte_bytes_per_frame_ub_l[8]; int dpde0_bytes_per_frame_ub_c[8]; int meta_pte_bytes_per_frame_ub_c[8]; double SwathWidthSingleDPPC[8]; double SwathWidthC[8]; int BytePerPixelY[8]; int BytePerPixelC[8]; double Tdmdl_vm[8]; double Tdmdl[8]; double TSetup[8]; double DST_Y_PER_META_ROW_NOM_C[8]; double TimePerChromaMetaChunkNominal[8]; double TimePerChromaMetaChunkVBlank[8]; double TimePerChromaMetaChunkFlip[8]; int DCCCMaxUncompressedBlock[8]; int DCCCMaxCompressedBlock[8]; _Bool DoUrgentLatencyAdjustment; double UrgentLatencyAdjustmentFabricClockComponent; double UrgentLatencyAdjustmentFabricClockReference; int ViewportWidthChroma[8]; int ViewportHeightChroma[8]; double HRatioChroma[8]; double VRatioChroma[8]; int WritebackSourceWidth[8]; int SurfaceWidthY[8]; int SurfaceWidthC[8]; int SurfaceHeightY[8]; int SurfaceHeightC[8]; int WritebackHTaps[8]; int WritebackVTaps[8]; double HostVMMinPageSize; int HostVMMaxNonCachedPageTableLevels; double WritebackLineBufferSize; double DCCRateLuma[8]; double DCCRateChroma[8]; enum immediate_flip_requirement ImmediateFlipRequirement[8]; _Bool NoUrgentLatencyHidingPre[8]; int DCCYIndependentBlock[8]; int DCCCIndependentBlock[8]; double SRExitZ8Time; double Z8StutterEnterPlusExitWatermark; double Z8StutterEfficiencyNotIncludingVBlank; double Z8StutterEfficiency; double DCCFractionOfZeroSizeRequestsLuma[8]; double DCCFractionOfZeroSizeRequestsChroma[8]; double UrgBurstFactorCursor[8]; double UrgBurstFactorLuma[8]; double UrgBurstFactorChroma[8]; double UrgBurstFactorCursorPre[8]; double UrgBurstFactorLumaPre[8]; double UrgBurstFactorChromaPre[8]; int MIN_DST_Y_NEXT_START[8]; int ConfigReturnBufferSizeInKByte; enum unbounded_requesting_policy UseUnboundedRequesting; int CompressedBufferSizeInkByte; int MetaFIFOSizeInKEntries; int ZeroSizeBufferEntries; int NumberOfStutterBurstsPerFrame; int Z8NumberOfStutterBurstsPerFrame; double ReadBandwidthSurfaceLuma[8]; double ReadBandwidthSurfaceChroma[8]; double MinActiveFCLKChangeLatencySupported; int CompressedBufferSizeInkByteAllStates[0][2]; int SurfaceSizeInMALL[8]; _Bool PTE_BUFFER_MODE[8]; int BIGK_FRAGMENT_SIZE[8]; enum dm_use_mall_for_pstate_change_mode UsesMALLForPStateChange[8]; _Bool SingleDPPViewportSizeSupportPerSurface[8]; enum dm_use_mall_for_static_screen_mode UseMALLForStaticScreen[8]; int DETSizeOverride[8]; int nomDETInKByte; int RequiredSlots[0][8]; _Bool UsesMALLForStaticScreen[8]; double MaxActiveDRAMClockChangeLatencySupported[8]; int dpte_row_height_linear[8]; int dpte_row_height_linear_chroma[8]; int BlockHeightY[8]; int BlockHeightC[8]; int BlockWidthY[8]; int BlockWidthC[8]; int SubViewportLinesNeededInMALL[8]; struct dummy_vars dummy_vars; } dml32_ModeSupportAndSystemConfigurationFull_v; struct { struct vba_vars_st vba; } *DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, dml32_ModeSupportAndSystemConfigurationFull_mode_lib; double dml_max3_a, dml_max3_b, dml_max3_c, dml_max4_c, dml_max4_d, dml_floor_granularity, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___trans_tmp_9, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___trans_tmp_8, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___trans_tmp_7, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___trans_tmp_6, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___trans_tmp_5, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___trans_tmp_4, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_216_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_215_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_5, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_237_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_233_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_232_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_MaxTotalRDBandwidth, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_MaxTotalRDBandwidthNoUrgentBurst = 0.0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_TWait, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_TotalWRBandwidth, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_WRBandwidth = 0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___trans_tmp_3; _Bool DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_191_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_11, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_313_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_289_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_368_0_5, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_ImmediateFlipRequirementFinal, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_isInterlaceTiming, dml32_ModeSupportAndSystemConfigurationFull_v_368_1_2_1_0, dml32_ModeSupportAndSystemConfigurationFull_v_368_1_2_0_0, dml32_ModeSupportAndSystemConfigurationFull_CompBufReservedSpaceNeedAdjustment, dml32_ModeSupportAndSystemConfigurationFull_CompBufReservedSpaceNeedAdjustmentSingleDPP; int DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_368_0_11, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_368_0_10, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_133, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_366_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_365_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_364_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_363_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_244_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_243_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_242_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_241_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_278_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_277_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_j, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_iteration, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_NextPrefetchMode, dml32_ModeSupportAndSystemConfigurationFull_v_368_1_0_1_0, dml32_ModeSupportAndSystemConfigurationFull_v_368_1_0_0_0, dml32_ModeSupportAndSystemConfigurationFull_i, dml32_ModeSupportAndSystemConfigurationFull_j, dml32_ModeSupportAndSystemConfigurationFull_start_state, dml32_ModeSupportAndSystemConfigurationFull_k, dml32_ModeSupportAndSystemConfigurationFull_m, dml32_ModeSupportAndSystemConfigurationFull_MaximumMPCCombine, dml32_ModeSupportAndSystemConfigurationFull_NumberOfNonCombinedSurfaceOfMaximumBandwidth, dml32_ModeSupportAndSystemConfigurationFull_TotalSlots; long DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___fortify_size = sizeof(DmlPipe); float dcn_bw_min2(); double dml_min() { return dcn_bw_min2(); } double dml_max(double a, double b) { return dcn_bw_min2(); } double dml_max3() { double __trans_tmp_1 = dml_max3_b; return dml_max(__trans_tmp_1, dml_max3_c); } double dml_ceil(double a) { return a; } double dml_floor(double a) { return dml_floor_granularity; } void dml32_CalculateBytePerPixelAndBlockSizes(int *, int *, double *, double *, int *, int *, int *, int *, int *, int *, int *, int *); void dml32_CalculateSinglePipeDPPCLKAndSCLThroughput( double, double, double, double, double, double, enum source_format_class, int, int, int, int, double *, double *, double *); void dml32_CalculateSwathAndDETConfiguration( int[], enum dm_use_mall_for_pstate_change_mode[], int, int, int, double, int, int, enum unbounded_requesting_policy, _Bool, int, int, int, enum output_encoder_class[], double[], double[], double[], double[], enum dm_rotation_angle[], _Bool[], enum source_format_class[], enum dm_swizzle_mode[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], enum odm_combine_mode[], int[], int[], int[], double[], double[], int[], double[], double[], int[], int[], int[], double[], double[], int[], int[], int[], int[], int[], _Bool *, int *, int *, _Bool *, _Bool[], _Bool *); void dml32_CalculateSwathWidth(_Bool, int, enum source_format_class[], enum dm_rotation_angle[], _Bool[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], enum odm_combine_mode[], int[], int[], int[], int[], int[], int[], int[], int[], double[], int[], double[], double[], double[], double[], int[], int[], int[], int[]); double dml32_CalculateRequiredDispclk(enum odm_combine_mode, double, double, double, double, double); void dml32_CalculateDPPCLK(int, double, double, double[], int[], double *, double[]); int dml32_DSCDelayRequirement(_Bool, enum odm_combine_mode, int, double, int, int, int, enum output_format_class, enum output_encoder_class, double, double, double); void dml32_CalculateSurfaceSizeInMall(int, int, enum dm_use_mall_for_static_screen_mode[], enum dm_use_mall_for_pstate_change_mode[], _Bool[], _Bool[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], _Bool *); void dml32_CalculateVMRowAndSwath( int, DmlPipe[], int[], int, int, int, enum dm_use_mall_for_static_screen_mode[], enum dm_use_mall_for_pstate_change_mode[], int, double[], double[], _Bool, _Bool, int, int, int[], int, _Bool[], _Bool[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], double[], double[], double[], double[], int[], int[], double[], double[], double[], double[], double[], _Bool[], _Bool[], _Bool[], _Bool[], int[]); double dml32_CalculateUrgentLatency(double, double, double, _Bool, double, double, double); void dml32_CalculateUrgentBurstFactor(enum dm_use_mall_for_pstate_change_mode, int, int, int, int, double, double, double, int, int, double, double, double, double, int, int, double *, double *, double *, _Bool *); void dml32_CalculateDCFCLKDeepSleep(int, int[], int[], double[], double[], double[], double[], int[], double[], double[], double[], double[], double[], double[], double[], double[], int, double *); double dml32_CalculateWriteBackDelay(enum source_format_class, double, double, int, int, int, int, int); double dml32_CalculateTWait(int, enum dm_use_mall_for_pstate_change_mode, _Bool, _Bool, double, double, double, double); double dml32_get_return_bw_mbps_vm_only(struct _vcs_dpi_soc_bounding_box_st *, int, double, double, double); double dml32_CalculateExtraLatency(int, int, double, int, int, int, int, double, _Bool, _Bool, int, int[], int[], double, double, int); _Bool dml32_CalculatePrefetchSchedule( struct vba_vars_st *, int, double, DmlPipe *, int, int, int, int, double, double, double, int, int, int, double, int, int, int, double, int, int, int, int, int, int, int, double, double, _Bool, double *, double *, double *, double *, double *, double *, double *, double *, double *, double *, _Bool *, double *, double *, double *, double *, double *, int *, double *, double *); void dml32_CalculateFlipSchedule(double, double, double, int, _Bool, int, _Bool, double, double, double, double, double, int, enum source_format_class, double, double, double, double, _Bool, int, int, int, int, _Bool, double *, double *, double *, _Bool *); void dml32_CalculateWatermarksMALLUseAndDRAMSpeedChangeSupport( struct vba_vars_st *, int, double, double, SOCParametersList, double, double, int[], int[], int[], int[], double[], double[], int[], double[], double[], double[], double[], _Bool, int, enum clock_change_support *, double[], int[], enum dm_fclock_change_support *, double *, _Bool *, double[]); double dml32_CalculateWriteBackDISPCLK(enum source_format_class, double, double, double, int, int, int, int, int, int, double); void dml32_CalculateMinAndMaxPrefetchMode(enum dm_prefetch_modes, int *, int *); void dml32_CalculatePixelDeliveryTimes( int, double[], double[], double[], double[], int[], int[], int[], double[], double[], double[], double[], double[], double[], int[], enum dm_rotation_angle[], int[], unsigned[][2], unsigned[][2], int[], int[], int[], int[], double[], double[], double[], double[], double[], double[], double[], double[], double[], double[]); void dml32_CalculateMetaAndPTETimes( _Bool[], int, _Bool, int, int, int[], double[], double[], double[], double[], _Bool[], double[], int[], int[], enum dm_rotation_angle[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], int[], double[], double[], double[], double[], double[], double[], double[], double[], double[], double[], double[], double[], double[], double[], double[], double[]); void dml32_CalculateVMGroupAndRequestTimes(int, _Bool, int, int[], int[], double[], double[], _Bool[], double[], int[], int[], int[], int[], int[], int[], int[], double[], double[], double[], double[]); void dml32_CalculateDCCConfiguration(_Bool, _Bool, enum source_format_class, int, int, int, int, int, int, int, enum dm_swizzle_mode, int, int, double, double, enum dm_rotation_angle, int *, int *, int *, int *, int *, int *); void dml32_CalculateStutterEfficiency( int, enum dm_use_mall_for_pstate_change_mode[], _Bool, int, int, int, int, int, double, double, double, int, int, double, double, _Bool, int[], double, double, _Bool, _Bool[], double[], int[], int[], int[], double[], double[], int[], int[], double[], double[], double[], double[], int[], int[], double[], double[], enum dm_rotation_angle[], int[], int[], int[], int[], int[], int[], int[], _Bool[], _Bool[], double[], double[], double[], double[], double *, double *, int *, double *, double *, int *, double *, _Bool *); void dml32_CalculatePrefetchBandwithSupport( int, double, _Bool[], double[], double[], double[], double[], double[], double[], double[], double[], double[], int[], double[], double[], double[], double[], double[], double[], double[], double[], double, double *, double *, _Bool *); double dml32_CalculateBandwidthAvailableForImmediateFlip( int, double, double[], double[], double[], double[], double[], double[], int[], double[], double[], double[], double[], double[], double[]); void dml32_CalculateImmediateFlipBandwithSupport( int, double, enum immediate_flip_requirement[], double[], double[], double[], double[], double[], double[], double[], double[], double[], double[], int[], double[], double[], double[], double[], double[], double[], double *, double *, _Bool *); _Bool dml32_CalculateDETSwathFillLatencyHiding( int, double, double, int[], int[], int[], int[], double[], double[], int[], int[], int[], int[], double[], double[], double[], enum dm_use_mall_for_pstate_change_mode[], enum unbounded_requesting_policy); void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation() { struct vba_vars_st *v = &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba; double v_176_0, v_175_0, v_325_0, v_324_0, v_323_0, v_127, v_126; _Bool v_312_0, v_368_0_6, v_337, DestinationLineTimesForPrefetchLessThan2 = false, VRatioPrefetchMoreThanMax = false; int v_334, k; for (k = 0; k; ++k) { DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___trans_tmp_4 = dml32_CalculateWriteBackDISPCLK( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackPixelFormat[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackHRatio[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackVRatio[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackHTaps[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackVTaps[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackSourceWidth[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackDestinationWidth[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HTotal[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackLineBufferSize, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DISPCLKDPPCLKVCOSpeed); } { DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___trans_tmp_5 = dml32_CalculateRequiredDispclk( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ODMCombineEnabled[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DISPCLKDPPCLKDSCCLKDownSpreading, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DISPCLKRampingMargin, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DISPCLKDPPCLKVCOSpeed, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.MaxDppclk[v->soc.num_states]); } dml32_CalculateSinglePipeDPPCLKAndSCLThroughput( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HRatioChroma[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatio[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatioChroma[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.MaxDCHUBToPSCLThroughput, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.MaxPSCLToLBThroughput, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SourcePixelFormat[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.htaps[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HTAPsChroma[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.vtaps[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VTAPsChroma[k], &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_232_0, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_233_0, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_237_0); dml32_CalculateDPPCLK( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DISPCLKDPPCLKDSCCLKDownSpreading, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DISPCLKDPPCLKVCOSpeed, v->DPPCLKUsingSingleDPP, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPPerPlane, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_5, v->DPPCLK); dml32_CalculateBytePerPixelAndBlockSizes( &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_277_0, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_278_0, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_215_0, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_216_0, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_241_0, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_242_0, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_243_0, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_244_0, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_363_0, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_364_0, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_365_0, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_366_0); dml32_CalculateSwathWidth( false, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SourcePixelFormat, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SourceRotation, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportStationary, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportWidth, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportHeight, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportXStartY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportYStartY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportXStartC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportYStartC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceWidthY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceWidthC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceHeightY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceHeightC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ODMCombineEnabled, v->BytePerPixelY, v->BytePerPixelC, v->BlockHeight256BytesY, v->BlockHeight256BytesC, v->BlockWidth256BytesY, v->BlockWidth256BytesC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.BlendingAndTiming, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HActive, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HRatio, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPPerPlane, v->SwathWidthSingleDPPY, v->SwathWidthSingleDPPC, v->SwathWidthY, v->SwathWidthC, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_integer_array[0], v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_integer_array[1], v->swath_width_luma_ub, v->swath_width_chroma_ub); for ( ; DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces; ++DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock[k]) dml32_CalculateSwathAndDETConfiguration( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DETSizeOverride, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UsesMALLForPStateChange, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ConfigReturnBufferSizeInKByte, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.MaxTotalDETInKByte, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.MinCompressedBufferSizeInKByte, false, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.nomDETInKByte, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UseUnboundedRequesting, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ip.pixel_chunk_size_kbytes, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ip.rob_buffer_size_kbytes, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.CompressedBufferSegmentSizeInkByteFinal, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_output_encoder_array, v->ReadBandwidthSurfaceLuma, v->ReadBandwidthSurfaceChroma, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_single_array[0], v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_single_array[1], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SourceRotation, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportStationary, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SourcePixelFormat, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceTiling, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportWidth, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportHeight, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportXStartY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportYStartY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportXStartC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportYStartC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceWidthY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceWidthC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceHeightY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceHeightC, v->BlockHeight256BytesY, v->BlockHeight256BytesC, v->BlockWidth256BytesY, v->BlockWidth256BytesC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ODMCombineEnabled, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.BlendingAndTiming, v->BytePerPixelY, v->BytePerPixelC, v->BytePerPixelDETY, v->BytePerPixelDETC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HActive, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HRatio, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HRatioChroma, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPPerPlane, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_long_array[0], v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_long_array[1], v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_double_array[0], v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_double_array[1], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SwathHeightY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SwathHeightC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DETBufferSizeInKByte, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DETBufferSizeY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DETBufferSizeC, &v_337, &v_334, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_133, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_368_0_5, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_boolean_array, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_368_0_5); dml32_CalculateDCFCLKDeepSleep( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, v->BytePerPixelY, v->BytePerPixelC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatio, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatioChroma, v->SwathWidthY, v->SwathWidthC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPPerPlane, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HRatio, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HRatioChroma, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock, v->PSCL_THROUGHPUT_LUMA, v->PSCL_THROUGHPUT_CHROMA, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPCLK, v->ReadBandwidthSurfaceLuma, v->ReadBandwidthSurfaceChroma, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ReturnBusWidth, &v_126); {} dml32_DSCDelayRequirement( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ODMCombineEnabled[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DSCInputBitPerComponent[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.OutputBppPerState [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VoltageLevel][k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HActive[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HTotal[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfDSCSlices[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.OutputFormat[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.Output[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClockBackEnd[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ip.dsc_delay_factor_wa); for ( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_j = 0; DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_j; ++DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_j) dml32_CalculateSurfaceSizeInMall( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.MALLAllocatedForDCNFinal, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UseMALLForStaticScreen, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UsesMALLForPStateChange, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DCCEnable, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportStationary, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportXStartY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportYStartY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportXStartC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportYStartC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportWidth, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportHeight, v->BytePerPixelY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportWidthChroma, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ViewportHeightChroma, v->BytePerPixelC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceWidthY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceWidthC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceHeightY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceHeightC, v->BlockWidth256BytesY, v->BlockWidth256BytesC, v->BlockHeight256BytesY, v->BlockHeight256BytesC, v->BlockWidthY, v->BlockWidthC, v->BlockHeightY, v->BlockHeightC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DCCMetaPitchY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DCCMetaPitchC, v->SurfaceSizeInMALL, &v_368_0_6); v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .SurfaceParameters[k] .PixelClock = DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock[k]; dml32_CalculateVMRowAndSwath( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .SurfaceParameters, v->SurfaceSizeInMALL, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PTEBufferSizeInRequestsLuma, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PTEBufferSizeInRequestsChroma, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DCCMetaBufferSizeBytes, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UseMALLForStaticScreen, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UsesMALLForPStateChange, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.MALLAllocatedForDCNFinal, v->SwathWidthY, v->SwathWidthC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HostVMMaxNonCachedPageTableLevels, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.GPUVMMaxPageTableLevels, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.GPUVMMinPageSizeKBytes, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HostVMMinPageSize, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_boolean_array2[0], v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_boolean_array2[1], v->dpte_row_width_luma_ub, v->dpte_row_width_chroma_ub, v->dpte_row_height, v->dpte_row_height_chroma, v->dpte_row_height_linear, v->dpte_row_height_linear_chroma, v->meta_req_width, v->meta_req_width_chroma, v->meta_req_height, v->meta_req_height_chroma, v->meta_row_width, v->meta_row_width_chroma, v->meta_row_height, v->meta_row_height_chroma, v->vm_group_bytes, v->dpte_group_bytes, v->PixelPTEReqWidthY, v->PixelPTEReqHeightY, v->PTERequestSizeY, v->PixelPTEReqWidthC, v->PixelPTEReqHeightC, v->PTERequestSizeC, v->dpde0_bytes_per_frame_ub_l, v->meta_pte_bytes_per_frame_ub_l, v->dpde0_bytes_per_frame_ub_c, v->meta_pte_bytes_per_frame_ub_c, v->PrefetchSourceLinesY, v->PrefetchSourceLinesC, v->VInitPreFillY, v->VInitPreFillC, v->MaxNumSwathY, v->MaxNumSwathC, v->meta_row_bw, v->dpte_row_bw, v->PixelPTEBytesPerRow, v->PDEAndMetaPTEBytesFrame, v->MetaRowByte, v->Use_One_Row_For_Frame, v->Use_One_Row_For_Frame_Flip, v->UsesMALLForStaticScreen, v->PTE_BUFFER_MODE, v->BIGK_FRAGMENT_SIZE); DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_368_0_11 = dml32_get_return_bw_mbps_vm_only( &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.soc, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VoltageLevel, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DCFCLK, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.FabricClock, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DRAMSpeed); v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .HostVMInefficiencyFactor = DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_368_0_11; { DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.TotalActiveDPP = DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPPerPlane[k]; } v_127 = dml32_CalculateExtraLatency( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.RoundTripPingLatencyCycles, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_368_0_10, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DCFCLK, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.TotalActiveDPP, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelChunkSizeInKByte, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.TotalDCCActiveDPP, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.MetaChunkSize, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ReturnBW, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPPerPlane, v->dpte_group_bytes, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .HostVMInefficiencyFactor, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HostVMMinPageSize, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HostVMMaxNonCachedPageTableLevels); for ( ; DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces;) { dml32_CalculateWriteBackDelay( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackPixelFormat[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackHRatio[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackVRatio[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackVTaps[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackDestinationWidth[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackDestinationHeight[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackSourceHeight[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HTotal[k]); for (;;) { DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___trans_tmp_6 = dml32_CalculateWriteBackDelay( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackPixelFormat [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_j], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackHRatio [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_j], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackVRatio [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_j], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackVTaps [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_j], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackDestinationWidth [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_j], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackDestinationHeight [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_j], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackSourceHeight [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_j], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HTotal[k]); dml_max( v->WritebackDelay [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VoltageLevel][k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___trans_tmp_6); } } dml32_CalculateUrgentLatency( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UrgentLatencyPixelDataOnly, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UrgentLatencyPixelMixedWithVMData, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UrgentLatencyVMDataOnly, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DoUrgentLatencyAdjustment, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UrgentLatencyAdjustmentFabricClockComponent, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UrgentLatencyAdjustmentFabricClockReference, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.FabricClock); dml32_CalculateUrgentBurstFactor( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UsesMALLForPStateChange[k], v->swath_width_luma_ub[k], v->swath_width_chroma_ub[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SwathHeightY[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SwathHeightC[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock[k], v->UrgentLatency, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.CursorBufferSize, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.CursorWidth[k][0], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.CursorBPP[k][0], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatio[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatioChroma[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_215_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_216_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DETBufferSizeY[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DETBufferSizeC[k], &v_323_0, &v_324_0, &v_325_0, &v_312_0); dml32_CalculateDETSwathFillLatencyHiding( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ReturnBW, v->UrgentLatency, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SwathHeightY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SwathHeightC, v->swath_width_luma_ub, v->swath_width_chroma_ub, v->BytePerPixelDETY, v->BytePerPixelDETC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DETBufferSizeY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DETBufferSizeC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPPerPlane, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HTotal, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatio, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatioChroma, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UsesMALLForPStateChange, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UseUnboundedRequesting); { DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___trans_tmp_7 = dml_ceil( v->WritebackDelay [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VoltageLevel][k]); DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ? dml_floor(2.0) : DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___trans_tmp_7; } for ( ; DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces;) dml32_CalculateMinAndMaxPrefetchMode( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.AllowForPStateChangeOrStutterInVBlankFinal, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.MinPrefetchMode, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.MaxPrefetchMode); v->VStartupLines = DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_iteration = DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_NextPrefetchMode = DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PrefetchModePerState [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VoltageLevel] [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.maxMpcComb]; { { DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_TWait = dml32_CalculateTWait( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PrefetchModePerState [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VoltageLevel] [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.maxMpcComb], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UsesMALLForPStateChange[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DRAMClockChangeLatency, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.FCLKChangeLatency, v->UrgentLatency, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SREnterPlusExitTime); { __builtin_memset( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation, 0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation___fortify_size); }; dml32_CalculatePrefetchSchedule( v, k, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .HostVMInefficiencyFactor, &v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .myPipe, v->DSCDelay[k], v->HRatio[k], dml_min(), v->MaxVStartupLines[k], v->UrgentLatency, v_127, v->TCalc, v->PDEAndMetaPTEBytesFrame[k], v->MetaRowByte[k], v->PixelPTEBytesPerRow[k], v->PrefetchSourceLinesY[k], v->SwathWidthY[k], v->VInitPreFillY[k], v->MaxNumSwathY[k], v->PrefetchSourceLinesC[k], v->SwathWidthC[k], v->VInitPreFillC[k], v->MaxNumSwathC[k], v->swath_width_luma_ub[k], v->swath_width_chroma_ub[k], v->SwathHeightY[k], v->SwathHeightC[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_TWait, v || v, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PrefetchModePerState [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VoltageLevel] [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.maxMpcComb], &v->DSTXAfterScaler[k], &v->DSTYAfterScaler[k], &v->DestinationLinesForPrefetch[k], &v->PrefetchBandwidth[k], &v->DestinationLinesToRequestVMInVBlank[k], &v->DestinationLinesToRequestRowInVBlank[k], &v->VRatioPrefetchY[k], &v->VRatioPrefetchC[k], &v->RequiredPrefetchPixDataBWLuma[k], &v->RequiredPrefetchPixDataBWChroma[k], &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_289_0, &v->Tno_bw[k], &v->prefetch_vmrow_bw[k], &v->Tdmdl_vm[k], &v->Tdmdl[k], &v->TSetup[k], &v->VUpdateOffsetPix[k], &v->VUpdateWidthPix[k], &v->VReadyOffsetPix[k]); } dml32_CalculateUrgentBurstFactor( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UsesMALLForPStateChange[k], v->swath_width_luma_ub[k], v->swath_width_chroma_ub[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SwathHeightY[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SwathHeightC[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock[k], v->UrgentLatency, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.CursorBufferSize, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.CursorWidth[k][0], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.CursorBPP[k][0], v->VRatioPrefetchY[k], v->VRatioPrefetchC[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_215_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_216_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DETBufferSizeY[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DETBufferSizeC[k], &v->UrgBurstFactorCursorPre[k], &v->UrgBurstFactorLumaPre[k], &v->UrgBurstFactorChromaPre[k], &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_313_0); v->FractionOfUrgentBandwidth = DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_MaxTotalRDBandwidthNoUrgentBurst; dml32_CalculatePrefetchBandwithSupport( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ReturnBW, v->NoUrgentLatencyHidingPre, v->ReadBandwidthSurfaceLuma, v->ReadBandwidthSurfaceChroma, v->RequiredPrefetchPixDataBWLuma, v->RequiredPrefetchPixDataBWChroma, v->cursor_bw, v->meta_row_bw, v->dpte_row_bw, v->cursor_bw_pre, v->prefetch_vmrow_bw, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPPerPlane, v->UrgBurstFactorLuma, v->UrgBurstFactorChroma, v->UrgBurstFactorCursor, v->UrgBurstFactorLumaPre, v->UrgBurstFactorChromaPre, v->UrgBurstFactorCursorPre, v->PrefetchBandwidth, v->VRatio, v->MaxVRatioPre, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_MaxTotalRDBandwidth, &v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_single[0], &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_11); dml32_CalculatePrefetchBandwithSupport( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ReturnBW, v->NoUrgentLatencyHidingPre, v->ReadBandwidthSurfaceLuma, v->ReadBandwidthSurfaceChroma, v->RequiredPrefetchPixDataBWLuma, v->RequiredPrefetchPixDataBWChroma, v->cursor_bw, v->meta_row_bw, v->dpte_row_bw, v->cursor_bw_pre, v->prefetch_vmrow_bw, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPPerPlane, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_unit_vector, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_unit_vector, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_unit_vector, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_unit_vector, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_unit_vector, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_unit_vector, v->PrefetchBandwidth, v->VRatio, v->MaxVRatioPre, &v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_single[0], &v->FractionOfUrgentBandwidth, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_368_0_5); if (VRatioPrefetchMoreThanMax || DestinationLineTimesForPrefetchLessThan2) dml32_CalculateBandwidthAvailableForImmediateFlip( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ReturnBW, v->ReadBandwidthSurfaceLuma, v->ReadBandwidthSurfaceChroma, v->RequiredPrefetchPixDataBWLuma, v->RequiredPrefetchPixDataBWChroma, v->cursor_bw, v->cursor_bw_pre, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPPerPlane, v->UrgBurstFactorLuma, v->UrgBurstFactorChroma, v->UrgBurstFactorCursor, v->UrgBurstFactorLumaPre, v->UrgBurstFactorChromaPre, v->UrgBurstFactorCursorPre); dml32_CalculateFlipSchedule( v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .HostVMInefficiencyFactor, v_127, v->UrgentLatency, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.GPUVMMaxPageTableLevels, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HostVMMaxNonCachedPageTableLevels, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HostVMMinPageSize, v->PDEAndMetaPTEBytesFrame[k], v->MetaRowByte[k], v->PixelPTEBytesPerRow[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.BandwidthAvailableForImmediateFlip, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.TotImmediateFlipBytes, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SourcePixelFormat[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatio[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatioChroma[k], v->Tno_bw[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, v->dpte_row_height[k], v->meta_row_height[k], v->dpte_row_height_chroma[k], v->meta_row_height_chroma[k], v, &v_175_0, &v_176_0, &v->final_flip_bw[k], &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_191_0); dml32_CalculateImmediateFlipBandwithSupport( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ReturnBW, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ImmediateFlipRequirement, v->final_flip_bw, v->ReadBandwidthSurfaceLuma, v->ReadBandwidthSurfaceChroma, v->RequiredPrefetchPixDataBWLuma, v->RequiredPrefetchPixDataBWChroma, v->cursor_bw, v->meta_row_bw, v->dpte_row_bw, v->cursor_bw_pre, v->prefetch_vmrow_bw, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPPerPlane, v->UrgBurstFactorLuma, v->UrgBurstFactorChroma, v->UrgBurstFactorCursor, v->UrgBurstFactorLumaPre, v->UrgBurstFactorChromaPre, v->UrgBurstFactorCursorPre, &v->total_dcn_read_bw_with_flip, &v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_single[0], &v->ImmediateFlipSupported); dml32_CalculateImmediateFlipBandwithSupport( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ReturnBW, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ImmediateFlipRequirement, v->final_flip_bw, v->ReadBandwidthSurfaceLuma, v->ReadBandwidthSurfaceChroma, v->RequiredPrefetchPixDataBWLuma, v->RequiredPrefetchPixDataBWChroma, v->cursor_bw, v->meta_row_bw, v->dpte_row_bw, v->cursor_bw_pre, v->prefetch_vmrow_bw, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPPerPlane, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_unit_vector, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_unit_vector, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_unit_vector, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_unit_vector, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_unit_vector, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_unit_vector, &v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_single[1], &v->FractionOfUrgentBandwidthImmediateFlip, &DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_368_0_5); } dml32_CalculateWatermarksMALLUseAndDRAMSpeedChangeSupport( v, v->PrefetchModePerState[v->VoltageLevel][v->maxMpcComb], v->DCFCLK, v->ReturnBW, v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .mmSOCParameters, v->SOCCLK, v_126, v->DETBufferSizeY, v->DETBufferSizeC, v->SwathHeightY, v->SwathHeightC, v->SwathWidthY, v->SwathWidthC, v->DPPPerPlane, v->BytePerPixelDETY, v->BytePerPixelDETC, v->DSTXAfterScaler, v->DSTYAfterScaler, v_337, v_334, &v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_dramchange_support, v->MaxActiveDRAMClockChangeLatencySupported, v->SubViewportLinesNeededInMALL, &v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_fclkchange_support, &v->MinActiveFCLKChangeLatencySupported, &v->dummy_vars .DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation .dummy_USRRetrainingSupport, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ActiveDRAMClockChangeLatencyMargin); dml32_CalculatePixelDeliveryTimes( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatio, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatioChroma, v->VRatioPrefetchY, v->VRatioPrefetchC, v->swath_width_luma_ub, v->swath_width_chroma_ub, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPPerPlane, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HRatio, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HRatioChroma, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock, v->PSCL_THROUGHPUT_LUMA, v->PSCL_THROUGHPUT_CHROMA, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPCLK, v->BytePerPixelC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SourceRotation, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfCursors, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.CursorWidth, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.CursorBPP, v->BlockWidth256BytesY, v->BlockHeight256BytesY, v->BlockWidth256BytesC, v->BlockHeight256BytesC, v->DisplayPipeLineDeliveryTimeLuma, v->DisplayPipeLineDeliveryTimeChroma, v->DisplayPipeLineDeliveryTimeLumaPrefetch, v->DisplayPipeLineDeliveryTimeChromaPrefetch, v->DisplayPipeRequestDeliveryTimeLuma, v->DisplayPipeRequestDeliveryTimeChroma, v->DisplayPipeRequestDeliveryTimeLumaPrefetch, v->DisplayPipeRequestDeliveryTimeChromaPrefetch, v->CursorRequestDeliveryTime, v->CursorRequestDeliveryTimePrefetch); dml32_CalculateMetaAndPTETimes( v->Use_One_Row_For_Frame, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.MetaChunkSize, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.MinMetaChunkSizeBytes, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HTotal, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatio, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatioChroma, v->DestinationLinesToRequestRowInVBlank, v->DestinationLinesToRequestRowInImmediateFlip, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DCCEnable, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock, v->BytePerPixelY, v->BytePerPixelC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SourceRotation, v->dpte_row_height, v->dpte_row_height_chroma, v->meta_row_width, v->meta_row_width_chroma, v->meta_row_height, v->meta_row_height_chroma, v->meta_req_width, v->meta_req_width_chroma, v->meta_req_height, v->meta_req_height_chroma, v->dpte_group_bytes, v->PTERequestSizeY, v->PTERequestSizeC, v->PixelPTEReqWidthY, v->PixelPTEReqHeightY, v->PixelPTEReqWidthC, v->PixelPTEReqHeightC, v->dpte_row_width_luma_ub, v->dpte_row_width_chroma_ub, v->DST_Y_PER_PTE_ROW_NOM_L, v->DST_Y_PER_PTE_ROW_NOM_C, v->DST_Y_PER_META_ROW_NOM_L, v->DST_Y_PER_META_ROW_NOM_C, v->TimePerMetaChunkNominal, v->TimePerChromaMetaChunkNominal, v->TimePerMetaChunkVBlank, v->TimePerChromaMetaChunkVBlank, v->TimePerMetaChunkFlip, v->TimePerChromaMetaChunkFlip, v->time_per_pte_group_nom_luma, v->time_per_pte_group_vblank_luma, v->time_per_pte_group_flip_luma, v->time_per_pte_group_nom_chroma, v->time_per_pte_group_vblank_chroma, v->time_per_pte_group_flip_chroma); dml32_CalculateVMGroupAndRequestTimes( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.GPUVMMaxPageTableLevels, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HTotal, v->BytePerPixelC, v->DestinationLinesToRequestVMInVBlank, v->DestinationLinesToRequestVMInImmediateFlip, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DCCEnable, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock, v->dpte_row_width_luma_ub, v->dpte_row_width_chroma_ub, v->vm_group_bytes, v->dpde0_bytes_per_frame_ub_l, v->dpde0_bytes_per_frame_ub_c, v->meta_pte_bytes_per_frame_ub_l, v->meta_pte_bytes_per_frame_ub_c, v->TimePerVMGroupVBlank, v->TimePerVMGroupFlip, v->TimePerVMRequestVBlank, v->TimePerVMRequestFlip); for ( ; DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib; ++DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PrefetchModePerState [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VoltageLevel] [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.maxMpcComb]) { { } } dml32_CalculateDCCConfiguration( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SourcePixelFormat[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceWidthY[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceWidthC[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceHeightY[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceHeightC[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.nomDETInKByte, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_241_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_242_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SurfaceTiling[k], DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_277_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_278_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_215_0, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_v_216_0, (enum dm_rotation_angle) DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SourceScan[k], &v->DCCYMaxUncompressedBlock[k], &v->DCCCMaxUncompressedBlock[k], &v->DCCYMaxCompressedBlock[k], &v->DCCCMaxCompressedBlock[k], &v->DCCYIndependentBlock[k], &v->DCCCIndependentBlock[k]); { v->MIN_DST_Y_NEXT_START[k] = v->WritebackDelay [DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VoltageLevel][k] + dml_floor( DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VStartup[k]); } dml32_CalculateStutterEfficiency( v_334, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.UsesMALLForPStateChange, v_337, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.MetaFIFOSizeInKEntries, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ZeroSizeBufferEntries, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelChunkSizeInKByte, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.NumberOfActiveSurfaces, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ROBBufferSizeInKByte, v->TotalDataReadBandwidth, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DCFCLK, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.ReturnBW, v->CompbufReservedSpace64B, v->CompbufReservedSpaceZs, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SRExitTime, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SRExitZ8Time, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.BlendingAndTiming, v->Watermark.StutterEnterPlusExitWatermark, v->Z8StutterEnterPlusExitWatermark, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.Interlace, v->MinTTUVBlank, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DPPPerPlane, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DETBufferSizeY, v->BytePerPixelY, v->BytePerPixelDETY, v->SwathWidthY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SwathHeightY, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SwathHeightC, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DCCRateLuma, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DCCRateChroma, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DCCFractionOfZeroSizeRequestsLuma, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DCCFractionOfZeroSizeRequestsChroma, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.HTotal, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VTotal, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.PixelClock, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VRatio, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.SourceRotation, v->BlockHeight256BytesY, v->BlockWidth256BytesY, v->BlockHeight256BytesC, v->BlockWidth256BytesC, v->DCCYMaxUncompressedBlock, v->DCCCMaxUncompressedBlock, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.VActive, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.DCCEnable, DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation_mode_lib ->vba.WritebackEnable, v->ReadBandwidthSurfaceLuma, v->ReadBandwidthSurfaceChroma, v->meta_row_bw, v->dpte_row_bw, &v->StutterEfficiencyNotIncludingVBlank, &v->StutterEfficiency, &v->NumberOfStutterBurstsPerFrame, &v->Z8StutterEfficiencyNotIncludingVBlank, &v->Z8StutterEfficiency, &v->Z8NumberOfStutterBurstsPerFrame, &v->StutterPeriod, &v->DCHUBBUB_ARB_CSTATE_MAX_CAP_MODE); } void dml32_ModeSupportAndSystemConfigurationFull() { dml32_CalculateSwathAndDETConfiguration( dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.DETSizeOverride, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .UsesMALLForPStateChange, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .ConfigReturnBufferSizeInKByte, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .MaxTotalDETInKByte, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .MinCompressedBufferSizeInKByte, 1, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .NumberOfActiveSurfaces, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.nomDETInKByte, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .UseUnboundedRequesting, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .DisableUnboundRequestIfCompBufReservedSpaceNeedAdjustment, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.ip .pixel_chunk_size_kbytes, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.ip .rob_buffer_size_kbytes, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .CompressedBufferSegmentSizeInkByteFinal, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.Output, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .ReadBandwidthLuma, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .ReadBandwidthChroma, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .MaximumSwathWidthLuma, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .MaximumSwathWidthChroma, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.SourceRotation, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .ViewportStationary, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .SourcePixelFormat, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.SurfaceTiling, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.ViewportWidth, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.ViewportHeight, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.ViewportXStartY, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.ViewportYStartY, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.ViewportXStartC, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.ViewportYStartC, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.SurfaceWidthY, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.SurfaceWidthC, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.SurfaceHeightY, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.SurfaceHeightC, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .Read256BlockHeightY, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .Read256BlockHeightC, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .Read256BlockWidthY, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .Read256BlockWidthC, dml32_ModeSupportAndSystemConfigurationFull_v.dummy_vars .dml32_ModeSupportAndSystemConfigurationFull.dummy_odm_mode, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .BlendingAndTiming, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.BytePerPixelY, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.BytePerPixelC, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .BytePerPixelInDETY, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .BytePerPixelInDETC, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.HActive, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.HRatio, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.HRatioChroma, dml32_ModeSupportAndSystemConfigurationFull_v.dummy_vars .dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[0], dml32_ModeSupportAndSystemConfigurationFull_v.dummy_vars .dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[1], dml32_ModeSupportAndSystemConfigurationFull_v.dummy_vars .dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[2], dml32_ModeSupportAndSystemConfigurationFull_v.dummy_vars .dml32_ModeSupportAndSystemConfigurationFull.dummy_double_array[0], dml32_ModeSupportAndSystemConfigurationFull_v.dummy_vars .dml32_ModeSupportAndSystemConfigurationFull.dummy_double_array[1], dml32_ModeSupportAndSystemConfigurationFull_v.dummy_vars .dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[3], dml32_ModeSupportAndSystemConfigurationFull_v.dummy_vars .dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[4], dml32_ModeSupportAndSystemConfigurationFull_v.dummy_vars .dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[5], dml32_ModeSupportAndSystemConfigurationFull_v.dummy_vars .dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[6], dml32_ModeSupportAndSystemConfigurationFull_v.dummy_vars .dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[7], &dml32_ModeSupportAndSystemConfigurationFull_v_368_1_2_0_0, &dml32_ModeSupportAndSystemConfigurationFull_v_368_1_0_0_0, &dml32_ModeSupportAndSystemConfigurationFull_v_368_1_0_1_0, &dml32_ModeSupportAndSystemConfigurationFull_CompBufReservedSpaceNeedAdjustmentSingleDPP, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .SingleDPPViewportSizeSupportPerSurface, &dml32_ModeSupportAndSystemConfigurationFull_v_368_1_2_1_0); for (;;) { if (0 && dml32_ModeSupportAndSystemConfigurationFull_CompBufReservedSpaceNeedAdjustment) { dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.MPCCombine [dml32_ModeSupportAndSystemConfigurationFull_start_state][0] [dml32_ModeSupportAndSystemConfigurationFull_NumberOfNonCombinedSurfaceOfMaximumBandwidth] = true; } dml32_CalculateDPPCLK( dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .NumberOfActiveSurfaces, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .DISPCLKDPPCLKDSCCLKDownSpreading, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .DISPCLKDPPCLKVCOSpeed, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .MinDPPCLKUsingSingleDPP, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .NoOfDPPThisState, &dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.GlobalDPPCLK, dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .RequiredDPPCLKThisState); } for (;;) dml32_ModeSupportAndSystemConfigurationFull_TotalSlots = dml32_ModeSupportAndSystemConfigurationFull_TotalSlots + dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba.RequiredSlots [dml32_ModeSupportAndSystemConfigurationFull_start_state] [dml32_ModeSupportAndSystemConfigurationFull_j]; for (; dml32_ModeSupportAndSystemConfigurationFull_m <= dml32_ModeSupportAndSystemConfigurationFull_i; dml32_ModeSupportAndSystemConfigurationFull_i--) dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .CompressedBufferSizeInkByte = dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .CompressedBufferSizeInkByteAllStates [dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .VoltageLevel] [dml32_ModeSupportAndSystemConfigurationFull_MaximumMPCCombine]; for (; dml32_ModeSupportAndSystemConfigurationFull_k <= dml32_ModeSupportAndSystemConfigurationFull_mode_lib.vba .NumberOfActiveSurfaces;) ; }
On 2024-06-13 18:22, Nathan Chancellor wrote: > Hi Palmer (and AMD folks), > > On Tue, Jun 04, 2024 at 09:04:23AM -0700, Palmer Dabbelt wrote: >> On Mon, 03 Jun 2024 15:29:48 PDT (-0700), nathan@kernel.org wrote: >>> On Thu, May 30, 2024 at 07:57:42AM -0700, Palmer Dabbelt wrote: >>>> From: Palmer Dabbelt <palmer@rivosinc.com> >>>> >>>> I get a handful of build errors along the lines of >>>> >>>> linux/drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c:58:13: error: stack frame size (2352) exceeds limit (2048) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation' [-Werror,-Wframe-larger-than] >>>> static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation( >>>> ^ >>>> linux/drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c:1724:6: error: stack frame size (2096) exceeds limit (2048) in 'dml32_ModeSupportAndSystemConfigurationFull' [-Werror,-Wframe-larger-than] >>>> void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib) >>>> ^ >>> >>> Judging from the message, this is clang/LLVM? What version? >> >> Yes, LLVM. Looks like I'm on 16.0.6. Probably time for an update, so I'll >> give it a shot. > > FWIW, I can reproduce this with tip of tree, I was just curious in case > that ended up mattering. > >>> I assume >>> this showed up in 6.10-rc1 because of commit 77acc6b55ae4 ("riscv: add >>> support for kernel-mode FPU"), which allows this driver to be built for >>> RISC-V. >> >> Seems reasonable. This didn't show up until post-merge, not 100% sure why. >> I didn't really dig any farther. > > Perhaps you fast forwarded your tree to include that commit? > >>> Is this allmodconfig or some other configuration? >> >> IIRC both "allmodconfig" and "allyesconfig" show it, but I don't have a >> build tree sitting around to be 100% sure. > > Yeah, allmodconfig triggers it. > > I was able to come up with a "trivial" reproducer using cvise (attached > to this mail if you are curious) that has worse stack usage by a rough > factor of 2: > > $ clang --target=riscv64-linux-gnu -O2 -Wall -Wframe-larger-than=512 -c -o /dev/null display_mode_vba_32.i > display_mode_vba_32.i:598:6: warning: stack frame size (1264) exceeds limit (512) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation' [-Wframe-larger-than] > 598 | void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation() { > | ^ > 1 warning generated. > > $ riscv64-linux-gcc -O2 -Wall -Wframe-larger-than=512 -c -o /dev/null display_mode_vba_32.i > display_mode_vba_32.i: In function 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation': > display_mode_vba_32.i:1729:1: warning: the frame size of 528 bytes is larger than 512 bytes [-Wframe-larger-than=] > 1729 | } > | ^ > > I have not done too much further investigation but this is almost > certainly the same issue that has come up before [1][2] with the AMD > display code using functions with a large number of parameters, such > that they have to passed on the stack, coupled with inlining (if I > remember correctly, LLVM gives more of an inlining discount the less a > function is used in a file). > > While clang does poorly with that code, I am not interested in > continuing to fix this code new hardware revision after new hardware > revision. We could just avoid this code like we do for arm64 for a > similar reason: > > diff --git a/drivers/gpu/drm/amd/display/Kconfig b/drivers/gpu/drm/amd/display/Kconfig > index 5fcd4f778dc3..64df713df878 100644 > --- a/drivers/gpu/drm/amd/display/Kconfig > +++ b/drivers/gpu/drm/amd/display/Kconfig > @@ -8,7 +8,7 @@ config DRM_AMD_DC > depends on BROKEN || !CC_IS_CLANG || ARM64 || RISCV || SPARC64 || X86_64 > select SND_HDA_COMPONENT if SND_HDA_CORE > # !CC_IS_CLANG: https://github.com/ClangBuiltLinux/linux/issues/1752 > - select DRM_AMD_DC_FP if ARCH_HAS_KERNEL_FPU_SUPPORT && (!ARM64 || !CC_IS_CLANG) > + select DRM_AMD_DC_FP if ARCH_HAS_KERNEL_FPU_SUPPORT && (!(ARM64 || RISCV) || !CC_IS_CLANG) > help > Choose this option if you want to use the new display engine > support for AMDGPU. This adds required support for Vega and > This makes sense to me. I'll be happy to provide an RB if you send a patch. Harry > [1]: https://lore.kernel.org/20231019205117.GA839902@dev-arch.thelio-3990X/ > [2]: https://lore.kernel.org/20220830203409.3491379-1-nathan@kernel.org/ > > Cheers, > Nathan
diff --git a/drivers/gpu/drm/amd/display/dc/dml/Makefile b/drivers/gpu/drm/amd/display/dc/dml/Makefile index c4a5efd2dda5..b2bd72e63734 100644 --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile @@ -62,9 +62,9 @@ endif ifneq ($(CONFIG_FRAME_WARN),0) ifeq ($(filter y,$(CONFIG_KASAN)$(CONFIG_KCSAN)),y) -frame_warn_flag := -Wframe-larger-than=3072 +frame_warn_flag := -Wframe-larger-than=4096 else -frame_warn_flag := -Wframe-larger-than=2048 +frame_warn_flag := -Wframe-larger-than=3072 endif endif