1dda4fb85SAurabindo Pillai /* 2dda4fb85SAurabindo Pillai * Copyright 2022 Advanced Micro Devices, Inc. 3dda4fb85SAurabindo Pillai * 4dda4fb85SAurabindo Pillai * Permission is hereby granted, free of charge, to any person obtaining a 5dda4fb85SAurabindo Pillai * copy of this software and associated documentation files (the "Software"), 6dda4fb85SAurabindo Pillai * to deal in the Software without restriction, including without limitation 7dda4fb85SAurabindo Pillai * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8dda4fb85SAurabindo Pillai * and/or sell copies of the Software, and to permit persons to whom the 9dda4fb85SAurabindo Pillai * Software is furnished to do so, subject to the following conditions: 10dda4fb85SAurabindo Pillai * 11dda4fb85SAurabindo Pillai * The above copyright notice and this permission notice shall be included in 12dda4fb85SAurabindo Pillai * all copies or substantial portions of the Software. 13dda4fb85SAurabindo Pillai * 14dda4fb85SAurabindo Pillai * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15dda4fb85SAurabindo Pillai * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16dda4fb85SAurabindo Pillai * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17dda4fb85SAurabindo Pillai * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 18dda4fb85SAurabindo Pillai * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 19dda4fb85SAurabindo Pillai * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 20dda4fb85SAurabindo Pillai * OTHER DEALINGS IN THE SOFTWARE. 21dda4fb85SAurabindo Pillai * 22dda4fb85SAurabindo Pillai * Authors: AMD 23dda4fb85SAurabindo Pillai * 24dda4fb85SAurabindo Pillai */ 25dda4fb85SAurabindo Pillai 26dda4fb85SAurabindo Pillai #ifndef __DML_DCN32_DISPLAY_MODE_VBA_UTIL_32_H__ 27dda4fb85SAurabindo Pillai #define __DML_DCN32_DISPLAY_MODE_VBA_UTIL_32_H__ 28dda4fb85SAurabindo Pillai 29dda4fb85SAurabindo Pillai #include "../display_mode_enums.h" 30dda4fb85SAurabindo Pillai #include "os_types.h" 31dda4fb85SAurabindo Pillai #include "../dc_features.h" 32dda4fb85SAurabindo Pillai #include "../display_mode_structs.h" 332f8f9118SChaitanya Dhere #include "../display_mode_vba.h" 34dda4fb85SAurabindo Pillai 35dda4fb85SAurabindo Pillai unsigned int dml32_dscceComputeDelay( 36dda4fb85SAurabindo Pillai unsigned int bpc, 37dda4fb85SAurabindo Pillai double BPP, 38dda4fb85SAurabindo Pillai unsigned int sliceWidth, 39dda4fb85SAurabindo Pillai unsigned int numSlices, 40dda4fb85SAurabindo Pillai enum output_format_class pixelFormat, 41dda4fb85SAurabindo Pillai enum output_encoder_class Output); 42dda4fb85SAurabindo Pillai 43dda4fb85SAurabindo Pillai unsigned int dml32_dscComputeDelay(enum output_format_class pixelFormat, enum output_encoder_class Output); 44dda4fb85SAurabindo Pillai 45dda4fb85SAurabindo Pillai bool IsVertical(enum dm_rotation_angle Scan); 46dda4fb85SAurabindo Pillai 47dda4fb85SAurabindo Pillai void dml32_CalculateBytePerPixelAndBlockSizes( 48dda4fb85SAurabindo Pillai enum source_format_class SourcePixelFormat, 49dda4fb85SAurabindo Pillai enum dm_swizzle_mode SurfaceTiling, 50dda4fb85SAurabindo Pillai 51dda4fb85SAurabindo Pillai /*Output*/ 52dda4fb85SAurabindo Pillai unsigned int *BytePerPixelY, 53dda4fb85SAurabindo Pillai unsigned int *BytePerPixelC, 54dda4fb85SAurabindo Pillai double *BytePerPixelDETY, 55dda4fb85SAurabindo Pillai double *BytePerPixelDETC, 56dda4fb85SAurabindo Pillai unsigned int *BlockHeight256BytesY, 57dda4fb85SAurabindo Pillai unsigned int *BlockHeight256BytesC, 58dda4fb85SAurabindo Pillai unsigned int *BlockWidth256BytesY, 59dda4fb85SAurabindo Pillai unsigned int *BlockWidth256BytesC, 60dda4fb85SAurabindo Pillai unsigned int *MacroTileHeightY, 61dda4fb85SAurabindo Pillai unsigned int *MacroTileHeightC, 62dda4fb85SAurabindo Pillai unsigned int *MacroTileWidthY, 63dda4fb85SAurabindo Pillai unsigned int *MacroTileWidthC); 64dda4fb85SAurabindo Pillai 65dda4fb85SAurabindo Pillai void dml32_CalculateSinglePipeDPPCLKAndSCLThroughput( 66dda4fb85SAurabindo Pillai double HRatio, 67dda4fb85SAurabindo Pillai double HRatioChroma, 68dda4fb85SAurabindo Pillai double VRatio, 69dda4fb85SAurabindo Pillai double VRatioChroma, 70dda4fb85SAurabindo Pillai double MaxDCHUBToPSCLThroughput, 71dda4fb85SAurabindo Pillai double MaxPSCLToLBThroughput, 72dda4fb85SAurabindo Pillai double PixelClock, 73dda4fb85SAurabindo Pillai enum source_format_class SourcePixelFormat, 74dda4fb85SAurabindo Pillai unsigned int HTaps, 75dda4fb85SAurabindo Pillai unsigned int HTapsChroma, 76dda4fb85SAurabindo Pillai unsigned int VTaps, 77dda4fb85SAurabindo Pillai unsigned int VTapsChroma, 78dda4fb85SAurabindo Pillai 79dda4fb85SAurabindo Pillai /* output */ 80dda4fb85SAurabindo Pillai double *PSCL_THROUGHPUT, 81dda4fb85SAurabindo Pillai double *PSCL_THROUGHPUT_CHROMA, 82dda4fb85SAurabindo Pillai double *DPPCLKUsingSingleDPP); 83dda4fb85SAurabindo Pillai 84dda4fb85SAurabindo Pillai void dml32_CalculateSwathAndDETConfiguration( 85dda4fb85SAurabindo Pillai unsigned int DETSizeOverride[], 86dda4fb85SAurabindo Pillai enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange[], 87dda4fb85SAurabindo Pillai unsigned int ConfigReturnBufferSizeInKByte, 88dda4fb85SAurabindo Pillai unsigned int MaxTotalDETInKByte, 89dda4fb85SAurabindo Pillai unsigned int MinCompressedBufferSizeInKByte, 90dda4fb85SAurabindo Pillai double ForceSingleDPP, 91dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 92dda4fb85SAurabindo Pillai unsigned int nomDETInKByte, 93dda4fb85SAurabindo Pillai enum unbounded_requesting_policy UseUnboundedRequestingFinal, 94f4b4e41aSJun Lei bool DisableUnboundRequestIfCompBufReservedSpaceNeedAdjustment, 95f4b4e41aSJun Lei unsigned int PixelChunkSizeKBytes, 96f4b4e41aSJun Lei unsigned int ROBSizeKBytes, 97dda4fb85SAurabindo Pillai unsigned int CompressedBufferSegmentSizeInkByteFinal, 98dda4fb85SAurabindo Pillai enum output_encoder_class Output[], 99dda4fb85SAurabindo Pillai double ReadBandwidthLuma[], 100dda4fb85SAurabindo Pillai double ReadBandwidthChroma[], 101dda4fb85SAurabindo Pillai double MaximumSwathWidthLuma[], 102dda4fb85SAurabindo Pillai double MaximumSwathWidthChroma[], 103dda4fb85SAurabindo Pillai enum dm_rotation_angle SourceRotation[], 104dda4fb85SAurabindo Pillai bool ViewportStationary[], 105dda4fb85SAurabindo Pillai enum source_format_class SourcePixelFormat[], 106dda4fb85SAurabindo Pillai enum dm_swizzle_mode SurfaceTiling[], 107dda4fb85SAurabindo Pillai unsigned int ViewportWidth[], 108dda4fb85SAurabindo Pillai unsigned int ViewportHeight[], 109dda4fb85SAurabindo Pillai unsigned int ViewportXStart[], 110dda4fb85SAurabindo Pillai unsigned int ViewportYStart[], 111dda4fb85SAurabindo Pillai unsigned int ViewportXStartC[], 112dda4fb85SAurabindo Pillai unsigned int ViewportYStartC[], 113dda4fb85SAurabindo Pillai unsigned int SurfaceWidthY[], 114dda4fb85SAurabindo Pillai unsigned int SurfaceWidthC[], 115dda4fb85SAurabindo Pillai unsigned int SurfaceHeightY[], 116dda4fb85SAurabindo Pillai unsigned int SurfaceHeightC[], 117dda4fb85SAurabindo Pillai unsigned int Read256BytesBlockHeightY[], 118dda4fb85SAurabindo Pillai unsigned int Read256BytesBlockHeightC[], 119dda4fb85SAurabindo Pillai unsigned int Read256BytesBlockWidthY[], 120dda4fb85SAurabindo Pillai unsigned int Read256BytesBlockWidthC[], 121dda4fb85SAurabindo Pillai enum odm_combine_mode ODMMode[], 122dda4fb85SAurabindo Pillai unsigned int BlendingAndTiming[], 123dda4fb85SAurabindo Pillai unsigned int BytePerPixY[], 124dda4fb85SAurabindo Pillai unsigned int BytePerPixC[], 125dda4fb85SAurabindo Pillai double BytePerPixDETY[], 126dda4fb85SAurabindo Pillai double BytePerPixDETC[], 127dda4fb85SAurabindo Pillai unsigned int HActive[], 128dda4fb85SAurabindo Pillai double HRatio[], 129dda4fb85SAurabindo Pillai double HRatioChroma[], 130dda4fb85SAurabindo Pillai unsigned int DPPPerSurface[], 131dda4fb85SAurabindo Pillai 132dda4fb85SAurabindo Pillai /* Output */ 133dda4fb85SAurabindo Pillai unsigned int swath_width_luma_ub[], 134dda4fb85SAurabindo Pillai unsigned int swath_width_chroma_ub[], 135dda4fb85SAurabindo Pillai double SwathWidth[], 136dda4fb85SAurabindo Pillai double SwathWidthChroma[], 137dda4fb85SAurabindo Pillai unsigned int SwathHeightY[], 138dda4fb85SAurabindo Pillai unsigned int SwathHeightC[], 139dda4fb85SAurabindo Pillai unsigned int DETBufferSizeInKByte[], 140dda4fb85SAurabindo Pillai unsigned int DETBufferSizeY[], 141dda4fb85SAurabindo Pillai unsigned int DETBufferSizeC[], 142dda4fb85SAurabindo Pillai bool *UnboundedRequestEnabled, 143dda4fb85SAurabindo Pillai unsigned int *CompressedBufferSizeInkByte, 144f4b4e41aSJun Lei unsigned int *CompBufReservedSpaceKBytes, 145f4b4e41aSJun Lei bool *CompBufReservedSpaceNeedAdjustment, 146dda4fb85SAurabindo Pillai bool ViewportSizeSupportPerSurface[], 147dda4fb85SAurabindo Pillai bool *ViewportSizeSupport); 148dda4fb85SAurabindo Pillai 149dda4fb85SAurabindo Pillai void dml32_CalculateSwathWidth( 150dda4fb85SAurabindo Pillai bool ForceSingleDPP, 151dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 152dda4fb85SAurabindo Pillai enum source_format_class SourcePixelFormat[], 153dda4fb85SAurabindo Pillai enum dm_rotation_angle SourceScan[], 154dda4fb85SAurabindo Pillai bool ViewportStationary[], 155dda4fb85SAurabindo Pillai unsigned int ViewportWidth[], 156dda4fb85SAurabindo Pillai unsigned int ViewportHeight[], 157dda4fb85SAurabindo Pillai unsigned int ViewportXStart[], 158dda4fb85SAurabindo Pillai unsigned int ViewportYStart[], 159dda4fb85SAurabindo Pillai unsigned int ViewportXStartC[], 160dda4fb85SAurabindo Pillai unsigned int ViewportYStartC[], 161dda4fb85SAurabindo Pillai unsigned int SurfaceWidthY[], 162dda4fb85SAurabindo Pillai unsigned int SurfaceWidthC[], 163dda4fb85SAurabindo Pillai unsigned int SurfaceHeightY[], 164dda4fb85SAurabindo Pillai unsigned int SurfaceHeightC[], 165dda4fb85SAurabindo Pillai enum odm_combine_mode ODMMode[], 166dda4fb85SAurabindo Pillai unsigned int BytePerPixY[], 167dda4fb85SAurabindo Pillai unsigned int BytePerPixC[], 168dda4fb85SAurabindo Pillai unsigned int Read256BytesBlockHeightY[], 169dda4fb85SAurabindo Pillai unsigned int Read256BytesBlockHeightC[], 170dda4fb85SAurabindo Pillai unsigned int Read256BytesBlockWidthY[], 171dda4fb85SAurabindo Pillai unsigned int Read256BytesBlockWidthC[], 172dda4fb85SAurabindo Pillai unsigned int BlendingAndTiming[], 173dda4fb85SAurabindo Pillai unsigned int HActive[], 174dda4fb85SAurabindo Pillai double HRatio[], 175dda4fb85SAurabindo Pillai unsigned int DPPPerSurface[], 176dda4fb85SAurabindo Pillai 177dda4fb85SAurabindo Pillai /* Output */ 178dda4fb85SAurabindo Pillai double SwathWidthdoubleDPPY[], 179dda4fb85SAurabindo Pillai double SwathWidthdoubleDPPC[], 180dda4fb85SAurabindo Pillai double SwathWidthY[], // per-pipe 181dda4fb85SAurabindo Pillai double SwathWidthC[], // per-pipe 182dda4fb85SAurabindo Pillai unsigned int MaximumSwathHeightY[], 183dda4fb85SAurabindo Pillai unsigned int MaximumSwathHeightC[], 184dda4fb85SAurabindo Pillai unsigned int swath_width_luma_ub[], // per-pipe 185dda4fb85SAurabindo Pillai unsigned int swath_width_chroma_ub[]); 186dda4fb85SAurabindo Pillai 187dda4fb85SAurabindo Pillai bool dml32_UnboundedRequest(enum unbounded_requesting_policy UseUnboundedRequestingFinal, 188dda4fb85SAurabindo Pillai unsigned int TotalNumberOfActiveDPP, 189dda4fb85SAurabindo Pillai bool NoChroma, 190f4b4e41aSJun Lei enum output_encoder_class Output, 191f4b4e41aSJun Lei enum dm_swizzle_mode SurfaceTiling, 192f4b4e41aSJun Lei bool CompBufReservedSpaceNeedAdjustment, 193f4b4e41aSJun Lei bool DisableUnboundRequestIfCompBufReservedSpaceNeedAdjustment); 194dda4fb85SAurabindo Pillai 195dda4fb85SAurabindo Pillai void dml32_CalculateDETBufferSize( 196dda4fb85SAurabindo Pillai unsigned int DETSizeOverride[], 197dda4fb85SAurabindo Pillai enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange[], 198dda4fb85SAurabindo Pillai bool ForceSingleDPP, 199dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 200dda4fb85SAurabindo Pillai bool UnboundedRequestEnabled, 201dda4fb85SAurabindo Pillai unsigned int nomDETInKByte, 202dda4fb85SAurabindo Pillai unsigned int MaxTotalDETInKByte, 203dda4fb85SAurabindo Pillai unsigned int ConfigReturnBufferSizeInKByte, 204dda4fb85SAurabindo Pillai unsigned int MinCompressedBufferSizeInKByte, 205dda4fb85SAurabindo Pillai unsigned int CompressedBufferSegmentSizeInkByteFinal, 206dda4fb85SAurabindo Pillai enum source_format_class SourcePixelFormat[], 207dda4fb85SAurabindo Pillai double ReadBandwidthLuma[], 208dda4fb85SAurabindo Pillai double ReadBandwidthChroma[], 209dda4fb85SAurabindo Pillai unsigned int RoundedUpMaxSwathSizeBytesY[], 210dda4fb85SAurabindo Pillai unsigned int RoundedUpMaxSwathSizeBytesC[], 211dda4fb85SAurabindo Pillai unsigned int DPPPerSurface[], 212dda4fb85SAurabindo Pillai /* Output */ 213dda4fb85SAurabindo Pillai unsigned int DETBufferSizeInKByte[], 214dda4fb85SAurabindo Pillai unsigned int *CompressedBufferSizeInkByte); 215dda4fb85SAurabindo Pillai 216dda4fb85SAurabindo Pillai void dml32_CalculateODMMode( 217dda4fb85SAurabindo Pillai unsigned int MaximumPixelsPerLinePerDSCUnit, 218dda4fb85SAurabindo Pillai unsigned int HActive, 21916e5859dSChris Park enum output_format_class OutFormat, 220dda4fb85SAurabindo Pillai enum output_encoder_class Output, 221dda4fb85SAurabindo Pillai enum odm_combine_policy ODMUse, 222dda4fb85SAurabindo Pillai double StateDispclk, 223dda4fb85SAurabindo Pillai double MaxDispclk, 224dda4fb85SAurabindo Pillai bool DSCEnable, 225dda4fb85SAurabindo Pillai unsigned int TotalNumberOfActiveDPP, 226dda4fb85SAurabindo Pillai unsigned int MaxNumDPP, 227dda4fb85SAurabindo Pillai double PixelClock, 228dda4fb85SAurabindo Pillai double DISPCLKDPPCLKDSCCLKDownSpreading, 229dda4fb85SAurabindo Pillai double DISPCLKRampingMargin, 230dda4fb85SAurabindo Pillai double DISPCLKDPPCLKVCOSpeed, 231572200dbSTaimur Hassan unsigned int NumberOfDSCSlices, 232dda4fb85SAurabindo Pillai 233dda4fb85SAurabindo Pillai /* Output */ 234dda4fb85SAurabindo Pillai bool *TotalAvailablePipesSupport, 235dda4fb85SAurabindo Pillai unsigned int *NumberOfDPP, 236dda4fb85SAurabindo Pillai enum odm_combine_mode *ODMMode, 237dda4fb85SAurabindo Pillai double *RequiredDISPCLKPerSurface); 238dda4fb85SAurabindo Pillai 239dda4fb85SAurabindo Pillai double dml32_CalculateRequiredDispclk( 240dda4fb85SAurabindo Pillai enum odm_combine_mode ODMMode, 241dda4fb85SAurabindo Pillai double PixelClock, 242dda4fb85SAurabindo Pillai double DISPCLKDPPCLKDSCCLKDownSpreading, 243dda4fb85SAurabindo Pillai double DISPCLKRampingMargin, 244dda4fb85SAurabindo Pillai double DISPCLKDPPCLKVCOSpeed, 245dda4fb85SAurabindo Pillai double MaxDispclk); 246dda4fb85SAurabindo Pillai 247dda4fb85SAurabindo Pillai double dml32_RoundToDFSGranularity(double Clock, bool round_up, double VCOSpeed); 248dda4fb85SAurabindo Pillai 249dda4fb85SAurabindo Pillai void dml32_CalculateOutputLink( 250dda4fb85SAurabindo Pillai double PHYCLKPerState, 251dda4fb85SAurabindo Pillai double PHYCLKD18PerState, 252dda4fb85SAurabindo Pillai double PHYCLKD32PerState, 253dda4fb85SAurabindo Pillai double Downspreading, 254dda4fb85SAurabindo Pillai bool IsMainSurfaceUsingTheIndicatedTiming, 255dda4fb85SAurabindo Pillai enum output_encoder_class Output, 256dda4fb85SAurabindo Pillai enum output_format_class OutputFormat, 257dda4fb85SAurabindo Pillai unsigned int HTotal, 258dda4fb85SAurabindo Pillai unsigned int HActive, 259dda4fb85SAurabindo Pillai double PixelClockBackEnd, 260dda4fb85SAurabindo Pillai double ForcedOutputLinkBPP, 261dda4fb85SAurabindo Pillai unsigned int DSCInputBitPerComponent, 262dda4fb85SAurabindo Pillai unsigned int NumberOfDSCSlices, 263dda4fb85SAurabindo Pillai double AudioSampleRate, 264dda4fb85SAurabindo Pillai unsigned int AudioSampleLayout, 265dda4fb85SAurabindo Pillai enum odm_combine_mode ODMModeNoDSC, 266dda4fb85SAurabindo Pillai enum odm_combine_mode ODMModeDSC, 267dda4fb85SAurabindo Pillai bool DSCEnable, 268dda4fb85SAurabindo Pillai unsigned int OutputLinkDPLanes, 269dda4fb85SAurabindo Pillai enum dm_output_link_dp_rate OutputLinkDPRate, 270dda4fb85SAurabindo Pillai 271dda4fb85SAurabindo Pillai /* Output */ 272dda4fb85SAurabindo Pillai bool *RequiresDSC, 273dda4fb85SAurabindo Pillai double *RequiresFEC, 274dda4fb85SAurabindo Pillai double *OutBpp, 275dda4fb85SAurabindo Pillai enum dm_output_type *OutputType, 276dda4fb85SAurabindo Pillai enum dm_output_rate *OutputRate, 277dda4fb85SAurabindo Pillai unsigned int *RequiredSlots); 278dda4fb85SAurabindo Pillai 279dda4fb85SAurabindo Pillai void dml32_CalculateDPPCLK( 280dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 281dda4fb85SAurabindo Pillai double DISPCLKDPPCLKDSCCLKDownSpreading, 282dda4fb85SAurabindo Pillai double DISPCLKDPPCLKVCOSpeed, 283dda4fb85SAurabindo Pillai double DPPCLKUsingSingleDPP[], 284dda4fb85SAurabindo Pillai unsigned int DPPPerSurface[], 285dda4fb85SAurabindo Pillai 286dda4fb85SAurabindo Pillai /* output */ 287dda4fb85SAurabindo Pillai double *GlobalDPPCLK, 288dda4fb85SAurabindo Pillai double Dppclk[]); 289dda4fb85SAurabindo Pillai 290dda4fb85SAurabindo Pillai double dml32_TruncToValidBPP( 291dda4fb85SAurabindo Pillai double LinkBitRate, 292dda4fb85SAurabindo Pillai unsigned int Lanes, 293dda4fb85SAurabindo Pillai unsigned int HTotal, 294dda4fb85SAurabindo Pillai unsigned int HActive, 295dda4fb85SAurabindo Pillai double PixelClock, 296dda4fb85SAurabindo Pillai double DesiredBPP, 297dda4fb85SAurabindo Pillai bool DSCEnable, 298dda4fb85SAurabindo Pillai enum output_encoder_class Output, 299dda4fb85SAurabindo Pillai enum output_format_class Format, 300dda4fb85SAurabindo Pillai unsigned int DSCInputBitPerComponent, 301dda4fb85SAurabindo Pillai unsigned int DSCSlices, 302dda4fb85SAurabindo Pillai unsigned int AudioRate, 303dda4fb85SAurabindo Pillai unsigned int AudioLayout, 304dda4fb85SAurabindo Pillai enum odm_combine_mode ODMModeNoDSC, 305dda4fb85SAurabindo Pillai enum odm_combine_mode ODMModeDSC, 306dda4fb85SAurabindo Pillai /* Output */ 307dda4fb85SAurabindo Pillai unsigned int *RequiredSlots); 308dda4fb85SAurabindo Pillai 309dda4fb85SAurabindo Pillai double dml32_RequiredDTBCLK( 310dda4fb85SAurabindo Pillai bool DSCEnable, 311dda4fb85SAurabindo Pillai double PixelClock, 312dda4fb85SAurabindo Pillai enum output_format_class OutputFormat, 313dda4fb85SAurabindo Pillai double OutputBpp, 314dda4fb85SAurabindo Pillai unsigned int DSCSlices, 315dda4fb85SAurabindo Pillai unsigned int HTotal, 316dda4fb85SAurabindo Pillai unsigned int HActive, 317dda4fb85SAurabindo Pillai unsigned int AudioRate, 318dda4fb85SAurabindo Pillai unsigned int AudioLayout); 319dda4fb85SAurabindo Pillai 320dda4fb85SAurabindo Pillai unsigned int dml32_DSCDelayRequirement(bool DSCEnabled, 321dda4fb85SAurabindo Pillai enum odm_combine_mode ODMMode, 322dda4fb85SAurabindo Pillai unsigned int DSCInputBitPerComponent, 323dda4fb85SAurabindo Pillai double OutputBpp, 324dda4fb85SAurabindo Pillai unsigned int HActive, 325dda4fb85SAurabindo Pillai unsigned int HTotal, 326dda4fb85SAurabindo Pillai unsigned int NumberOfDSCSlices, 327dda4fb85SAurabindo Pillai enum output_format_class OutputFormat, 328dda4fb85SAurabindo Pillai enum output_encoder_class Output, 329dda4fb85SAurabindo Pillai double PixelClock, 330f30508e9SGeorge Shen double PixelClockBackEnd, 331f30508e9SGeorge Shen double dsc_delay_factor_wa); 332dda4fb85SAurabindo Pillai 333dda4fb85SAurabindo Pillai void dml32_CalculateSurfaceSizeInMall( 334dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 335dda4fb85SAurabindo Pillai unsigned int MALLAllocatedForDCN, 336dda4fb85SAurabindo Pillai enum dm_use_mall_for_static_screen_mode UseMALLForStaticScreen[], 337dda4fb85SAurabindo Pillai bool DCCEnable[], 338dda4fb85SAurabindo Pillai bool ViewportStationary[], 339dda4fb85SAurabindo Pillai unsigned int ViewportXStartY[], 340dda4fb85SAurabindo Pillai unsigned int ViewportYStartY[], 341dda4fb85SAurabindo Pillai unsigned int ViewportXStartC[], 342dda4fb85SAurabindo Pillai unsigned int ViewportYStartC[], 343dda4fb85SAurabindo Pillai unsigned int ViewportWidthY[], 344dda4fb85SAurabindo Pillai unsigned int ViewportHeightY[], 345dda4fb85SAurabindo Pillai unsigned int BytesPerPixelY[], 346dda4fb85SAurabindo Pillai unsigned int ViewportWidthC[], 347dda4fb85SAurabindo Pillai unsigned int ViewportHeightC[], 348dda4fb85SAurabindo Pillai unsigned int BytesPerPixelC[], 349dda4fb85SAurabindo Pillai unsigned int SurfaceWidthY[], 350dda4fb85SAurabindo Pillai unsigned int SurfaceWidthC[], 351dda4fb85SAurabindo Pillai unsigned int SurfaceHeightY[], 352dda4fb85SAurabindo Pillai unsigned int SurfaceHeightC[], 353dda4fb85SAurabindo Pillai unsigned int Read256BytesBlockWidthY[], 354dda4fb85SAurabindo Pillai unsigned int Read256BytesBlockWidthC[], 355dda4fb85SAurabindo Pillai unsigned int Read256BytesBlockHeightY[], 356dda4fb85SAurabindo Pillai unsigned int Read256BytesBlockHeightC[], 357dda4fb85SAurabindo Pillai unsigned int ReadBlockWidthY[], 358dda4fb85SAurabindo Pillai unsigned int ReadBlockWidthC[], 359dda4fb85SAurabindo Pillai unsigned int ReadBlockHeightY[], 360dda4fb85SAurabindo Pillai unsigned int ReadBlockHeightC[], 361dda4fb85SAurabindo Pillai 362dda4fb85SAurabindo Pillai /* Output */ 363dda4fb85SAurabindo Pillai unsigned int SurfaceSizeInMALL[], 364dda4fb85SAurabindo Pillai bool *ExceededMALLSize); 365dda4fb85SAurabindo Pillai 366dda4fb85SAurabindo Pillai void dml32_CalculateVMRowAndSwath( 367dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 368dda4fb85SAurabindo Pillai DmlPipe myPipe[], 369dda4fb85SAurabindo Pillai unsigned int SurfaceSizeInMALL[], 370dda4fb85SAurabindo Pillai unsigned int PTEBufferSizeInRequestsLuma, 371dda4fb85SAurabindo Pillai unsigned int PTEBufferSizeInRequestsChroma, 372dda4fb85SAurabindo Pillai unsigned int DCCMetaBufferSizeBytes, 373dda4fb85SAurabindo Pillai enum dm_use_mall_for_static_screen_mode UseMALLForStaticScreen[], 374dda4fb85SAurabindo Pillai enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange[], 375dda4fb85SAurabindo Pillai unsigned int MALLAllocatedForDCN, 376dda4fb85SAurabindo Pillai double SwathWidthY[], 377dda4fb85SAurabindo Pillai double SwathWidthC[], 378dda4fb85SAurabindo Pillai bool GPUVMEnable, 379dda4fb85SAurabindo Pillai bool HostVMEnable, 380dda4fb85SAurabindo Pillai unsigned int HostVMMaxNonCachedPageTableLevels, 381dda4fb85SAurabindo Pillai unsigned int GPUVMMaxPageTableLevels, 382dda4fb85SAurabindo Pillai unsigned int GPUVMMinPageSizeKBytes[], 383dda4fb85SAurabindo Pillai unsigned int HostVMMinPageSize, 384dda4fb85SAurabindo Pillai 385dda4fb85SAurabindo Pillai /* Output */ 386dda4fb85SAurabindo Pillai bool PTEBufferSizeNotExceeded[], 387dda4fb85SAurabindo Pillai bool DCCMetaBufferSizeNotExceeded[], 388dda4fb85SAurabindo Pillai unsigned int dpte_row_width_luma_ub[], 389dda4fb85SAurabindo Pillai unsigned int dpte_row_width_chroma_ub[], 390dda4fb85SAurabindo Pillai unsigned int dpte_row_height_luma[], 391dda4fb85SAurabindo Pillai unsigned int dpte_row_height_chroma[], 392dda4fb85SAurabindo Pillai unsigned int dpte_row_height_linear_luma[], // VBA_DELTA 393dda4fb85SAurabindo Pillai unsigned int dpte_row_height_linear_chroma[], // VBA_DELTA 394dda4fb85SAurabindo Pillai unsigned int meta_req_width[], 395dda4fb85SAurabindo Pillai unsigned int meta_req_width_chroma[], 396dda4fb85SAurabindo Pillai unsigned int meta_req_height[], 397dda4fb85SAurabindo Pillai unsigned int meta_req_height_chroma[], 398dda4fb85SAurabindo Pillai unsigned int meta_row_width[], 399dda4fb85SAurabindo Pillai unsigned int meta_row_width_chroma[], 400dda4fb85SAurabindo Pillai unsigned int meta_row_height[], 401dda4fb85SAurabindo Pillai unsigned int meta_row_height_chroma[], 402dda4fb85SAurabindo Pillai unsigned int vm_group_bytes[], 403dda4fb85SAurabindo Pillai unsigned int dpte_group_bytes[], 404dda4fb85SAurabindo Pillai unsigned int PixelPTEReqWidthY[], 405dda4fb85SAurabindo Pillai unsigned int PixelPTEReqHeightY[], 406dda4fb85SAurabindo Pillai unsigned int PTERequestSizeY[], 407dda4fb85SAurabindo Pillai unsigned int PixelPTEReqWidthC[], 408dda4fb85SAurabindo Pillai unsigned int PixelPTEReqHeightC[], 409dda4fb85SAurabindo Pillai unsigned int PTERequestSizeC[], 410dda4fb85SAurabindo Pillai unsigned int dpde0_bytes_per_frame_ub_l[], 411dda4fb85SAurabindo Pillai unsigned int meta_pte_bytes_per_frame_ub_l[], 412dda4fb85SAurabindo Pillai unsigned int dpde0_bytes_per_frame_ub_c[], 413dda4fb85SAurabindo Pillai unsigned int meta_pte_bytes_per_frame_ub_c[], 414dda4fb85SAurabindo Pillai double PrefetchSourceLinesY[], 415dda4fb85SAurabindo Pillai double PrefetchSourceLinesC[], 416dda4fb85SAurabindo Pillai double VInitPreFillY[], 417dda4fb85SAurabindo Pillai double VInitPreFillC[], 418dda4fb85SAurabindo Pillai unsigned int MaxNumSwathY[], 419dda4fb85SAurabindo Pillai unsigned int MaxNumSwathC[], 420dda4fb85SAurabindo Pillai double meta_row_bw[], 421dda4fb85SAurabindo Pillai double dpte_row_bw[], 422dda4fb85SAurabindo Pillai double PixelPTEBytesPerRow[], 423dda4fb85SAurabindo Pillai double PDEAndMetaPTEBytesFrame[], 424dda4fb85SAurabindo Pillai double MetaRowByte[], 425dda4fb85SAurabindo Pillai bool use_one_row_for_frame[], 426dda4fb85SAurabindo Pillai bool use_one_row_for_frame_flip[], 427dda4fb85SAurabindo Pillai bool UsesMALLForStaticScreen[], 428dda4fb85SAurabindo Pillai bool PTE_BUFFER_MODE[], 429dda4fb85SAurabindo Pillai unsigned int BIGK_FRAGMENT_SIZE[]); 430dda4fb85SAurabindo Pillai 431dda4fb85SAurabindo Pillai unsigned int dml32_CalculateVMAndRowBytes( 432dda4fb85SAurabindo Pillai bool ViewportStationary, 433dda4fb85SAurabindo Pillai bool DCCEnable, 434dda4fb85SAurabindo Pillai unsigned int NumberOfDPPs, 435dda4fb85SAurabindo Pillai unsigned int BlockHeight256Bytes, 436dda4fb85SAurabindo Pillai unsigned int BlockWidth256Bytes, 437dda4fb85SAurabindo Pillai enum source_format_class SourcePixelFormat, 438dda4fb85SAurabindo Pillai unsigned int SurfaceTiling, 439dda4fb85SAurabindo Pillai unsigned int BytePerPixel, 440dda4fb85SAurabindo Pillai enum dm_rotation_angle SourceScan, 441dda4fb85SAurabindo Pillai double SwathWidth, 442dda4fb85SAurabindo Pillai unsigned int ViewportHeight, 443dda4fb85SAurabindo Pillai unsigned int ViewportXStart, 444dda4fb85SAurabindo Pillai unsigned int ViewportYStart, 445dda4fb85SAurabindo Pillai bool GPUVMEnable, 446dda4fb85SAurabindo Pillai bool HostVMEnable, 447dda4fb85SAurabindo Pillai unsigned int HostVMMaxNonCachedPageTableLevels, 448dda4fb85SAurabindo Pillai unsigned int GPUVMMaxPageTableLevels, 449dda4fb85SAurabindo Pillai unsigned int GPUVMMinPageSizeKBytes, 450dda4fb85SAurabindo Pillai unsigned int HostVMMinPageSize, 451dda4fb85SAurabindo Pillai unsigned int PTEBufferSizeInRequests, 452dda4fb85SAurabindo Pillai unsigned int Pitch, 453dda4fb85SAurabindo Pillai unsigned int DCCMetaPitch, 454dda4fb85SAurabindo Pillai unsigned int MacroTileWidth, 455dda4fb85SAurabindo Pillai unsigned int MacroTileHeight, 456dda4fb85SAurabindo Pillai 457dda4fb85SAurabindo Pillai /* Output */ 458dda4fb85SAurabindo Pillai unsigned int *MetaRowByte, 459dda4fb85SAurabindo Pillai unsigned int *PixelPTEBytesPerRow, 460dda4fb85SAurabindo Pillai unsigned int *dpte_row_width_ub, 461dda4fb85SAurabindo Pillai unsigned int *dpte_row_height, 462dda4fb85SAurabindo Pillai unsigned int *dpte_row_height_linear, 463dda4fb85SAurabindo Pillai unsigned int *PixelPTEBytesPerRow_one_row_per_frame, 464dda4fb85SAurabindo Pillai unsigned int *dpte_row_width_ub_one_row_per_frame, 465dda4fb85SAurabindo Pillai unsigned int *dpte_row_height_one_row_per_frame, 466dda4fb85SAurabindo Pillai unsigned int *MetaRequestWidth, 467dda4fb85SAurabindo Pillai unsigned int *MetaRequestHeight, 468dda4fb85SAurabindo Pillai unsigned int *meta_row_width, 469dda4fb85SAurabindo Pillai unsigned int *meta_row_height, 470dda4fb85SAurabindo Pillai unsigned int *PixelPTEReqWidth, 471dda4fb85SAurabindo Pillai unsigned int *PixelPTEReqHeight, 472dda4fb85SAurabindo Pillai unsigned int *PTERequestSize, 473dda4fb85SAurabindo Pillai unsigned int *DPDE0BytesFrame, 474dda4fb85SAurabindo Pillai unsigned int *MetaPTEBytesFrame); 475dda4fb85SAurabindo Pillai 476dda4fb85SAurabindo Pillai double dml32_CalculatePrefetchSourceLines( 477dda4fb85SAurabindo Pillai double VRatio, 478dda4fb85SAurabindo Pillai unsigned int VTaps, 479dda4fb85SAurabindo Pillai bool Interlace, 480dda4fb85SAurabindo Pillai bool ProgressiveToInterlaceUnitInOPP, 481dda4fb85SAurabindo Pillai unsigned int SwathHeight, 482dda4fb85SAurabindo Pillai enum dm_rotation_angle SourceRotation, 483dda4fb85SAurabindo Pillai bool ViewportStationary, 484dda4fb85SAurabindo Pillai double SwathWidth, 485dda4fb85SAurabindo Pillai unsigned int ViewportHeight, 486dda4fb85SAurabindo Pillai unsigned int ViewportXStart, 487dda4fb85SAurabindo Pillai unsigned int ViewportYStart, 488dda4fb85SAurabindo Pillai 489dda4fb85SAurabindo Pillai /* Output */ 490dda4fb85SAurabindo Pillai double *VInitPreFill, 491dda4fb85SAurabindo Pillai unsigned int *MaxNumSwath); 492dda4fb85SAurabindo Pillai 493dda4fb85SAurabindo Pillai void dml32_CalculateMALLUseForStaticScreen( 494dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 495dda4fb85SAurabindo Pillai unsigned int MALLAllocatedForDCNFinal, 496dda4fb85SAurabindo Pillai enum dm_use_mall_for_static_screen_mode *UseMALLForStaticScreen, 497dda4fb85SAurabindo Pillai unsigned int SurfaceSizeInMALL[], 498dda4fb85SAurabindo Pillai bool one_row_per_frame_fits_in_buffer[], 499dda4fb85SAurabindo Pillai 500dda4fb85SAurabindo Pillai /* output */ 501dda4fb85SAurabindo Pillai bool UsesMALLForStaticScreen[]); 502dda4fb85SAurabindo Pillai 503dda4fb85SAurabindo Pillai void dml32_CalculateRowBandwidth( 504dda4fb85SAurabindo Pillai bool GPUVMEnable, 505dda4fb85SAurabindo Pillai enum source_format_class SourcePixelFormat, 506dda4fb85SAurabindo Pillai double VRatio, 507dda4fb85SAurabindo Pillai double VRatioChroma, 508dda4fb85SAurabindo Pillai bool DCCEnable, 509dda4fb85SAurabindo Pillai double LineTime, 510dda4fb85SAurabindo Pillai unsigned int MetaRowByteLuma, 511dda4fb85SAurabindo Pillai unsigned int MetaRowByteChroma, 512dda4fb85SAurabindo Pillai unsigned int meta_row_height_luma, 513dda4fb85SAurabindo Pillai unsigned int meta_row_height_chroma, 514dda4fb85SAurabindo Pillai unsigned int PixelPTEBytesPerRowLuma, 515dda4fb85SAurabindo Pillai unsigned int PixelPTEBytesPerRowChroma, 516dda4fb85SAurabindo Pillai unsigned int dpte_row_height_luma, 517dda4fb85SAurabindo Pillai unsigned int dpte_row_height_chroma, 518dda4fb85SAurabindo Pillai /* Output */ 519dda4fb85SAurabindo Pillai double *meta_row_bw, 520dda4fb85SAurabindo Pillai double *dpte_row_bw); 521dda4fb85SAurabindo Pillai 522dda4fb85SAurabindo Pillai double dml32_CalculateUrgentLatency( 523dda4fb85SAurabindo Pillai double UrgentLatencyPixelDataOnly, 524dda4fb85SAurabindo Pillai double UrgentLatencyPixelMixedWithVMData, 525dda4fb85SAurabindo Pillai double UrgentLatencyVMDataOnly, 526dda4fb85SAurabindo Pillai bool DoUrgentLatencyAdjustment, 527dda4fb85SAurabindo Pillai double UrgentLatencyAdjustmentFabricClockComponent, 528dda4fb85SAurabindo Pillai double UrgentLatencyAdjustmentFabricClockReference, 529dda4fb85SAurabindo Pillai double FabricClock); 530dda4fb85SAurabindo Pillai 531dda4fb85SAurabindo Pillai void dml32_CalculateUrgentBurstFactor( 532dda4fb85SAurabindo Pillai enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange, 533dda4fb85SAurabindo Pillai unsigned int swath_width_luma_ub, 534dda4fb85SAurabindo Pillai unsigned int swath_width_chroma_ub, 535dda4fb85SAurabindo Pillai unsigned int SwathHeightY, 536dda4fb85SAurabindo Pillai unsigned int SwathHeightC, 537dda4fb85SAurabindo Pillai double LineTime, 538dda4fb85SAurabindo Pillai double UrgentLatency, 539dda4fb85SAurabindo Pillai double CursorBufferSize, 540dda4fb85SAurabindo Pillai unsigned int CursorWidth, 541dda4fb85SAurabindo Pillai unsigned int CursorBPP, 542dda4fb85SAurabindo Pillai double VRatio, 543dda4fb85SAurabindo Pillai double VRatioC, 544dda4fb85SAurabindo Pillai double BytePerPixelInDETY, 545dda4fb85SAurabindo Pillai double BytePerPixelInDETC, 546dda4fb85SAurabindo Pillai unsigned int DETBufferSizeY, 547dda4fb85SAurabindo Pillai unsigned int DETBufferSizeC, 548dda4fb85SAurabindo Pillai /* Output */ 549dda4fb85SAurabindo Pillai double *UrgentBurstFactorCursor, 550dda4fb85SAurabindo Pillai double *UrgentBurstFactorLuma, 551dda4fb85SAurabindo Pillai double *UrgentBurstFactorChroma, 552dda4fb85SAurabindo Pillai bool *NotEnoughUrgentLatencyHiding); 553dda4fb85SAurabindo Pillai 554dda4fb85SAurabindo Pillai void dml32_CalculateDCFCLKDeepSleep( 555dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 556dda4fb85SAurabindo Pillai unsigned int BytePerPixelY[], 557dda4fb85SAurabindo Pillai unsigned int BytePerPixelC[], 558dda4fb85SAurabindo Pillai double VRatio[], 559dda4fb85SAurabindo Pillai double VRatioChroma[], 560dda4fb85SAurabindo Pillai double SwathWidthY[], 561dda4fb85SAurabindo Pillai double SwathWidthC[], 562dda4fb85SAurabindo Pillai unsigned int DPPPerSurface[], 563dda4fb85SAurabindo Pillai double HRatio[], 564dda4fb85SAurabindo Pillai double HRatioChroma[], 565dda4fb85SAurabindo Pillai double PixelClock[], 566dda4fb85SAurabindo Pillai double PSCL_THROUGHPUT[], 567dda4fb85SAurabindo Pillai double PSCL_THROUGHPUT_CHROMA[], 568dda4fb85SAurabindo Pillai double Dppclk[], 569dda4fb85SAurabindo Pillai double ReadBandwidthLuma[], 570dda4fb85SAurabindo Pillai double ReadBandwidthChroma[], 571dda4fb85SAurabindo Pillai unsigned int ReturnBusWidth, 572dda4fb85SAurabindo Pillai 573dda4fb85SAurabindo Pillai /* Output */ 574dda4fb85SAurabindo Pillai double *DCFClkDeepSleep); 575dda4fb85SAurabindo Pillai 576dda4fb85SAurabindo Pillai double dml32_CalculateWriteBackDelay( 577dda4fb85SAurabindo Pillai enum source_format_class WritebackPixelFormat, 578dda4fb85SAurabindo Pillai double WritebackHRatio, 579dda4fb85SAurabindo Pillai double WritebackVRatio, 580dda4fb85SAurabindo Pillai unsigned int WritebackVTaps, 581dda4fb85SAurabindo Pillai unsigned int WritebackDestinationWidth, 582dda4fb85SAurabindo Pillai unsigned int WritebackDestinationHeight, 583dda4fb85SAurabindo Pillai unsigned int WritebackSourceHeight, 584dda4fb85SAurabindo Pillai unsigned int HTotal); 585dda4fb85SAurabindo Pillai 586dda4fb85SAurabindo Pillai void dml32_UseMinimumDCFCLK( 587dda4fb85SAurabindo Pillai enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange[], 588dda4fb85SAurabindo Pillai bool DRRDisplay[], 589dda4fb85SAurabindo Pillai bool SynchronizeDRRDisplaysForUCLKPStateChangeFinal, 590dda4fb85SAurabindo Pillai unsigned int MaxInterDCNTileRepeaters, 591dda4fb85SAurabindo Pillai unsigned int MaxPrefetchMode, 592dda4fb85SAurabindo Pillai double DRAMClockChangeLatencyFinal, 593dda4fb85SAurabindo Pillai double FCLKChangeLatency, 594dda4fb85SAurabindo Pillai double SREnterPlusExitTime, 595dda4fb85SAurabindo Pillai unsigned int ReturnBusWidth, 596dda4fb85SAurabindo Pillai unsigned int RoundTripPingLatencyCycles, 597dda4fb85SAurabindo Pillai unsigned int ReorderingBytes, 598dda4fb85SAurabindo Pillai unsigned int PixelChunkSizeInKByte, 599dda4fb85SAurabindo Pillai unsigned int MetaChunkSize, 600dda4fb85SAurabindo Pillai bool GPUVMEnable, 601dda4fb85SAurabindo Pillai unsigned int GPUVMMaxPageTableLevels, 602dda4fb85SAurabindo Pillai bool HostVMEnable, 603dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 604dda4fb85SAurabindo Pillai double HostVMMinPageSize, 605dda4fb85SAurabindo Pillai unsigned int HostVMMaxNonCachedPageTableLevels, 606dda4fb85SAurabindo Pillai bool DynamicMetadataVMEnabled, 607dda4fb85SAurabindo Pillai bool ImmediateFlipRequirement, 608dda4fb85SAurabindo Pillai bool ProgressiveToInterlaceUnitInOPP, 609dda4fb85SAurabindo Pillai double MaxAveragePercentOfIdealSDPPortBWDisplayCanUseInNormalSystemOperation, 610dda4fb85SAurabindo Pillai double PercentOfIdealSDPPortBWReceivedAfterUrgLatency, 611dda4fb85SAurabindo Pillai unsigned int VTotal[], 612dda4fb85SAurabindo Pillai unsigned int VActive[], 613dda4fb85SAurabindo Pillai unsigned int DynamicMetadataTransmittedBytes[], 614dda4fb85SAurabindo Pillai unsigned int DynamicMetadataLinesBeforeActiveRequired[], 615dda4fb85SAurabindo Pillai bool Interlace[], 616dda4fb85SAurabindo Pillai double RequiredDPPCLKPerSurface[][2][DC__NUM_DPP__MAX], 617dda4fb85SAurabindo Pillai double RequiredDISPCLK[][2], 618dda4fb85SAurabindo Pillai double UrgLatency[], 619dda4fb85SAurabindo Pillai unsigned int NoOfDPP[][2][DC__NUM_DPP__MAX], 620dda4fb85SAurabindo Pillai double ProjectedDCFClkDeepSleep[][2], 621dda4fb85SAurabindo Pillai double MaximumVStartup[][2][DC__NUM_DPP__MAX], 622dda4fb85SAurabindo Pillai unsigned int TotalNumberOfActiveDPP[][2], 623dda4fb85SAurabindo Pillai unsigned int TotalNumberOfDCCActiveDPP[][2], 624dda4fb85SAurabindo Pillai unsigned int dpte_group_bytes[], 625dda4fb85SAurabindo Pillai double PrefetchLinesY[][2][DC__NUM_DPP__MAX], 626dda4fb85SAurabindo Pillai double PrefetchLinesC[][2][DC__NUM_DPP__MAX], 627dda4fb85SAurabindo Pillai unsigned int swath_width_luma_ub_all_states[][2][DC__NUM_DPP__MAX], 628dda4fb85SAurabindo Pillai unsigned int swath_width_chroma_ub_all_states[][2][DC__NUM_DPP__MAX], 629dda4fb85SAurabindo Pillai unsigned int BytePerPixelY[], 630dda4fb85SAurabindo Pillai unsigned int BytePerPixelC[], 631dda4fb85SAurabindo Pillai unsigned int HTotal[], 632dda4fb85SAurabindo Pillai double PixelClock[], 633dda4fb85SAurabindo Pillai double PDEAndMetaPTEBytesPerFrame[][2][DC__NUM_DPP__MAX], 634dda4fb85SAurabindo Pillai double DPTEBytesPerRow[][2][DC__NUM_DPP__MAX], 635dda4fb85SAurabindo Pillai double MetaRowBytes[][2][DC__NUM_DPP__MAX], 636dda4fb85SAurabindo Pillai bool DynamicMetadataEnable[], 637dda4fb85SAurabindo Pillai double ReadBandwidthLuma[], 638dda4fb85SAurabindo Pillai double ReadBandwidthChroma[], 639dda4fb85SAurabindo Pillai double DCFCLKPerState[], 640dda4fb85SAurabindo Pillai /* Output */ 641dda4fb85SAurabindo Pillai double DCFCLKState[][2]); 642dda4fb85SAurabindo Pillai 643dda4fb85SAurabindo Pillai unsigned int dml32_CalculateExtraLatencyBytes(unsigned int ReorderingBytes, 644dda4fb85SAurabindo Pillai unsigned int TotalNumberOfActiveDPP, 645dda4fb85SAurabindo Pillai unsigned int PixelChunkSizeInKByte, 646dda4fb85SAurabindo Pillai unsigned int TotalNumberOfDCCActiveDPP, 647dda4fb85SAurabindo Pillai unsigned int MetaChunkSize, 648dda4fb85SAurabindo Pillai bool GPUVMEnable, 649dda4fb85SAurabindo Pillai bool HostVMEnable, 650dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 651dda4fb85SAurabindo Pillai unsigned int NumberOfDPP[], 652dda4fb85SAurabindo Pillai unsigned int dpte_group_bytes[], 653dda4fb85SAurabindo Pillai double HostVMInefficiencyFactor, 654dda4fb85SAurabindo Pillai double HostVMMinPageSize, 655dda4fb85SAurabindo Pillai unsigned int HostVMMaxNonCachedPageTableLevels); 656dda4fb85SAurabindo Pillai 657dda4fb85SAurabindo Pillai void dml32_CalculateVUpdateAndDynamicMetadataParameters( 658dda4fb85SAurabindo Pillai unsigned int MaxInterDCNTileRepeaters, 659dda4fb85SAurabindo Pillai double Dppclk, 660dda4fb85SAurabindo Pillai double Dispclk, 661dda4fb85SAurabindo Pillai double DCFClkDeepSleep, 662dda4fb85SAurabindo Pillai double PixelClock, 663dda4fb85SAurabindo Pillai unsigned int HTotal, 664dda4fb85SAurabindo Pillai unsigned int VBlank, 665dda4fb85SAurabindo Pillai unsigned int DynamicMetadataTransmittedBytes, 666dda4fb85SAurabindo Pillai unsigned int DynamicMetadataLinesBeforeActiveRequired, 667dda4fb85SAurabindo Pillai unsigned int InterlaceEnable, 668dda4fb85SAurabindo Pillai bool ProgressiveToInterlaceUnitInOPP, 669dda4fb85SAurabindo Pillai double *TSetup, 670dda4fb85SAurabindo Pillai double *Tdmbf, 671dda4fb85SAurabindo Pillai double *Tdmec, 672dda4fb85SAurabindo Pillai double *Tdmsks, 673dda4fb85SAurabindo Pillai unsigned int *VUpdateOffsetPix, 674dda4fb85SAurabindo Pillai double *VUpdateWidthPix, 675dda4fb85SAurabindo Pillai double *VReadyOffsetPix); 676dda4fb85SAurabindo Pillai 677dda4fb85SAurabindo Pillai double dml32_CalculateTWait( 678dda4fb85SAurabindo Pillai unsigned int PrefetchMode, 679dda4fb85SAurabindo Pillai enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange, 680dda4fb85SAurabindo Pillai bool SynchronizeDRRDisplaysForUCLKPStateChangeFinal, 681dda4fb85SAurabindo Pillai bool DRRDisplay, 682dda4fb85SAurabindo Pillai double DRAMClockChangeLatency, 683dda4fb85SAurabindo Pillai double FCLKChangeLatency, 684dda4fb85SAurabindo Pillai double UrgentLatency, 685dda4fb85SAurabindo Pillai double SREnterPlusExitTime); 686dda4fb85SAurabindo Pillai 687dda4fb85SAurabindo Pillai double dml32_get_return_bw_mbps(const soc_bounding_box_st *soc, 688dda4fb85SAurabindo Pillai const int VoltageLevel, 689dda4fb85SAurabindo Pillai const bool HostVMEnable, 690dda4fb85SAurabindo Pillai const double DCFCLK, 691dda4fb85SAurabindo Pillai const double FabricClock, 692dda4fb85SAurabindo Pillai const double DRAMSpeed); 693dda4fb85SAurabindo Pillai 694dda4fb85SAurabindo Pillai double dml32_get_return_bw_mbps_vm_only(const soc_bounding_box_st *soc, 695dda4fb85SAurabindo Pillai const int VoltageLevel, 696dda4fb85SAurabindo Pillai const double DCFCLK, 697dda4fb85SAurabindo Pillai const double FabricClock, 698dda4fb85SAurabindo Pillai const double DRAMSpeed); 699dda4fb85SAurabindo Pillai 700dda4fb85SAurabindo Pillai double dml32_CalculateExtraLatency( 701dda4fb85SAurabindo Pillai unsigned int RoundTripPingLatencyCycles, 702dda4fb85SAurabindo Pillai unsigned int ReorderingBytes, 703dda4fb85SAurabindo Pillai double DCFCLK, 704dda4fb85SAurabindo Pillai unsigned int TotalNumberOfActiveDPP, 705dda4fb85SAurabindo Pillai unsigned int PixelChunkSizeInKByte, 706dda4fb85SAurabindo Pillai unsigned int TotalNumberOfDCCActiveDPP, 707dda4fb85SAurabindo Pillai unsigned int MetaChunkSize, 708dda4fb85SAurabindo Pillai double ReturnBW, 709dda4fb85SAurabindo Pillai bool GPUVMEnable, 710dda4fb85SAurabindo Pillai bool HostVMEnable, 711dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 712dda4fb85SAurabindo Pillai unsigned int NumberOfDPP[], 713dda4fb85SAurabindo Pillai unsigned int dpte_group_bytes[], 714dda4fb85SAurabindo Pillai double HostVMInefficiencyFactor, 715dda4fb85SAurabindo Pillai double HostVMMinPageSize, 716dda4fb85SAurabindo Pillai unsigned int HostVMMaxNonCachedPageTableLevels); 717dda4fb85SAurabindo Pillai 718dda4fb85SAurabindo Pillai bool dml32_CalculatePrefetchSchedule( 7193b4e83a2SNathan Chancellor struct vba_vars_st *v, 7203b4e83a2SNathan Chancellor unsigned int k, 721dda4fb85SAurabindo Pillai double HostVMInefficiencyFactor, 722dda4fb85SAurabindo Pillai DmlPipe *myPipe, 723dda4fb85SAurabindo Pillai unsigned int DSCDelay, 724dda4fb85SAurabindo Pillai unsigned int DPP_RECOUT_WIDTH, 725dda4fb85SAurabindo Pillai unsigned int VStartup, 726dda4fb85SAurabindo Pillai unsigned int MaxVStartup, 727dda4fb85SAurabindo Pillai double UrgentLatency, 728dda4fb85SAurabindo Pillai double UrgentExtraLatency, 729dda4fb85SAurabindo Pillai double TCalc, 730dda4fb85SAurabindo Pillai unsigned int PDEAndMetaPTEBytesFrame, 731dda4fb85SAurabindo Pillai unsigned int MetaRowByte, 732dda4fb85SAurabindo Pillai unsigned int PixelPTEBytesPerRow, 733dda4fb85SAurabindo Pillai double PrefetchSourceLinesY, 734dda4fb85SAurabindo Pillai unsigned int SwathWidthY, 735dda4fb85SAurabindo Pillai unsigned int VInitPreFillY, 736dda4fb85SAurabindo Pillai unsigned int MaxNumSwathY, 737dda4fb85SAurabindo Pillai double PrefetchSourceLinesC, 738dda4fb85SAurabindo Pillai unsigned int SwathWidthC, 739dda4fb85SAurabindo Pillai unsigned int VInitPreFillC, 740dda4fb85SAurabindo Pillai unsigned int MaxNumSwathC, 741dda4fb85SAurabindo Pillai unsigned int swath_width_luma_ub, 742dda4fb85SAurabindo Pillai unsigned int swath_width_chroma_ub, 743dda4fb85SAurabindo Pillai unsigned int SwathHeightY, 744dda4fb85SAurabindo Pillai unsigned int SwathHeightC, 745dda4fb85SAurabindo Pillai double TWait, 74601c0c124SDillon Varone double TPreReq, 747dda4fb85SAurabindo Pillai /* Output */ 748dda4fb85SAurabindo Pillai double *DSTXAfterScaler, 749dda4fb85SAurabindo Pillai double *DSTYAfterScaler, 750dda4fb85SAurabindo Pillai double *DestinationLinesForPrefetch, 751dda4fb85SAurabindo Pillai double *PrefetchBandwidth, 752dda4fb85SAurabindo Pillai double *DestinationLinesToRequestVMInVBlank, 753dda4fb85SAurabindo Pillai double *DestinationLinesToRequestRowInVBlank, 754dda4fb85SAurabindo Pillai double *VRatioPrefetchY, 755dda4fb85SAurabindo Pillai double *VRatioPrefetchC, 756dda4fb85SAurabindo Pillai double *RequiredPrefetchPixDataBWLuma, 757dda4fb85SAurabindo Pillai double *RequiredPrefetchPixDataBWChroma, 758dda4fb85SAurabindo Pillai bool *NotEnoughTimeForDynamicMetadata, 759dda4fb85SAurabindo Pillai double *Tno_bw, 760dda4fb85SAurabindo Pillai double *prefetch_vmrow_bw, 761dda4fb85SAurabindo Pillai double *Tdmdl_vm, 762dda4fb85SAurabindo Pillai double *Tdmdl, 763dda4fb85SAurabindo Pillai double *TSetup, 764dda4fb85SAurabindo Pillai unsigned int *VUpdateOffsetPix, 765dda4fb85SAurabindo Pillai double *VUpdateWidthPix, 766dda4fb85SAurabindo Pillai double *VReadyOffsetPix); 767dda4fb85SAurabindo Pillai 768dda4fb85SAurabindo Pillai void dml32_CalculateFlipSchedule( 769dda4fb85SAurabindo Pillai double HostVMInefficiencyFactor, 770dda4fb85SAurabindo Pillai double UrgentExtraLatency, 771dda4fb85SAurabindo Pillai double UrgentLatency, 772dda4fb85SAurabindo Pillai unsigned int GPUVMMaxPageTableLevels, 773dda4fb85SAurabindo Pillai bool HostVMEnable, 774dda4fb85SAurabindo Pillai unsigned int HostVMMaxNonCachedPageTableLevels, 775dda4fb85SAurabindo Pillai bool GPUVMEnable, 776dda4fb85SAurabindo Pillai double HostVMMinPageSize, 777dda4fb85SAurabindo Pillai double PDEAndMetaPTEBytesPerFrame, 778dda4fb85SAurabindo Pillai double MetaRowBytes, 779dda4fb85SAurabindo Pillai double DPTEBytesPerRow, 780dda4fb85SAurabindo Pillai double BandwidthAvailableForImmediateFlip, 781dda4fb85SAurabindo Pillai unsigned int TotImmediateFlipBytes, 782dda4fb85SAurabindo Pillai enum source_format_class SourcePixelFormat, 783dda4fb85SAurabindo Pillai double LineTime, 784dda4fb85SAurabindo Pillai double VRatio, 785dda4fb85SAurabindo Pillai double VRatioChroma, 786dda4fb85SAurabindo Pillai double Tno_bw, 787dda4fb85SAurabindo Pillai bool DCCEnable, 788dda4fb85SAurabindo Pillai unsigned int dpte_row_height, 789dda4fb85SAurabindo Pillai unsigned int meta_row_height, 790dda4fb85SAurabindo Pillai unsigned int dpte_row_height_chroma, 791dda4fb85SAurabindo Pillai unsigned int meta_row_height_chroma, 792dda4fb85SAurabindo Pillai bool use_one_row_for_frame_flip, 793dda4fb85SAurabindo Pillai 794dda4fb85SAurabindo Pillai /* Output */ 795dda4fb85SAurabindo Pillai double *DestinationLinesToRequestVMInImmediateFlip, 796dda4fb85SAurabindo Pillai double *DestinationLinesToRequestRowInImmediateFlip, 797dda4fb85SAurabindo Pillai double *final_flip_bw, 798dda4fb85SAurabindo Pillai bool *ImmediateFlipSupportedForPipe); 799dda4fb85SAurabindo Pillai 800dda4fb85SAurabindo Pillai void dml32_CalculateWatermarksMALLUseAndDRAMSpeedChangeSupport( 8011df7e569SNathan Chancellor struct vba_vars_st *v, 802dda4fb85SAurabindo Pillai unsigned int PrefetchMode, 803dda4fb85SAurabindo Pillai double DCFCLK, 804dda4fb85SAurabindo Pillai double ReturnBW, 805dda4fb85SAurabindo Pillai SOCParametersList mmSOCParameters, 806dda4fb85SAurabindo Pillai double SOCCLK, 807dda4fb85SAurabindo Pillai double DCFClkDeepSleep, 808dda4fb85SAurabindo Pillai unsigned int DETBufferSizeY[], 809dda4fb85SAurabindo Pillai unsigned int DETBufferSizeC[], 810dda4fb85SAurabindo Pillai unsigned int SwathHeightY[], 811dda4fb85SAurabindo Pillai unsigned int SwathHeightC[], 812dda4fb85SAurabindo Pillai double SwathWidthY[], 813dda4fb85SAurabindo Pillai double SwathWidthC[], 814dda4fb85SAurabindo Pillai unsigned int DPPPerSurface[], 815dda4fb85SAurabindo Pillai double BytePerPixelDETY[], 816dda4fb85SAurabindo Pillai double BytePerPixelDETC[], 817dda4fb85SAurabindo Pillai double DSTXAfterScaler[], 818dda4fb85SAurabindo Pillai double DSTYAfterScaler[], 819dda4fb85SAurabindo Pillai bool UnboundedRequestEnabled, 820dda4fb85SAurabindo Pillai unsigned int CompressedBufferSizeInkByte, 821dda4fb85SAurabindo Pillai 822dda4fb85SAurabindo Pillai /* Output */ 823dda4fb85SAurabindo Pillai enum clock_change_support *DRAMClockChangeSupport, 824dda4fb85SAurabindo Pillai double MaxActiveDRAMClockChangeLatencySupported[], 825dda4fb85SAurabindo Pillai unsigned int SubViewportLinesNeededInMALL[], 826dda4fb85SAurabindo Pillai enum dm_fclock_change_support *FCLKChangeSupport, 827dda4fb85SAurabindo Pillai double *MinActiveFCLKChangeLatencySupported, 828dda4fb85SAurabindo Pillai bool *USRRetrainingSupport, 829dda4fb85SAurabindo Pillai double ActiveDRAMClockChangeLatencyMargin[]); 830dda4fb85SAurabindo Pillai 831dda4fb85SAurabindo Pillai double dml32_CalculateWriteBackDISPCLK( 832dda4fb85SAurabindo Pillai enum source_format_class WritebackPixelFormat, 833dda4fb85SAurabindo Pillai double PixelClock, 834dda4fb85SAurabindo Pillai double WritebackHRatio, 835dda4fb85SAurabindo Pillai double WritebackVRatio, 836dda4fb85SAurabindo Pillai unsigned int WritebackHTaps, 837dda4fb85SAurabindo Pillai unsigned int WritebackVTaps, 838dda4fb85SAurabindo Pillai unsigned int WritebackSourceWidth, 839dda4fb85SAurabindo Pillai unsigned int WritebackDestinationWidth, 840dda4fb85SAurabindo Pillai unsigned int HTotal, 841dda4fb85SAurabindo Pillai unsigned int WritebackLineBufferSize, 842dda4fb85SAurabindo Pillai double DISPCLKDPPCLKVCOSpeed); 843dda4fb85SAurabindo Pillai 844dda4fb85SAurabindo Pillai void dml32_CalculateMinAndMaxPrefetchMode( 845dda4fb85SAurabindo Pillai enum dm_prefetch_modes AllowForPStateChangeOrStutterInVBlankFinal, 846dda4fb85SAurabindo Pillai unsigned int *MinPrefetchMode, 847dda4fb85SAurabindo Pillai unsigned int *MaxPrefetchMode); 848dda4fb85SAurabindo Pillai 849dda4fb85SAurabindo Pillai void dml32_CalculatePixelDeliveryTimes( 850dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 851dda4fb85SAurabindo Pillai double VRatio[], 852dda4fb85SAurabindo Pillai double VRatioChroma[], 853dda4fb85SAurabindo Pillai double VRatioPrefetchY[], 854dda4fb85SAurabindo Pillai double VRatioPrefetchC[], 855dda4fb85SAurabindo Pillai unsigned int swath_width_luma_ub[], 856dda4fb85SAurabindo Pillai unsigned int swath_width_chroma_ub[], 857dda4fb85SAurabindo Pillai unsigned int DPPPerSurface[], 858dda4fb85SAurabindo Pillai double HRatio[], 859dda4fb85SAurabindo Pillai double HRatioChroma[], 860dda4fb85SAurabindo Pillai double PixelClock[], 861dda4fb85SAurabindo Pillai double PSCL_THROUGHPUT[], 862dda4fb85SAurabindo Pillai double PSCL_THROUGHPUT_CHROMA[], 863dda4fb85SAurabindo Pillai double Dppclk[], 864dda4fb85SAurabindo Pillai unsigned int BytePerPixelC[], 865dda4fb85SAurabindo Pillai enum dm_rotation_angle SourceRotation[], 866dda4fb85SAurabindo Pillai unsigned int NumberOfCursors[], 867dda4fb85SAurabindo Pillai unsigned int CursorWidth[][DC__NUM_CURSOR__MAX], 868dda4fb85SAurabindo Pillai unsigned int CursorBPP[][DC__NUM_CURSOR__MAX], 869dda4fb85SAurabindo Pillai unsigned int BlockWidth256BytesY[], 870dda4fb85SAurabindo Pillai unsigned int BlockHeight256BytesY[], 871dda4fb85SAurabindo Pillai unsigned int BlockWidth256BytesC[], 872dda4fb85SAurabindo Pillai unsigned int BlockHeight256BytesC[], 873dda4fb85SAurabindo Pillai 874dda4fb85SAurabindo Pillai /* Output */ 875dda4fb85SAurabindo Pillai double DisplayPipeLineDeliveryTimeLuma[], 876dda4fb85SAurabindo Pillai double DisplayPipeLineDeliveryTimeChroma[], 877dda4fb85SAurabindo Pillai double DisplayPipeLineDeliveryTimeLumaPrefetch[], 878dda4fb85SAurabindo Pillai double DisplayPipeLineDeliveryTimeChromaPrefetch[], 879dda4fb85SAurabindo Pillai double DisplayPipeRequestDeliveryTimeLuma[], 880dda4fb85SAurabindo Pillai double DisplayPipeRequestDeliveryTimeChroma[], 881dda4fb85SAurabindo Pillai double DisplayPipeRequestDeliveryTimeLumaPrefetch[], 882dda4fb85SAurabindo Pillai double DisplayPipeRequestDeliveryTimeChromaPrefetch[], 883dda4fb85SAurabindo Pillai double CursorRequestDeliveryTime[], 884dda4fb85SAurabindo Pillai double CursorRequestDeliveryTimePrefetch[]); 885dda4fb85SAurabindo Pillai 886dda4fb85SAurabindo Pillai void dml32_CalculateMetaAndPTETimes( 887dda4fb85SAurabindo Pillai bool use_one_row_for_frame[], 888dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 889dda4fb85SAurabindo Pillai bool GPUVMEnable, 890dda4fb85SAurabindo Pillai unsigned int MetaChunkSize, 891dda4fb85SAurabindo Pillai unsigned int MinMetaChunkSizeBytes, 892dda4fb85SAurabindo Pillai unsigned int HTotal[], 893dda4fb85SAurabindo Pillai double VRatio[], 894dda4fb85SAurabindo Pillai double VRatioChroma[], 895dda4fb85SAurabindo Pillai double DestinationLinesToRequestRowInVBlank[], 896dda4fb85SAurabindo Pillai double DestinationLinesToRequestRowInImmediateFlip[], 897dda4fb85SAurabindo Pillai bool DCCEnable[], 898dda4fb85SAurabindo Pillai double PixelClock[], 899dda4fb85SAurabindo Pillai unsigned int BytePerPixelY[], 900dda4fb85SAurabindo Pillai unsigned int BytePerPixelC[], 901dda4fb85SAurabindo Pillai enum dm_rotation_angle SourceRotation[], 902dda4fb85SAurabindo Pillai unsigned int dpte_row_height[], 903dda4fb85SAurabindo Pillai unsigned int dpte_row_height_chroma[], 904dda4fb85SAurabindo Pillai unsigned int meta_row_width[], 905dda4fb85SAurabindo Pillai unsigned int meta_row_width_chroma[], 906dda4fb85SAurabindo Pillai unsigned int meta_row_height[], 907dda4fb85SAurabindo Pillai unsigned int meta_row_height_chroma[], 908dda4fb85SAurabindo Pillai unsigned int meta_req_width[], 909dda4fb85SAurabindo Pillai unsigned int meta_req_width_chroma[], 910dda4fb85SAurabindo Pillai unsigned int meta_req_height[], 911dda4fb85SAurabindo Pillai unsigned int meta_req_height_chroma[], 912dda4fb85SAurabindo Pillai unsigned int dpte_group_bytes[], 913dda4fb85SAurabindo Pillai unsigned int PTERequestSizeY[], 914dda4fb85SAurabindo Pillai unsigned int PTERequestSizeC[], 915dda4fb85SAurabindo Pillai unsigned int PixelPTEReqWidthY[], 916dda4fb85SAurabindo Pillai unsigned int PixelPTEReqHeightY[], 917dda4fb85SAurabindo Pillai unsigned int PixelPTEReqWidthC[], 918dda4fb85SAurabindo Pillai unsigned int PixelPTEReqHeightC[], 919dda4fb85SAurabindo Pillai unsigned int dpte_row_width_luma_ub[], 920dda4fb85SAurabindo Pillai unsigned int dpte_row_width_chroma_ub[], 921dda4fb85SAurabindo Pillai 922dda4fb85SAurabindo Pillai /* Output */ 923dda4fb85SAurabindo Pillai double DST_Y_PER_PTE_ROW_NOM_L[], 924dda4fb85SAurabindo Pillai double DST_Y_PER_PTE_ROW_NOM_C[], 925dda4fb85SAurabindo Pillai double DST_Y_PER_META_ROW_NOM_L[], 926dda4fb85SAurabindo Pillai double DST_Y_PER_META_ROW_NOM_C[], 927dda4fb85SAurabindo Pillai double TimePerMetaChunkNominal[], 928dda4fb85SAurabindo Pillai double TimePerChromaMetaChunkNominal[], 929dda4fb85SAurabindo Pillai double TimePerMetaChunkVBlank[], 930dda4fb85SAurabindo Pillai double TimePerChromaMetaChunkVBlank[], 931dda4fb85SAurabindo Pillai double TimePerMetaChunkFlip[], 932dda4fb85SAurabindo Pillai double TimePerChromaMetaChunkFlip[], 933dda4fb85SAurabindo Pillai double time_per_pte_group_nom_luma[], 934dda4fb85SAurabindo Pillai double time_per_pte_group_vblank_luma[], 935dda4fb85SAurabindo Pillai double time_per_pte_group_flip_luma[], 936dda4fb85SAurabindo Pillai double time_per_pte_group_nom_chroma[], 937dda4fb85SAurabindo Pillai double time_per_pte_group_vblank_chroma[], 938dda4fb85SAurabindo Pillai double time_per_pte_group_flip_chroma[]); 939dda4fb85SAurabindo Pillai 940dda4fb85SAurabindo Pillai void dml32_CalculateVMGroupAndRequestTimes( 941dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 942dda4fb85SAurabindo Pillai bool GPUVMEnable, 943dda4fb85SAurabindo Pillai unsigned int GPUVMMaxPageTableLevels, 944dda4fb85SAurabindo Pillai unsigned int HTotal[], 945dda4fb85SAurabindo Pillai unsigned int BytePerPixelC[], 946dda4fb85SAurabindo Pillai double DestinationLinesToRequestVMInVBlank[], 947dda4fb85SAurabindo Pillai double DestinationLinesToRequestVMInImmediateFlip[], 948dda4fb85SAurabindo Pillai bool DCCEnable[], 949dda4fb85SAurabindo Pillai double PixelClock[], 950dda4fb85SAurabindo Pillai unsigned int dpte_row_width_luma_ub[], 951dda4fb85SAurabindo Pillai unsigned int dpte_row_width_chroma_ub[], 952dda4fb85SAurabindo Pillai unsigned int vm_group_bytes[], 953dda4fb85SAurabindo Pillai unsigned int dpde0_bytes_per_frame_ub_l[], 954dda4fb85SAurabindo Pillai unsigned int dpde0_bytes_per_frame_ub_c[], 955dda4fb85SAurabindo Pillai unsigned int meta_pte_bytes_per_frame_ub_l[], 956dda4fb85SAurabindo Pillai unsigned int meta_pte_bytes_per_frame_ub_c[], 957dda4fb85SAurabindo Pillai 958dda4fb85SAurabindo Pillai /* Output */ 959dda4fb85SAurabindo Pillai double TimePerVMGroupVBlank[], 960dda4fb85SAurabindo Pillai double TimePerVMGroupFlip[], 961dda4fb85SAurabindo Pillai double TimePerVMRequestVBlank[], 962dda4fb85SAurabindo Pillai double TimePerVMRequestFlip[]); 963dda4fb85SAurabindo Pillai 964dda4fb85SAurabindo Pillai void dml32_CalculateDCCConfiguration( 965dda4fb85SAurabindo Pillai bool DCCEnabled, 966dda4fb85SAurabindo Pillai bool DCCProgrammingAssumesScanDirectionUnknown, 967dda4fb85SAurabindo Pillai enum source_format_class SourcePixelFormat, 968dda4fb85SAurabindo Pillai unsigned int SurfaceWidthLuma, 969dda4fb85SAurabindo Pillai unsigned int SurfaceWidthChroma, 970dda4fb85SAurabindo Pillai unsigned int SurfaceHeightLuma, 971dda4fb85SAurabindo Pillai unsigned int SurfaceHeightChroma, 972dda4fb85SAurabindo Pillai unsigned int nomDETInKByte, 973dda4fb85SAurabindo Pillai unsigned int RequestHeight256ByteLuma, 974dda4fb85SAurabindo Pillai unsigned int RequestHeight256ByteChroma, 975dda4fb85SAurabindo Pillai enum dm_swizzle_mode TilingFormat, 976dda4fb85SAurabindo Pillai unsigned int BytePerPixelY, 977dda4fb85SAurabindo Pillai unsigned int BytePerPixelC, 978dda4fb85SAurabindo Pillai double BytePerPixelDETY, 979dda4fb85SAurabindo Pillai double BytePerPixelDETC, 980dda4fb85SAurabindo Pillai enum dm_rotation_angle SourceRotation, 981dda4fb85SAurabindo Pillai /* Output */ 982dda4fb85SAurabindo Pillai unsigned int *MaxUncompressedBlockLuma, 983dda4fb85SAurabindo Pillai unsigned int *MaxUncompressedBlockChroma, 984dda4fb85SAurabindo Pillai unsigned int *MaxCompressedBlockLuma, 985dda4fb85SAurabindo Pillai unsigned int *MaxCompressedBlockChroma, 986dda4fb85SAurabindo Pillai unsigned int *IndependentBlockLuma, 987dda4fb85SAurabindo Pillai unsigned int *IndependentBlockChroma); 988dda4fb85SAurabindo Pillai 989dda4fb85SAurabindo Pillai void dml32_CalculateStutterEfficiency( 990dda4fb85SAurabindo Pillai unsigned int CompressedBufferSizeInkByte, 991dda4fb85SAurabindo Pillai enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange[], 992dda4fb85SAurabindo Pillai bool UnboundedRequestEnabled, 993dda4fb85SAurabindo Pillai unsigned int MetaFIFOSizeInKEntries, 994dda4fb85SAurabindo Pillai unsigned int ZeroSizeBufferEntries, 995dda4fb85SAurabindo Pillai unsigned int PixelChunkSizeInKByte, 996dda4fb85SAurabindo Pillai unsigned int NumberOfActiveSurfaces, 997dda4fb85SAurabindo Pillai unsigned int ROBBufferSizeInKByte, 998dda4fb85SAurabindo Pillai double TotalDataReadBandwidth, 999dda4fb85SAurabindo Pillai double DCFCLK, 1000dda4fb85SAurabindo Pillai double ReturnBW, 1001dda4fb85SAurabindo Pillai unsigned int CompbufReservedSpace64B, 1002dda4fb85SAurabindo Pillai unsigned int CompbufReservedSpaceZs, 1003dda4fb85SAurabindo Pillai double SRExitTime, 1004dda4fb85SAurabindo Pillai double SRExitZ8Time, 1005dda4fb85SAurabindo Pillai bool SynchronizeTimingsFinal, 1006dda4fb85SAurabindo Pillai unsigned int BlendingAndTiming[], 1007dda4fb85SAurabindo Pillai double StutterEnterPlusExitWatermark, 1008dda4fb85SAurabindo Pillai double Z8StutterEnterPlusExitWatermark, 1009dda4fb85SAurabindo Pillai bool ProgressiveToInterlaceUnitInOPP, 1010dda4fb85SAurabindo Pillai bool Interlace[], 1011dda4fb85SAurabindo Pillai double MinTTUVBlank[], 1012dda4fb85SAurabindo Pillai unsigned int DPPPerSurface[], 1013dda4fb85SAurabindo Pillai unsigned int DETBufferSizeY[], 1014dda4fb85SAurabindo Pillai unsigned int BytePerPixelY[], 1015dda4fb85SAurabindo Pillai double BytePerPixelDETY[], 1016dda4fb85SAurabindo Pillai double SwathWidthY[], 1017dda4fb85SAurabindo Pillai unsigned int SwathHeightY[], 1018dda4fb85SAurabindo Pillai unsigned int SwathHeightC[], 1019dda4fb85SAurabindo Pillai double NetDCCRateLuma[], 1020dda4fb85SAurabindo Pillai double NetDCCRateChroma[], 1021dda4fb85SAurabindo Pillai double DCCFractionOfZeroSizeRequestsLuma[], 1022dda4fb85SAurabindo Pillai double DCCFractionOfZeroSizeRequestsChroma[], 1023dda4fb85SAurabindo Pillai unsigned int HTotal[], 1024dda4fb85SAurabindo Pillai unsigned int VTotal[], 1025dda4fb85SAurabindo Pillai double PixelClock[], 1026dda4fb85SAurabindo Pillai double VRatio[], 1027dda4fb85SAurabindo Pillai enum dm_rotation_angle SourceRotation[], 1028dda4fb85SAurabindo Pillai unsigned int BlockHeight256BytesY[], 1029dda4fb85SAurabindo Pillai unsigned int BlockWidth256BytesY[], 1030dda4fb85SAurabindo Pillai unsigned int BlockHeight256BytesC[], 1031dda4fb85SAurabindo Pillai unsigned int BlockWidth256BytesC[], 1032dda4fb85SAurabindo Pillai unsigned int DCCYMaxUncompressedBlock[], 1033dda4fb85SAurabindo Pillai unsigned int DCCCMaxUncompressedBlock[], 1034dda4fb85SAurabindo Pillai unsigned int VActive[], 1035dda4fb85SAurabindo Pillai bool DCCEnable[], 1036dda4fb85SAurabindo Pillai bool WritebackEnable[], 1037dda4fb85SAurabindo Pillai double ReadBandwidthSurfaceLuma[], 1038dda4fb85SAurabindo Pillai double ReadBandwidthSurfaceChroma[], 1039dda4fb85SAurabindo Pillai double meta_row_bw[], 1040dda4fb85SAurabindo Pillai double dpte_row_bw[], 1041dda4fb85SAurabindo Pillai 1042dda4fb85SAurabindo Pillai /* Output */ 1043dda4fb85SAurabindo Pillai double *StutterEfficiencyNotIncludingVBlank, 1044dda4fb85SAurabindo Pillai double *StutterEfficiency, 1045dda4fb85SAurabindo Pillai unsigned int *NumberOfStutterBurstsPerFrame, 1046dda4fb85SAurabindo Pillai double *Z8StutterEfficiencyNotIncludingVBlank, 1047dda4fb85SAurabindo Pillai double *Z8StutterEfficiency, 1048dda4fb85SAurabindo Pillai unsigned int *Z8NumberOfStutterBurstsPerFrame, 1049dda4fb85SAurabindo Pillai double *StutterPeriod, 1050dda4fb85SAurabindo Pillai bool *DCHUBBUB_ARB_CSTATE_MAX_CAP_MODE); 1051dda4fb85SAurabindo Pillai 1052dda4fb85SAurabindo Pillai void dml32_CalculateMaxDETAndMinCompressedBufferSize( 1053dda4fb85SAurabindo Pillai unsigned int ConfigReturnBufferSizeInKByte, 1054dda4fb85SAurabindo Pillai unsigned int ROBBufferSizeInKByte, 1055dda4fb85SAurabindo Pillai unsigned int MaxNumDPP, 1056dda4fb85SAurabindo Pillai bool nomDETInKByteOverrideEnable, // VBA_DELTA, allow DV to override default DET size 1057dda4fb85SAurabindo Pillai unsigned int nomDETInKByteOverrideValue, // VBA_DELTA 1058dda4fb85SAurabindo Pillai 1059dda4fb85SAurabindo Pillai /* Output */ 1060dda4fb85SAurabindo Pillai unsigned int *MaxTotalDETInKByte, 1061dda4fb85SAurabindo Pillai unsigned int *nomDETInKByte, 1062dda4fb85SAurabindo Pillai unsigned int *MinCompressedBufferSizeInKByte); 1063dda4fb85SAurabindo Pillai 1064dda4fb85SAurabindo Pillai bool dml32_CalculateVActiveBandwithSupport(unsigned int NumberOfActiveSurfaces, 1065dda4fb85SAurabindo Pillai double ReturnBW, 1066dda4fb85SAurabindo Pillai bool NotUrgentLatencyHiding[], 1067dda4fb85SAurabindo Pillai double ReadBandwidthLuma[], 1068dda4fb85SAurabindo Pillai double ReadBandwidthChroma[], 1069dda4fb85SAurabindo Pillai double cursor_bw[], 1070dda4fb85SAurabindo Pillai double meta_row_bandwidth[], 1071dda4fb85SAurabindo Pillai double dpte_row_bandwidth[], 1072dda4fb85SAurabindo Pillai unsigned int NumberOfDPP[], 1073dda4fb85SAurabindo Pillai double UrgentBurstFactorLuma[], 1074dda4fb85SAurabindo Pillai double UrgentBurstFactorChroma[], 1075dda4fb85SAurabindo Pillai double UrgentBurstFactorCursor[]); 1076dda4fb85SAurabindo Pillai 1077dda4fb85SAurabindo Pillai void dml32_CalculatePrefetchBandwithSupport(unsigned int NumberOfActiveSurfaces, 1078dda4fb85SAurabindo Pillai double ReturnBW, 1079dda4fb85SAurabindo Pillai bool NotUrgentLatencyHiding[], 1080dda4fb85SAurabindo Pillai double ReadBandwidthLuma[], 1081dda4fb85SAurabindo Pillai double ReadBandwidthChroma[], 1082dda4fb85SAurabindo Pillai double PrefetchBandwidthLuma[], 1083dda4fb85SAurabindo Pillai double PrefetchBandwidthChroma[], 1084dda4fb85SAurabindo Pillai double cursor_bw[], 1085dda4fb85SAurabindo Pillai double meta_row_bandwidth[], 1086dda4fb85SAurabindo Pillai double dpte_row_bandwidth[], 1087dda4fb85SAurabindo Pillai double cursor_bw_pre[], 1088dda4fb85SAurabindo Pillai double prefetch_vmrow_bw[], 1089dda4fb85SAurabindo Pillai unsigned int NumberOfDPP[], 1090dda4fb85SAurabindo Pillai double UrgentBurstFactorLuma[], 1091dda4fb85SAurabindo Pillai double UrgentBurstFactorChroma[], 1092dda4fb85SAurabindo Pillai double UrgentBurstFactorCursor[], 1093dda4fb85SAurabindo Pillai double UrgentBurstFactorLumaPre[], 1094dda4fb85SAurabindo Pillai double UrgentBurstFactorChromaPre[], 1095dda4fb85SAurabindo Pillai double UrgentBurstFactorCursorPre[], 1096dda4fb85SAurabindo Pillai 1097dda4fb85SAurabindo Pillai /* output */ 1098dda4fb85SAurabindo Pillai double *PrefetchBandwidth, 1099dda4fb85SAurabindo Pillai double *FractionOfUrgentBandwidth, 1100dda4fb85SAurabindo Pillai bool *PrefetchBandwidthSupport); 1101dda4fb85SAurabindo Pillai 1102dda4fb85SAurabindo Pillai double dml32_CalculateBandwidthAvailableForImmediateFlip(unsigned int NumberOfActiveSurfaces, 1103dda4fb85SAurabindo Pillai double ReturnBW, 1104dda4fb85SAurabindo Pillai double ReadBandwidthLuma[], 1105dda4fb85SAurabindo Pillai double ReadBandwidthChroma[], 1106dda4fb85SAurabindo Pillai double PrefetchBandwidthLuma[], 1107dda4fb85SAurabindo Pillai double PrefetchBandwidthChroma[], 1108dda4fb85SAurabindo Pillai double cursor_bw[], 1109dda4fb85SAurabindo Pillai double cursor_bw_pre[], 1110dda4fb85SAurabindo Pillai unsigned int NumberOfDPP[], 1111dda4fb85SAurabindo Pillai double UrgentBurstFactorLuma[], 1112dda4fb85SAurabindo Pillai double UrgentBurstFactorChroma[], 1113dda4fb85SAurabindo Pillai double UrgentBurstFactorCursor[], 1114dda4fb85SAurabindo Pillai double UrgentBurstFactorLumaPre[], 1115dda4fb85SAurabindo Pillai double UrgentBurstFactorChromaPre[], 1116dda4fb85SAurabindo Pillai double UrgentBurstFactorCursorPre[]); 1117dda4fb85SAurabindo Pillai 1118dda4fb85SAurabindo Pillai void dml32_CalculateImmediateFlipBandwithSupport(unsigned int NumberOfActiveSurfaces, 1119dda4fb85SAurabindo Pillai double ReturnBW, 1120dda4fb85SAurabindo Pillai enum immediate_flip_requirement ImmediateFlipRequirement[], 1121dda4fb85SAurabindo Pillai double final_flip_bw[], 1122dda4fb85SAurabindo Pillai double ReadBandwidthLuma[], 1123dda4fb85SAurabindo Pillai double ReadBandwidthChroma[], 1124dda4fb85SAurabindo Pillai double PrefetchBandwidthLuma[], 1125dda4fb85SAurabindo Pillai double PrefetchBandwidthChroma[], 1126dda4fb85SAurabindo Pillai double cursor_bw[], 1127dda4fb85SAurabindo Pillai double meta_row_bandwidth[], 1128dda4fb85SAurabindo Pillai double dpte_row_bandwidth[], 1129dda4fb85SAurabindo Pillai double cursor_bw_pre[], 1130dda4fb85SAurabindo Pillai double prefetch_vmrow_bw[], 1131dda4fb85SAurabindo Pillai unsigned int NumberOfDPP[], 1132dda4fb85SAurabindo Pillai double UrgentBurstFactorLuma[], 1133dda4fb85SAurabindo Pillai double UrgentBurstFactorChroma[], 1134dda4fb85SAurabindo Pillai double UrgentBurstFactorCursor[], 1135dda4fb85SAurabindo Pillai double UrgentBurstFactorLumaPre[], 1136dda4fb85SAurabindo Pillai double UrgentBurstFactorChromaPre[], 1137dda4fb85SAurabindo Pillai double UrgentBurstFactorCursorPre[], 1138dda4fb85SAurabindo Pillai 1139dda4fb85SAurabindo Pillai /* output */ 1140dda4fb85SAurabindo Pillai double *TotalBandwidth, 1141dda4fb85SAurabindo Pillai double *FractionOfUrgentBandwidth, 1142dda4fb85SAurabindo Pillai bool *ImmediateFlipBandwidthSupport); 1143dda4fb85SAurabindo Pillai 1144*6d4727c8SDillon Varone bool dml32_CalculateDETSwathFillLatencyHiding(unsigned int NumberOfActiveSurfaces, 1145*6d4727c8SDillon Varone double ReturnBW, 1146*6d4727c8SDillon Varone double UrgentLatency, 1147*6d4727c8SDillon Varone unsigned int SwathHeightY[], 1148*6d4727c8SDillon Varone unsigned int SwathHeightC[], 1149*6d4727c8SDillon Varone unsigned int SwathWidthY[], 1150*6d4727c8SDillon Varone unsigned int SwathWidthC[], 1151*6d4727c8SDillon Varone double BytePerPixelInDETY[], 1152*6d4727c8SDillon Varone double BytePerPixelInDETC[], 1153*6d4727c8SDillon Varone unsigned int DETBufferSizeY[], 1154*6d4727c8SDillon Varone unsigned int DETBufferSizeC[], 1155*6d4727c8SDillon Varone unsigned int NumOfDPP[], 1156*6d4727c8SDillon Varone unsigned int HTotal[], 1157*6d4727c8SDillon Varone double PixelClock[], 1158*6d4727c8SDillon Varone double VRatioY[], 1159*6d4727c8SDillon Varone double VRatioC[], 1160*6d4727c8SDillon Varone enum dm_use_mall_for_pstate_change_mode UsesMALLForPStateChange[DC__NUM_DPP__MAX]); 1161*6d4727c8SDillon Varone 1162dda4fb85SAurabindo Pillai #endif 1163