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