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[],
337a21005e4SDillon Varone 		enum dm_use_mall_for_pstate_change_mode UsesMALLForPStateChange[],
338dda4fb85SAurabindo Pillai 		bool DCCEnable[],
339dda4fb85SAurabindo Pillai 		bool ViewportStationary[],
340dda4fb85SAurabindo Pillai 		unsigned int ViewportXStartY[],
341dda4fb85SAurabindo Pillai 		unsigned int ViewportYStartY[],
342dda4fb85SAurabindo Pillai 		unsigned int ViewportXStartC[],
343dda4fb85SAurabindo Pillai 		unsigned int ViewportYStartC[],
344dda4fb85SAurabindo Pillai 		unsigned int ViewportWidthY[],
345dda4fb85SAurabindo Pillai 		unsigned int ViewportHeightY[],
346dda4fb85SAurabindo Pillai 		unsigned int BytesPerPixelY[],
347dda4fb85SAurabindo Pillai 		unsigned int ViewportWidthC[],
348dda4fb85SAurabindo Pillai 		unsigned int ViewportHeightC[],
349dda4fb85SAurabindo Pillai 		unsigned int BytesPerPixelC[],
350dda4fb85SAurabindo Pillai 		unsigned int SurfaceWidthY[],
351dda4fb85SAurabindo Pillai 		unsigned int SurfaceWidthC[],
352dda4fb85SAurabindo Pillai 		unsigned int SurfaceHeightY[],
353dda4fb85SAurabindo Pillai 		unsigned int SurfaceHeightC[],
354dda4fb85SAurabindo Pillai 		unsigned int Read256BytesBlockWidthY[],
355dda4fb85SAurabindo Pillai 		unsigned int Read256BytesBlockWidthC[],
356dda4fb85SAurabindo Pillai 		unsigned int Read256BytesBlockHeightY[],
357dda4fb85SAurabindo Pillai 		unsigned int Read256BytesBlockHeightC[],
358dda4fb85SAurabindo Pillai 		unsigned int ReadBlockWidthY[],
359dda4fb85SAurabindo Pillai 		unsigned int ReadBlockWidthC[],
360dda4fb85SAurabindo Pillai 		unsigned int ReadBlockHeightY[],
361dda4fb85SAurabindo Pillai 		unsigned int ReadBlockHeightC[],
36295c454caSDillon Varone 		unsigned int DCCMetaPitchY[],
36395c454caSDillon Varone 		unsigned int DCCMetaPitchC[],
364dda4fb85SAurabindo Pillai 
365dda4fb85SAurabindo Pillai 		/* Output */
366dda4fb85SAurabindo Pillai 		unsigned int    SurfaceSizeInMALL[],
367dda4fb85SAurabindo Pillai 		bool *ExceededMALLSize);
368dda4fb85SAurabindo Pillai 
369dda4fb85SAurabindo Pillai void dml32_CalculateVMRowAndSwath(
370dda4fb85SAurabindo Pillai 		unsigned int NumberOfActiveSurfaces,
371dda4fb85SAurabindo Pillai 		DmlPipe myPipe[],
372dda4fb85SAurabindo Pillai 		unsigned int SurfaceSizeInMALL[],
373dda4fb85SAurabindo Pillai 		unsigned int PTEBufferSizeInRequestsLuma,
374dda4fb85SAurabindo Pillai 		unsigned int PTEBufferSizeInRequestsChroma,
375dda4fb85SAurabindo Pillai 		unsigned int DCCMetaBufferSizeBytes,
376dda4fb85SAurabindo Pillai 		enum dm_use_mall_for_static_screen_mode UseMALLForStaticScreen[],
377dda4fb85SAurabindo Pillai 		enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange[],
378dda4fb85SAurabindo Pillai 		unsigned int MALLAllocatedForDCN,
379dda4fb85SAurabindo Pillai 		double SwathWidthY[],
380dda4fb85SAurabindo Pillai 		double SwathWidthC[],
381dda4fb85SAurabindo Pillai 		bool GPUVMEnable,
382dda4fb85SAurabindo Pillai 		bool HostVMEnable,
383dda4fb85SAurabindo Pillai 		unsigned int HostVMMaxNonCachedPageTableLevels,
384dda4fb85SAurabindo Pillai 		unsigned int GPUVMMaxPageTableLevels,
385dda4fb85SAurabindo Pillai 		unsigned int GPUVMMinPageSizeKBytes[],
386dda4fb85SAurabindo Pillai 		unsigned int HostVMMinPageSize,
387dda4fb85SAurabindo Pillai 
388dda4fb85SAurabindo Pillai 		/* Output */
389dda4fb85SAurabindo Pillai 		bool PTEBufferSizeNotExceeded[],
390dda4fb85SAurabindo Pillai 		bool DCCMetaBufferSizeNotExceeded[],
391dda4fb85SAurabindo Pillai 		unsigned int dpte_row_width_luma_ub[],
392dda4fb85SAurabindo Pillai 		unsigned int dpte_row_width_chroma_ub[],
393dda4fb85SAurabindo Pillai 		unsigned int dpte_row_height_luma[],
394dda4fb85SAurabindo Pillai 		unsigned int dpte_row_height_chroma[],
395dda4fb85SAurabindo Pillai 		unsigned int dpte_row_height_linear_luma[],     // VBA_DELTA
396dda4fb85SAurabindo Pillai 		unsigned int dpte_row_height_linear_chroma[],   // VBA_DELTA
397dda4fb85SAurabindo Pillai 		unsigned int meta_req_width[],
398dda4fb85SAurabindo Pillai 		unsigned int meta_req_width_chroma[],
399dda4fb85SAurabindo Pillai 		unsigned int meta_req_height[],
400dda4fb85SAurabindo Pillai 		unsigned int meta_req_height_chroma[],
401dda4fb85SAurabindo Pillai 		unsigned int meta_row_width[],
402dda4fb85SAurabindo Pillai 		unsigned int meta_row_width_chroma[],
403dda4fb85SAurabindo Pillai 		unsigned int meta_row_height[],
404dda4fb85SAurabindo Pillai 		unsigned int meta_row_height_chroma[],
405dda4fb85SAurabindo Pillai 		unsigned int vm_group_bytes[],
406dda4fb85SAurabindo Pillai 		unsigned int dpte_group_bytes[],
407dda4fb85SAurabindo Pillai 		unsigned int PixelPTEReqWidthY[],
408dda4fb85SAurabindo Pillai 		unsigned int PixelPTEReqHeightY[],
409dda4fb85SAurabindo Pillai 		unsigned int PTERequestSizeY[],
410dda4fb85SAurabindo Pillai 		unsigned int PixelPTEReqWidthC[],
411dda4fb85SAurabindo Pillai 		unsigned int PixelPTEReqHeightC[],
412dda4fb85SAurabindo Pillai 		unsigned int PTERequestSizeC[],
413dda4fb85SAurabindo Pillai 		unsigned int dpde0_bytes_per_frame_ub_l[],
414dda4fb85SAurabindo Pillai 		unsigned int meta_pte_bytes_per_frame_ub_l[],
415dda4fb85SAurabindo Pillai 		unsigned int dpde0_bytes_per_frame_ub_c[],
416dda4fb85SAurabindo Pillai 		unsigned int meta_pte_bytes_per_frame_ub_c[],
417dda4fb85SAurabindo Pillai 		double PrefetchSourceLinesY[],
418dda4fb85SAurabindo Pillai 		double PrefetchSourceLinesC[],
419dda4fb85SAurabindo Pillai 		double VInitPreFillY[],
420dda4fb85SAurabindo Pillai 		double VInitPreFillC[],
421dda4fb85SAurabindo Pillai 		unsigned int MaxNumSwathY[],
422dda4fb85SAurabindo Pillai 		unsigned int MaxNumSwathC[],
423dda4fb85SAurabindo Pillai 		double meta_row_bw[],
424dda4fb85SAurabindo Pillai 		double dpte_row_bw[],
425dda4fb85SAurabindo Pillai 		double PixelPTEBytesPerRow[],
426dda4fb85SAurabindo Pillai 		double PDEAndMetaPTEBytesFrame[],
427dda4fb85SAurabindo Pillai 		double MetaRowByte[],
428dda4fb85SAurabindo Pillai 		bool use_one_row_for_frame[],
429dda4fb85SAurabindo Pillai 		bool use_one_row_for_frame_flip[],
430dda4fb85SAurabindo Pillai 		bool UsesMALLForStaticScreen[],
431dda4fb85SAurabindo Pillai 		bool PTE_BUFFER_MODE[],
432dda4fb85SAurabindo Pillai 		unsigned int BIGK_FRAGMENT_SIZE[]);
433dda4fb85SAurabindo Pillai 
434dda4fb85SAurabindo Pillai unsigned int dml32_CalculateVMAndRowBytes(
435dda4fb85SAurabindo Pillai 		bool ViewportStationary,
436dda4fb85SAurabindo Pillai 		bool DCCEnable,
437dda4fb85SAurabindo Pillai 		unsigned int NumberOfDPPs,
438dda4fb85SAurabindo Pillai 		unsigned int BlockHeight256Bytes,
439dda4fb85SAurabindo Pillai 		unsigned int BlockWidth256Bytes,
440dda4fb85SAurabindo Pillai 		enum source_format_class SourcePixelFormat,
441dda4fb85SAurabindo Pillai 		unsigned int SurfaceTiling,
442dda4fb85SAurabindo Pillai 		unsigned int BytePerPixel,
443dda4fb85SAurabindo Pillai 		enum dm_rotation_angle SourceScan,
444dda4fb85SAurabindo Pillai 		double SwathWidth,
445dda4fb85SAurabindo Pillai 		unsigned int ViewportHeight,
446dda4fb85SAurabindo Pillai 		unsigned int    ViewportXStart,
447dda4fb85SAurabindo Pillai 		unsigned int    ViewportYStart,
448dda4fb85SAurabindo Pillai 		bool GPUVMEnable,
449dda4fb85SAurabindo Pillai 		bool HostVMEnable,
450dda4fb85SAurabindo Pillai 		unsigned int HostVMMaxNonCachedPageTableLevels,
451dda4fb85SAurabindo Pillai 		unsigned int GPUVMMaxPageTableLevels,
452dda4fb85SAurabindo Pillai 		unsigned int GPUVMMinPageSizeKBytes,
453dda4fb85SAurabindo Pillai 		unsigned int HostVMMinPageSize,
454dda4fb85SAurabindo Pillai 		unsigned int PTEBufferSizeInRequests,
455dda4fb85SAurabindo Pillai 		unsigned int Pitch,
456dda4fb85SAurabindo Pillai 		unsigned int DCCMetaPitch,
457dda4fb85SAurabindo Pillai 		unsigned int MacroTileWidth,
458dda4fb85SAurabindo Pillai 		unsigned int MacroTileHeight,
459dda4fb85SAurabindo Pillai 
460dda4fb85SAurabindo Pillai 		/* Output */
461dda4fb85SAurabindo Pillai 		unsigned int *MetaRowByte,
462dda4fb85SAurabindo Pillai 		unsigned int *PixelPTEBytesPerRow,
463dda4fb85SAurabindo Pillai 		unsigned int    *dpte_row_width_ub,
464dda4fb85SAurabindo Pillai 		unsigned int *dpte_row_height,
465dda4fb85SAurabindo Pillai 		unsigned int *dpte_row_height_linear,
466dda4fb85SAurabindo Pillai 		unsigned int    *PixelPTEBytesPerRow_one_row_per_frame,
467dda4fb85SAurabindo Pillai 		unsigned int    *dpte_row_width_ub_one_row_per_frame,
468dda4fb85SAurabindo Pillai 		unsigned int    *dpte_row_height_one_row_per_frame,
469dda4fb85SAurabindo Pillai 		unsigned int *MetaRequestWidth,
470dda4fb85SAurabindo Pillai 		unsigned int *MetaRequestHeight,
471dda4fb85SAurabindo Pillai 		unsigned int *meta_row_width,
472dda4fb85SAurabindo Pillai 		unsigned int *meta_row_height,
473dda4fb85SAurabindo Pillai 		unsigned int *PixelPTEReqWidth,
474dda4fb85SAurabindo Pillai 		unsigned int *PixelPTEReqHeight,
475dda4fb85SAurabindo Pillai 		unsigned int *PTERequestSize,
476dda4fb85SAurabindo Pillai 		unsigned int    *DPDE0BytesFrame,
477dda4fb85SAurabindo Pillai 		unsigned int    *MetaPTEBytesFrame);
478dda4fb85SAurabindo Pillai 
479dda4fb85SAurabindo Pillai double dml32_CalculatePrefetchSourceLines(
480dda4fb85SAurabindo Pillai 		double VRatio,
481dda4fb85SAurabindo Pillai 		unsigned int VTaps,
482dda4fb85SAurabindo Pillai 		bool Interlace,
483dda4fb85SAurabindo Pillai 		bool ProgressiveToInterlaceUnitInOPP,
484dda4fb85SAurabindo Pillai 		unsigned int SwathHeight,
485dda4fb85SAurabindo Pillai 		enum dm_rotation_angle SourceRotation,
486dda4fb85SAurabindo Pillai 		bool ViewportStationary,
487dda4fb85SAurabindo Pillai 		double SwathWidth,
488dda4fb85SAurabindo Pillai 		unsigned int ViewportHeight,
489dda4fb85SAurabindo Pillai 		unsigned int ViewportXStart,
490dda4fb85SAurabindo Pillai 		unsigned int ViewportYStart,
491dda4fb85SAurabindo Pillai 
492dda4fb85SAurabindo Pillai 		/* Output */
493dda4fb85SAurabindo Pillai 		double *VInitPreFill,
494dda4fb85SAurabindo Pillai 		unsigned int *MaxNumSwath);
495dda4fb85SAurabindo Pillai 
496dda4fb85SAurabindo Pillai void dml32_CalculateMALLUseForStaticScreen(
497dda4fb85SAurabindo Pillai 		unsigned int NumberOfActiveSurfaces,
498dda4fb85SAurabindo Pillai 		unsigned int MALLAllocatedForDCNFinal,
499dda4fb85SAurabindo Pillai 		enum dm_use_mall_for_static_screen_mode *UseMALLForStaticScreen,
500dda4fb85SAurabindo Pillai 		unsigned int SurfaceSizeInMALL[],
501dda4fb85SAurabindo Pillai 		bool one_row_per_frame_fits_in_buffer[],
502dda4fb85SAurabindo Pillai 
503dda4fb85SAurabindo Pillai 		/* output */
504dda4fb85SAurabindo Pillai 		bool UsesMALLForStaticScreen[]);
505dda4fb85SAurabindo Pillai 
506dda4fb85SAurabindo Pillai void dml32_CalculateRowBandwidth(
507dda4fb85SAurabindo Pillai 		bool GPUVMEnable,
508dda4fb85SAurabindo Pillai 		enum source_format_class SourcePixelFormat,
509dda4fb85SAurabindo Pillai 		double VRatio,
510dda4fb85SAurabindo Pillai 		double VRatioChroma,
511dda4fb85SAurabindo Pillai 		bool DCCEnable,
512dda4fb85SAurabindo Pillai 		double LineTime,
513dda4fb85SAurabindo Pillai 		unsigned int MetaRowByteLuma,
514dda4fb85SAurabindo Pillai 		unsigned int MetaRowByteChroma,
515dda4fb85SAurabindo Pillai 		unsigned int meta_row_height_luma,
516dda4fb85SAurabindo Pillai 		unsigned int meta_row_height_chroma,
517dda4fb85SAurabindo Pillai 		unsigned int PixelPTEBytesPerRowLuma,
518dda4fb85SAurabindo Pillai 		unsigned int PixelPTEBytesPerRowChroma,
519dda4fb85SAurabindo Pillai 		unsigned int dpte_row_height_luma,
520dda4fb85SAurabindo Pillai 		unsigned int dpte_row_height_chroma,
521dda4fb85SAurabindo Pillai 		/* Output */
522dda4fb85SAurabindo Pillai 		double *meta_row_bw,
523dda4fb85SAurabindo Pillai 		double *dpte_row_bw);
524dda4fb85SAurabindo Pillai 
525dda4fb85SAurabindo Pillai double dml32_CalculateUrgentLatency(
526dda4fb85SAurabindo Pillai 		double UrgentLatencyPixelDataOnly,
527dda4fb85SAurabindo Pillai 		double UrgentLatencyPixelMixedWithVMData,
528dda4fb85SAurabindo Pillai 		double UrgentLatencyVMDataOnly,
529dda4fb85SAurabindo Pillai 		bool   DoUrgentLatencyAdjustment,
530dda4fb85SAurabindo Pillai 		double UrgentLatencyAdjustmentFabricClockComponent,
531dda4fb85SAurabindo Pillai 		double UrgentLatencyAdjustmentFabricClockReference,
532dda4fb85SAurabindo Pillai 		double FabricClock);
533dda4fb85SAurabindo Pillai 
534dda4fb85SAurabindo Pillai void dml32_CalculateUrgentBurstFactor(
535dda4fb85SAurabindo Pillai 		enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange,
536dda4fb85SAurabindo Pillai 		unsigned int    swath_width_luma_ub,
537dda4fb85SAurabindo Pillai 		unsigned int    swath_width_chroma_ub,
538dda4fb85SAurabindo Pillai 		unsigned int SwathHeightY,
539dda4fb85SAurabindo Pillai 		unsigned int SwathHeightC,
540dda4fb85SAurabindo Pillai 		double  LineTime,
541dda4fb85SAurabindo Pillai 		double  UrgentLatency,
542dda4fb85SAurabindo Pillai 		double  CursorBufferSize,
543dda4fb85SAurabindo Pillai 		unsigned int CursorWidth,
544dda4fb85SAurabindo Pillai 		unsigned int CursorBPP,
545dda4fb85SAurabindo Pillai 		double  VRatio,
546dda4fb85SAurabindo Pillai 		double  VRatioC,
547dda4fb85SAurabindo Pillai 		double  BytePerPixelInDETY,
548dda4fb85SAurabindo Pillai 		double  BytePerPixelInDETC,
549dda4fb85SAurabindo Pillai 		unsigned int    DETBufferSizeY,
550dda4fb85SAurabindo Pillai 		unsigned int    DETBufferSizeC,
551dda4fb85SAurabindo Pillai 		/* Output */
552dda4fb85SAurabindo Pillai 		double *UrgentBurstFactorCursor,
553dda4fb85SAurabindo Pillai 		double *UrgentBurstFactorLuma,
554dda4fb85SAurabindo Pillai 		double *UrgentBurstFactorChroma,
555dda4fb85SAurabindo Pillai 		bool   *NotEnoughUrgentLatencyHiding);
556dda4fb85SAurabindo Pillai 
557dda4fb85SAurabindo Pillai void dml32_CalculateDCFCLKDeepSleep(
558dda4fb85SAurabindo Pillai 		unsigned int NumberOfActiveSurfaces,
559dda4fb85SAurabindo Pillai 		unsigned int BytePerPixelY[],
560dda4fb85SAurabindo Pillai 		unsigned int BytePerPixelC[],
561dda4fb85SAurabindo Pillai 		double VRatio[],
562dda4fb85SAurabindo Pillai 		double VRatioChroma[],
563dda4fb85SAurabindo Pillai 		double SwathWidthY[],
564dda4fb85SAurabindo Pillai 		double SwathWidthC[],
565dda4fb85SAurabindo Pillai 		unsigned int DPPPerSurface[],
566dda4fb85SAurabindo Pillai 		double HRatio[],
567dda4fb85SAurabindo Pillai 		double HRatioChroma[],
568dda4fb85SAurabindo Pillai 		double PixelClock[],
569dda4fb85SAurabindo Pillai 		double PSCL_THROUGHPUT[],
570dda4fb85SAurabindo Pillai 		double PSCL_THROUGHPUT_CHROMA[],
571dda4fb85SAurabindo Pillai 		double Dppclk[],
572dda4fb85SAurabindo Pillai 		double ReadBandwidthLuma[],
573dda4fb85SAurabindo Pillai 		double ReadBandwidthChroma[],
574dda4fb85SAurabindo Pillai 		unsigned int ReturnBusWidth,
575dda4fb85SAurabindo Pillai 
576dda4fb85SAurabindo Pillai 		/* Output */
577dda4fb85SAurabindo Pillai 		double *DCFClkDeepSleep);
578dda4fb85SAurabindo Pillai 
579dda4fb85SAurabindo Pillai double dml32_CalculateWriteBackDelay(
580dda4fb85SAurabindo Pillai 		enum source_format_class WritebackPixelFormat,
581dda4fb85SAurabindo Pillai 		double WritebackHRatio,
582dda4fb85SAurabindo Pillai 		double WritebackVRatio,
583dda4fb85SAurabindo Pillai 		unsigned int WritebackVTaps,
584dda4fb85SAurabindo Pillai 		unsigned int         WritebackDestinationWidth,
585dda4fb85SAurabindo Pillai 		unsigned int         WritebackDestinationHeight,
586dda4fb85SAurabindo Pillai 		unsigned int         WritebackSourceHeight,
587dda4fb85SAurabindo Pillai 		unsigned int HTotal);
588dda4fb85SAurabindo Pillai 
589dda4fb85SAurabindo Pillai void dml32_UseMinimumDCFCLK(
590dda4fb85SAurabindo Pillai 		enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange[],
591dda4fb85SAurabindo Pillai 		bool DRRDisplay[],
592dda4fb85SAurabindo Pillai 		bool SynchronizeDRRDisplaysForUCLKPStateChangeFinal,
593dda4fb85SAurabindo Pillai 		unsigned int MaxInterDCNTileRepeaters,
594dda4fb85SAurabindo Pillai 		unsigned int MaxPrefetchMode,
595dda4fb85SAurabindo Pillai 		double DRAMClockChangeLatencyFinal,
596dda4fb85SAurabindo Pillai 		double FCLKChangeLatency,
597dda4fb85SAurabindo Pillai 		double SREnterPlusExitTime,
598dda4fb85SAurabindo Pillai 		unsigned int ReturnBusWidth,
599dda4fb85SAurabindo Pillai 		unsigned int RoundTripPingLatencyCycles,
600dda4fb85SAurabindo Pillai 		unsigned int ReorderingBytes,
601dda4fb85SAurabindo Pillai 		unsigned int PixelChunkSizeInKByte,
602dda4fb85SAurabindo Pillai 		unsigned int MetaChunkSize,
603dda4fb85SAurabindo Pillai 		bool GPUVMEnable,
604dda4fb85SAurabindo Pillai 		unsigned int GPUVMMaxPageTableLevels,
605dda4fb85SAurabindo Pillai 		bool HostVMEnable,
606dda4fb85SAurabindo Pillai 		unsigned int NumberOfActiveSurfaces,
607dda4fb85SAurabindo Pillai 		double HostVMMinPageSize,
608dda4fb85SAurabindo Pillai 		unsigned int HostVMMaxNonCachedPageTableLevels,
609dda4fb85SAurabindo Pillai 		bool DynamicMetadataVMEnabled,
610dda4fb85SAurabindo Pillai 		bool ImmediateFlipRequirement,
611dda4fb85SAurabindo Pillai 		bool ProgressiveToInterlaceUnitInOPP,
612dda4fb85SAurabindo Pillai 		double MaxAveragePercentOfIdealSDPPortBWDisplayCanUseInNormalSystemOperation,
613dda4fb85SAurabindo Pillai 		double PercentOfIdealSDPPortBWReceivedAfterUrgLatency,
614dda4fb85SAurabindo Pillai 		unsigned int VTotal[],
615dda4fb85SAurabindo Pillai 		unsigned int VActive[],
616dda4fb85SAurabindo Pillai 		unsigned int DynamicMetadataTransmittedBytes[],
617dda4fb85SAurabindo Pillai 		unsigned int DynamicMetadataLinesBeforeActiveRequired[],
618dda4fb85SAurabindo Pillai 		bool Interlace[],
619dda4fb85SAurabindo Pillai 		double RequiredDPPCLKPerSurface[][2][DC__NUM_DPP__MAX],
620dda4fb85SAurabindo Pillai 		double RequiredDISPCLK[][2],
621dda4fb85SAurabindo Pillai 		double UrgLatency[],
622dda4fb85SAurabindo Pillai 		unsigned int NoOfDPP[][2][DC__NUM_DPP__MAX],
623dda4fb85SAurabindo Pillai 		double ProjectedDCFClkDeepSleep[][2],
624dda4fb85SAurabindo Pillai 		double MaximumVStartup[][2][DC__NUM_DPP__MAX],
625dda4fb85SAurabindo Pillai 		unsigned int TotalNumberOfActiveDPP[][2],
626dda4fb85SAurabindo Pillai 		unsigned int TotalNumberOfDCCActiveDPP[][2],
627dda4fb85SAurabindo Pillai 		unsigned int dpte_group_bytes[],
628dda4fb85SAurabindo Pillai 		double PrefetchLinesY[][2][DC__NUM_DPP__MAX],
629dda4fb85SAurabindo Pillai 		double PrefetchLinesC[][2][DC__NUM_DPP__MAX],
630dda4fb85SAurabindo Pillai 		unsigned int swath_width_luma_ub_all_states[][2][DC__NUM_DPP__MAX],
631dda4fb85SAurabindo Pillai 		unsigned int swath_width_chroma_ub_all_states[][2][DC__NUM_DPP__MAX],
632dda4fb85SAurabindo Pillai 		unsigned int BytePerPixelY[],
633dda4fb85SAurabindo Pillai 		unsigned int BytePerPixelC[],
634dda4fb85SAurabindo Pillai 		unsigned int HTotal[],
635dda4fb85SAurabindo Pillai 		double PixelClock[],
636dda4fb85SAurabindo Pillai 		double PDEAndMetaPTEBytesPerFrame[][2][DC__NUM_DPP__MAX],
637dda4fb85SAurabindo Pillai 		double DPTEBytesPerRow[][2][DC__NUM_DPP__MAX],
638dda4fb85SAurabindo Pillai 		double MetaRowBytes[][2][DC__NUM_DPP__MAX],
639dda4fb85SAurabindo Pillai 		bool DynamicMetadataEnable[],
640dda4fb85SAurabindo Pillai 		double ReadBandwidthLuma[],
641dda4fb85SAurabindo Pillai 		double ReadBandwidthChroma[],
642dda4fb85SAurabindo Pillai 		double DCFCLKPerState[],
643dda4fb85SAurabindo Pillai 		/* Output */
644dda4fb85SAurabindo Pillai 		double DCFCLKState[][2]);
645dda4fb85SAurabindo Pillai 
646dda4fb85SAurabindo Pillai unsigned int dml32_CalculateExtraLatencyBytes(unsigned int ReorderingBytes,
647dda4fb85SAurabindo Pillai 		unsigned int TotalNumberOfActiveDPP,
648dda4fb85SAurabindo Pillai 		unsigned int PixelChunkSizeInKByte,
649dda4fb85SAurabindo Pillai 		unsigned int TotalNumberOfDCCActiveDPP,
650dda4fb85SAurabindo Pillai 		unsigned int MetaChunkSize,
651dda4fb85SAurabindo Pillai 		bool GPUVMEnable,
652dda4fb85SAurabindo Pillai 		bool HostVMEnable,
653dda4fb85SAurabindo Pillai 		unsigned int NumberOfActiveSurfaces,
654dda4fb85SAurabindo Pillai 		unsigned int NumberOfDPP[],
655dda4fb85SAurabindo Pillai 		unsigned int dpte_group_bytes[],
656dda4fb85SAurabindo Pillai 		double HostVMInefficiencyFactor,
657dda4fb85SAurabindo Pillai 		double HostVMMinPageSize,
658dda4fb85SAurabindo Pillai 		unsigned int HostVMMaxNonCachedPageTableLevels);
659dda4fb85SAurabindo Pillai 
660dda4fb85SAurabindo Pillai void dml32_CalculateVUpdateAndDynamicMetadataParameters(
661dda4fb85SAurabindo Pillai 		unsigned int MaxInterDCNTileRepeaters,
662dda4fb85SAurabindo Pillai 		double Dppclk,
663dda4fb85SAurabindo Pillai 		double Dispclk,
664dda4fb85SAurabindo Pillai 		double DCFClkDeepSleep,
665dda4fb85SAurabindo Pillai 		double PixelClock,
666dda4fb85SAurabindo Pillai 		unsigned int HTotal,
667dda4fb85SAurabindo Pillai 		unsigned int VBlank,
668dda4fb85SAurabindo Pillai 		unsigned int DynamicMetadataTransmittedBytes,
669dda4fb85SAurabindo Pillai 		unsigned int DynamicMetadataLinesBeforeActiveRequired,
670dda4fb85SAurabindo Pillai 		unsigned int InterlaceEnable,
671dda4fb85SAurabindo Pillai 		bool ProgressiveToInterlaceUnitInOPP,
672dda4fb85SAurabindo Pillai 		double *TSetup,
673dda4fb85SAurabindo Pillai 		double *Tdmbf,
674dda4fb85SAurabindo Pillai 		double *Tdmec,
675dda4fb85SAurabindo Pillai 		double *Tdmsks,
676dda4fb85SAurabindo Pillai 		unsigned int *VUpdateOffsetPix,
677dda4fb85SAurabindo Pillai 		double *VUpdateWidthPix,
678dda4fb85SAurabindo Pillai 		double *VReadyOffsetPix);
679dda4fb85SAurabindo Pillai 
680dda4fb85SAurabindo Pillai double dml32_CalculateTWait(
681dda4fb85SAurabindo Pillai 		unsigned int PrefetchMode,
682dda4fb85SAurabindo Pillai 		enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange,
683dda4fb85SAurabindo Pillai 		bool SynchronizeDRRDisplaysForUCLKPStateChangeFinal,
684dda4fb85SAurabindo Pillai 		bool DRRDisplay,
685dda4fb85SAurabindo Pillai 		double DRAMClockChangeLatency,
686dda4fb85SAurabindo Pillai 		double FCLKChangeLatency,
687dda4fb85SAurabindo Pillai 		double UrgentLatency,
688dda4fb85SAurabindo Pillai 		double SREnterPlusExitTime);
689dda4fb85SAurabindo Pillai 
690dda4fb85SAurabindo Pillai double dml32_get_return_bw_mbps(const soc_bounding_box_st *soc,
691dda4fb85SAurabindo Pillai 		const int VoltageLevel,
692dda4fb85SAurabindo Pillai 		const bool HostVMEnable,
693dda4fb85SAurabindo Pillai 		const double DCFCLK,
694dda4fb85SAurabindo Pillai 		const double FabricClock,
695dda4fb85SAurabindo Pillai 		const double DRAMSpeed);
696dda4fb85SAurabindo Pillai 
697dda4fb85SAurabindo Pillai double dml32_get_return_bw_mbps_vm_only(const soc_bounding_box_st *soc,
698dda4fb85SAurabindo Pillai 		const int VoltageLevel,
699dda4fb85SAurabindo Pillai 		const double DCFCLK,
700dda4fb85SAurabindo Pillai 		const double FabricClock,
701dda4fb85SAurabindo Pillai 		const double DRAMSpeed);
702dda4fb85SAurabindo Pillai 
703dda4fb85SAurabindo Pillai double dml32_CalculateExtraLatency(
704dda4fb85SAurabindo Pillai 		unsigned int RoundTripPingLatencyCycles,
705dda4fb85SAurabindo Pillai 		unsigned int ReorderingBytes,
706dda4fb85SAurabindo Pillai 		double DCFCLK,
707dda4fb85SAurabindo Pillai 		unsigned int TotalNumberOfActiveDPP,
708dda4fb85SAurabindo Pillai 		unsigned int PixelChunkSizeInKByte,
709dda4fb85SAurabindo Pillai 		unsigned int TotalNumberOfDCCActiveDPP,
710dda4fb85SAurabindo Pillai 		unsigned int MetaChunkSize,
711dda4fb85SAurabindo Pillai 		double ReturnBW,
712dda4fb85SAurabindo Pillai 		bool GPUVMEnable,
713dda4fb85SAurabindo Pillai 		bool HostVMEnable,
714dda4fb85SAurabindo Pillai 		unsigned int NumberOfActiveSurfaces,
715dda4fb85SAurabindo Pillai 		unsigned int NumberOfDPP[],
716dda4fb85SAurabindo Pillai 		unsigned int dpte_group_bytes[],
717dda4fb85SAurabindo Pillai 		double HostVMInefficiencyFactor,
718dda4fb85SAurabindo Pillai 		double HostVMMinPageSize,
719dda4fb85SAurabindo Pillai 		unsigned int HostVMMaxNonCachedPageTableLevels);
720dda4fb85SAurabindo Pillai 
721dda4fb85SAurabindo Pillai bool dml32_CalculatePrefetchSchedule(
7223b4e83a2SNathan Chancellor 		struct vba_vars_st *v,
7233b4e83a2SNathan Chancellor 		unsigned int k,
724dda4fb85SAurabindo Pillai 		double HostVMInefficiencyFactor,
725dda4fb85SAurabindo Pillai 		DmlPipe *myPipe,
726dda4fb85SAurabindo Pillai 		unsigned int DSCDelay,
727dda4fb85SAurabindo Pillai 		unsigned int DPP_RECOUT_WIDTH,
728dda4fb85SAurabindo Pillai 		unsigned int VStartup,
729dda4fb85SAurabindo Pillai 		unsigned int MaxVStartup,
730dda4fb85SAurabindo Pillai 		double UrgentLatency,
731dda4fb85SAurabindo Pillai 		double UrgentExtraLatency,
732dda4fb85SAurabindo Pillai 		double TCalc,
733dda4fb85SAurabindo Pillai 		unsigned int PDEAndMetaPTEBytesFrame,
734dda4fb85SAurabindo Pillai 		unsigned int MetaRowByte,
735dda4fb85SAurabindo Pillai 		unsigned int PixelPTEBytesPerRow,
736dda4fb85SAurabindo Pillai 		double PrefetchSourceLinesY,
737dda4fb85SAurabindo Pillai 		unsigned int SwathWidthY,
738dda4fb85SAurabindo Pillai 		unsigned int VInitPreFillY,
739dda4fb85SAurabindo Pillai 		unsigned int MaxNumSwathY,
740dda4fb85SAurabindo Pillai 		double PrefetchSourceLinesC,
741dda4fb85SAurabindo Pillai 		unsigned int SwathWidthC,
742dda4fb85SAurabindo Pillai 		unsigned int VInitPreFillC,
743dda4fb85SAurabindo Pillai 		unsigned int MaxNumSwathC,
744dda4fb85SAurabindo Pillai 		unsigned int swath_width_luma_ub,
745dda4fb85SAurabindo Pillai 		unsigned int swath_width_chroma_ub,
746dda4fb85SAurabindo Pillai 		unsigned int SwathHeightY,
747dda4fb85SAurabindo Pillai 		unsigned int SwathHeightC,
748dda4fb85SAurabindo Pillai 		double TWait,
74901c0c124SDillon Varone 		double TPreReq,
750*6750d1deSAlvin Lee 		bool ExtendPrefetchIfPossible,
751dda4fb85SAurabindo Pillai 		/* Output */
752dda4fb85SAurabindo Pillai 		double   *DSTXAfterScaler,
753dda4fb85SAurabindo Pillai 		double   *DSTYAfterScaler,
754dda4fb85SAurabindo Pillai 		double *DestinationLinesForPrefetch,
755dda4fb85SAurabindo Pillai 		double *PrefetchBandwidth,
756dda4fb85SAurabindo Pillai 		double *DestinationLinesToRequestVMInVBlank,
757dda4fb85SAurabindo Pillai 		double *DestinationLinesToRequestRowInVBlank,
758dda4fb85SAurabindo Pillai 		double *VRatioPrefetchY,
759dda4fb85SAurabindo Pillai 		double *VRatioPrefetchC,
760dda4fb85SAurabindo Pillai 		double *RequiredPrefetchPixDataBWLuma,
761dda4fb85SAurabindo Pillai 		double *RequiredPrefetchPixDataBWChroma,
762dda4fb85SAurabindo Pillai 		bool   *NotEnoughTimeForDynamicMetadata,
763dda4fb85SAurabindo Pillai 		double *Tno_bw,
764dda4fb85SAurabindo Pillai 		double *prefetch_vmrow_bw,
765dda4fb85SAurabindo Pillai 		double *Tdmdl_vm,
766dda4fb85SAurabindo Pillai 		double *Tdmdl,
767dda4fb85SAurabindo Pillai 		double *TSetup,
768dda4fb85SAurabindo Pillai 		unsigned int   *VUpdateOffsetPix,
769dda4fb85SAurabindo Pillai 		double   *VUpdateWidthPix,
770dda4fb85SAurabindo Pillai 		double   *VReadyOffsetPix);
771dda4fb85SAurabindo Pillai 
772dda4fb85SAurabindo Pillai void dml32_CalculateFlipSchedule(
773dda4fb85SAurabindo Pillai 		double HostVMInefficiencyFactor,
774dda4fb85SAurabindo Pillai 		double UrgentExtraLatency,
775dda4fb85SAurabindo Pillai 		double UrgentLatency,
776dda4fb85SAurabindo Pillai 		unsigned int GPUVMMaxPageTableLevels,
777dda4fb85SAurabindo Pillai 		bool HostVMEnable,
778dda4fb85SAurabindo Pillai 		unsigned int HostVMMaxNonCachedPageTableLevels,
779dda4fb85SAurabindo Pillai 		bool GPUVMEnable,
780dda4fb85SAurabindo Pillai 		double HostVMMinPageSize,
781dda4fb85SAurabindo Pillai 		double PDEAndMetaPTEBytesPerFrame,
782dda4fb85SAurabindo Pillai 		double MetaRowBytes,
783dda4fb85SAurabindo Pillai 		double DPTEBytesPerRow,
784dda4fb85SAurabindo Pillai 		double BandwidthAvailableForImmediateFlip,
785dda4fb85SAurabindo Pillai 		unsigned int TotImmediateFlipBytes,
786dda4fb85SAurabindo Pillai 		enum source_format_class SourcePixelFormat,
787dda4fb85SAurabindo Pillai 		double LineTime,
788dda4fb85SAurabindo Pillai 		double VRatio,
789dda4fb85SAurabindo Pillai 		double VRatioChroma,
790dda4fb85SAurabindo Pillai 		double Tno_bw,
791dda4fb85SAurabindo Pillai 		bool DCCEnable,
792dda4fb85SAurabindo Pillai 		unsigned int dpte_row_height,
793dda4fb85SAurabindo Pillai 		unsigned int meta_row_height,
794dda4fb85SAurabindo Pillai 		unsigned int dpte_row_height_chroma,
795dda4fb85SAurabindo Pillai 		unsigned int meta_row_height_chroma,
796dda4fb85SAurabindo Pillai 		bool    use_one_row_for_frame_flip,
797dda4fb85SAurabindo Pillai 
798dda4fb85SAurabindo Pillai 		/* Output */
799dda4fb85SAurabindo Pillai 		double *DestinationLinesToRequestVMInImmediateFlip,
800dda4fb85SAurabindo Pillai 		double *DestinationLinesToRequestRowInImmediateFlip,
801dda4fb85SAurabindo Pillai 		double *final_flip_bw,
802dda4fb85SAurabindo Pillai 		bool *ImmediateFlipSupportedForPipe);
803dda4fb85SAurabindo Pillai 
804dda4fb85SAurabindo Pillai void dml32_CalculateWatermarksMALLUseAndDRAMSpeedChangeSupport(
8051df7e569SNathan Chancellor 		struct vba_vars_st *v,
806dda4fb85SAurabindo Pillai 		unsigned int PrefetchMode,
807dda4fb85SAurabindo Pillai 		double DCFCLK,
808dda4fb85SAurabindo Pillai 		double ReturnBW,
809dda4fb85SAurabindo Pillai 		SOCParametersList mmSOCParameters,
810dda4fb85SAurabindo Pillai 		double SOCCLK,
811dda4fb85SAurabindo Pillai 		double DCFClkDeepSleep,
812dda4fb85SAurabindo Pillai 		unsigned int DETBufferSizeY[],
813dda4fb85SAurabindo Pillai 		unsigned int DETBufferSizeC[],
814dda4fb85SAurabindo Pillai 		unsigned int SwathHeightY[],
815dda4fb85SAurabindo Pillai 		unsigned int SwathHeightC[],
816dda4fb85SAurabindo Pillai 		double SwathWidthY[],
817dda4fb85SAurabindo Pillai 		double SwathWidthC[],
818dda4fb85SAurabindo Pillai 		unsigned int DPPPerSurface[],
819dda4fb85SAurabindo Pillai 		double BytePerPixelDETY[],
820dda4fb85SAurabindo Pillai 		double BytePerPixelDETC[],
821dda4fb85SAurabindo Pillai 		double DSTXAfterScaler[],
822dda4fb85SAurabindo Pillai 		double DSTYAfterScaler[],
823dda4fb85SAurabindo Pillai 		bool UnboundedRequestEnabled,
824dda4fb85SAurabindo Pillai 		unsigned int CompressedBufferSizeInkByte,
825dda4fb85SAurabindo Pillai 
826dda4fb85SAurabindo Pillai 		/* Output */
827dda4fb85SAurabindo Pillai 		enum clock_change_support *DRAMClockChangeSupport,
828dda4fb85SAurabindo Pillai 		double MaxActiveDRAMClockChangeLatencySupported[],
829dda4fb85SAurabindo Pillai 		unsigned int SubViewportLinesNeededInMALL[],
830dda4fb85SAurabindo Pillai 		enum dm_fclock_change_support *FCLKChangeSupport,
831dda4fb85SAurabindo Pillai 		double *MinActiveFCLKChangeLatencySupported,
832dda4fb85SAurabindo Pillai 		bool *USRRetrainingSupport,
833dda4fb85SAurabindo Pillai 		double ActiveDRAMClockChangeLatencyMargin[]);
834dda4fb85SAurabindo Pillai 
835dda4fb85SAurabindo Pillai double dml32_CalculateWriteBackDISPCLK(
836dda4fb85SAurabindo Pillai 		enum source_format_class WritebackPixelFormat,
837dda4fb85SAurabindo Pillai 		double PixelClock,
838dda4fb85SAurabindo Pillai 		double WritebackHRatio,
839dda4fb85SAurabindo Pillai 		double WritebackVRatio,
840dda4fb85SAurabindo Pillai 		unsigned int WritebackHTaps,
841dda4fb85SAurabindo Pillai 		unsigned int WritebackVTaps,
842dda4fb85SAurabindo Pillai 		unsigned int   WritebackSourceWidth,
843dda4fb85SAurabindo Pillai 		unsigned int   WritebackDestinationWidth,
844dda4fb85SAurabindo Pillai 		unsigned int HTotal,
845dda4fb85SAurabindo Pillai 		unsigned int WritebackLineBufferSize,
846dda4fb85SAurabindo Pillai 		double DISPCLKDPPCLKVCOSpeed);
847dda4fb85SAurabindo Pillai 
848dda4fb85SAurabindo Pillai void dml32_CalculateMinAndMaxPrefetchMode(
849dda4fb85SAurabindo Pillai 		enum dm_prefetch_modes   AllowForPStateChangeOrStutterInVBlankFinal,
850dda4fb85SAurabindo Pillai 		unsigned int             *MinPrefetchMode,
851dda4fb85SAurabindo Pillai 		unsigned int             *MaxPrefetchMode);
852dda4fb85SAurabindo Pillai 
853dda4fb85SAurabindo Pillai void dml32_CalculatePixelDeliveryTimes(
854dda4fb85SAurabindo Pillai 		unsigned int             NumberOfActiveSurfaces,
855dda4fb85SAurabindo Pillai 		double              VRatio[],
856dda4fb85SAurabindo Pillai 		double              VRatioChroma[],
857dda4fb85SAurabindo Pillai 		double              VRatioPrefetchY[],
858dda4fb85SAurabindo Pillai 		double              VRatioPrefetchC[],
859dda4fb85SAurabindo Pillai 		unsigned int             swath_width_luma_ub[],
860dda4fb85SAurabindo Pillai 		unsigned int             swath_width_chroma_ub[],
861dda4fb85SAurabindo Pillai 		unsigned int             DPPPerSurface[],
862dda4fb85SAurabindo Pillai 		double              HRatio[],
863dda4fb85SAurabindo Pillai 		double              HRatioChroma[],
864dda4fb85SAurabindo Pillai 		double              PixelClock[],
865dda4fb85SAurabindo Pillai 		double              PSCL_THROUGHPUT[],
866dda4fb85SAurabindo Pillai 		double              PSCL_THROUGHPUT_CHROMA[],
867dda4fb85SAurabindo Pillai 		double              Dppclk[],
868dda4fb85SAurabindo Pillai 		unsigned int             BytePerPixelC[],
869dda4fb85SAurabindo Pillai 		enum dm_rotation_angle   SourceRotation[],
870dda4fb85SAurabindo Pillai 		unsigned int             NumberOfCursors[],
871dda4fb85SAurabindo Pillai 		unsigned int             CursorWidth[][DC__NUM_CURSOR__MAX],
872dda4fb85SAurabindo Pillai 		unsigned int             CursorBPP[][DC__NUM_CURSOR__MAX],
873dda4fb85SAurabindo Pillai 		unsigned int             BlockWidth256BytesY[],
874dda4fb85SAurabindo Pillai 		unsigned int             BlockHeight256BytesY[],
875dda4fb85SAurabindo Pillai 		unsigned int             BlockWidth256BytesC[],
876dda4fb85SAurabindo Pillai 		unsigned int             BlockHeight256BytesC[],
877dda4fb85SAurabindo Pillai 
878dda4fb85SAurabindo Pillai 		/* Output */
879dda4fb85SAurabindo Pillai 		double              DisplayPipeLineDeliveryTimeLuma[],
880dda4fb85SAurabindo Pillai 		double              DisplayPipeLineDeliveryTimeChroma[],
881dda4fb85SAurabindo Pillai 		double              DisplayPipeLineDeliveryTimeLumaPrefetch[],
882dda4fb85SAurabindo Pillai 		double              DisplayPipeLineDeliveryTimeChromaPrefetch[],
883dda4fb85SAurabindo Pillai 		double              DisplayPipeRequestDeliveryTimeLuma[],
884dda4fb85SAurabindo Pillai 		double              DisplayPipeRequestDeliveryTimeChroma[],
885dda4fb85SAurabindo Pillai 		double              DisplayPipeRequestDeliveryTimeLumaPrefetch[],
886dda4fb85SAurabindo Pillai 		double              DisplayPipeRequestDeliveryTimeChromaPrefetch[],
887dda4fb85SAurabindo Pillai 		double              CursorRequestDeliveryTime[],
888dda4fb85SAurabindo Pillai 		double              CursorRequestDeliveryTimePrefetch[]);
889dda4fb85SAurabindo Pillai 
890dda4fb85SAurabindo Pillai void dml32_CalculateMetaAndPTETimes(
891dda4fb85SAurabindo Pillai 		bool use_one_row_for_frame[],
892dda4fb85SAurabindo Pillai 		unsigned int NumberOfActiveSurfaces,
893dda4fb85SAurabindo Pillai 		bool GPUVMEnable,
894dda4fb85SAurabindo Pillai 		unsigned int MetaChunkSize,
895dda4fb85SAurabindo Pillai 		unsigned int MinMetaChunkSizeBytes,
896dda4fb85SAurabindo Pillai 		unsigned int    HTotal[],
897dda4fb85SAurabindo Pillai 		double  VRatio[],
898dda4fb85SAurabindo Pillai 		double  VRatioChroma[],
899dda4fb85SAurabindo Pillai 		double  DestinationLinesToRequestRowInVBlank[],
900dda4fb85SAurabindo Pillai 		double  DestinationLinesToRequestRowInImmediateFlip[],
901dda4fb85SAurabindo Pillai 		bool DCCEnable[],
902dda4fb85SAurabindo Pillai 		double  PixelClock[],
903dda4fb85SAurabindo Pillai 		unsigned int BytePerPixelY[],
904dda4fb85SAurabindo Pillai 		unsigned int BytePerPixelC[],
905dda4fb85SAurabindo Pillai 		enum dm_rotation_angle SourceRotation[],
906dda4fb85SAurabindo Pillai 		unsigned int dpte_row_height[],
907dda4fb85SAurabindo Pillai 		unsigned int dpte_row_height_chroma[],
908dda4fb85SAurabindo Pillai 		unsigned int meta_row_width[],
909dda4fb85SAurabindo Pillai 		unsigned int meta_row_width_chroma[],
910dda4fb85SAurabindo Pillai 		unsigned int meta_row_height[],
911dda4fb85SAurabindo Pillai 		unsigned int meta_row_height_chroma[],
912dda4fb85SAurabindo Pillai 		unsigned int meta_req_width[],
913dda4fb85SAurabindo Pillai 		unsigned int meta_req_width_chroma[],
914dda4fb85SAurabindo Pillai 		unsigned int meta_req_height[],
915dda4fb85SAurabindo Pillai 		unsigned int meta_req_height_chroma[],
916dda4fb85SAurabindo Pillai 		unsigned int dpte_group_bytes[],
917dda4fb85SAurabindo Pillai 		unsigned int    PTERequestSizeY[],
918dda4fb85SAurabindo Pillai 		unsigned int    PTERequestSizeC[],
919dda4fb85SAurabindo Pillai 		unsigned int    PixelPTEReqWidthY[],
920dda4fb85SAurabindo Pillai 		unsigned int    PixelPTEReqHeightY[],
921dda4fb85SAurabindo Pillai 		unsigned int    PixelPTEReqWidthC[],
922dda4fb85SAurabindo Pillai 		unsigned int    PixelPTEReqHeightC[],
923dda4fb85SAurabindo Pillai 		unsigned int    dpte_row_width_luma_ub[],
924dda4fb85SAurabindo Pillai 		unsigned int    dpte_row_width_chroma_ub[],
925dda4fb85SAurabindo Pillai 
926dda4fb85SAurabindo Pillai 		/* Output */
927dda4fb85SAurabindo Pillai 		double DST_Y_PER_PTE_ROW_NOM_L[],
928dda4fb85SAurabindo Pillai 		double DST_Y_PER_PTE_ROW_NOM_C[],
929dda4fb85SAurabindo Pillai 		double DST_Y_PER_META_ROW_NOM_L[],
930dda4fb85SAurabindo Pillai 		double DST_Y_PER_META_ROW_NOM_C[],
931dda4fb85SAurabindo Pillai 		double TimePerMetaChunkNominal[],
932dda4fb85SAurabindo Pillai 		double TimePerChromaMetaChunkNominal[],
933dda4fb85SAurabindo Pillai 		double TimePerMetaChunkVBlank[],
934dda4fb85SAurabindo Pillai 		double TimePerChromaMetaChunkVBlank[],
935dda4fb85SAurabindo Pillai 		double TimePerMetaChunkFlip[],
936dda4fb85SAurabindo Pillai 		double TimePerChromaMetaChunkFlip[],
937dda4fb85SAurabindo Pillai 		double time_per_pte_group_nom_luma[],
938dda4fb85SAurabindo Pillai 		double time_per_pte_group_vblank_luma[],
939dda4fb85SAurabindo Pillai 		double time_per_pte_group_flip_luma[],
940dda4fb85SAurabindo Pillai 		double time_per_pte_group_nom_chroma[],
941dda4fb85SAurabindo Pillai 		double time_per_pte_group_vblank_chroma[],
942dda4fb85SAurabindo Pillai 		double time_per_pte_group_flip_chroma[]);
943dda4fb85SAurabindo Pillai 
944dda4fb85SAurabindo Pillai void dml32_CalculateVMGroupAndRequestTimes(
945dda4fb85SAurabindo Pillai 		unsigned int     NumberOfActiveSurfaces,
946dda4fb85SAurabindo Pillai 		bool     GPUVMEnable,
947dda4fb85SAurabindo Pillai 		unsigned int     GPUVMMaxPageTableLevels,
948dda4fb85SAurabindo Pillai 		unsigned int     HTotal[],
949dda4fb85SAurabindo Pillai 		unsigned int     BytePerPixelC[],
950dda4fb85SAurabindo Pillai 		double      DestinationLinesToRequestVMInVBlank[],
951dda4fb85SAurabindo Pillai 		double      DestinationLinesToRequestVMInImmediateFlip[],
952dda4fb85SAurabindo Pillai 		bool     DCCEnable[],
953dda4fb85SAurabindo Pillai 		double      PixelClock[],
954dda4fb85SAurabindo Pillai 		unsigned int        dpte_row_width_luma_ub[],
955dda4fb85SAurabindo Pillai 		unsigned int        dpte_row_width_chroma_ub[],
956dda4fb85SAurabindo Pillai 		unsigned int     vm_group_bytes[],
957dda4fb85SAurabindo Pillai 		unsigned int     dpde0_bytes_per_frame_ub_l[],
958dda4fb85SAurabindo Pillai 		unsigned int     dpde0_bytes_per_frame_ub_c[],
959dda4fb85SAurabindo Pillai 		unsigned int        meta_pte_bytes_per_frame_ub_l[],
960dda4fb85SAurabindo Pillai 		unsigned int        meta_pte_bytes_per_frame_ub_c[],
961dda4fb85SAurabindo Pillai 
962dda4fb85SAurabindo Pillai 		/* Output */
963dda4fb85SAurabindo Pillai 		double      TimePerVMGroupVBlank[],
964dda4fb85SAurabindo Pillai 		double      TimePerVMGroupFlip[],
965dda4fb85SAurabindo Pillai 		double      TimePerVMRequestVBlank[],
966dda4fb85SAurabindo Pillai 		double      TimePerVMRequestFlip[]);
967dda4fb85SAurabindo Pillai 
968dda4fb85SAurabindo Pillai void dml32_CalculateDCCConfiguration(
969dda4fb85SAurabindo Pillai 		bool             DCCEnabled,
970dda4fb85SAurabindo Pillai 		bool             DCCProgrammingAssumesScanDirectionUnknown,
971dda4fb85SAurabindo Pillai 		enum source_format_class SourcePixelFormat,
972dda4fb85SAurabindo Pillai 		unsigned int             SurfaceWidthLuma,
973dda4fb85SAurabindo Pillai 		unsigned int             SurfaceWidthChroma,
974dda4fb85SAurabindo Pillai 		unsigned int             SurfaceHeightLuma,
975dda4fb85SAurabindo Pillai 		unsigned int             SurfaceHeightChroma,
976dda4fb85SAurabindo Pillai 		unsigned int                nomDETInKByte,
977dda4fb85SAurabindo Pillai 		unsigned int             RequestHeight256ByteLuma,
978dda4fb85SAurabindo Pillai 		unsigned int             RequestHeight256ByteChroma,
979dda4fb85SAurabindo Pillai 		enum dm_swizzle_mode     TilingFormat,
980dda4fb85SAurabindo Pillai 		unsigned int             BytePerPixelY,
981dda4fb85SAurabindo Pillai 		unsigned int             BytePerPixelC,
982dda4fb85SAurabindo Pillai 		double              BytePerPixelDETY,
983dda4fb85SAurabindo Pillai 		double              BytePerPixelDETC,
984dda4fb85SAurabindo Pillai 		enum dm_rotation_angle   SourceRotation,
985dda4fb85SAurabindo Pillai 		/* Output */
986dda4fb85SAurabindo Pillai 		unsigned int        *MaxUncompressedBlockLuma,
987dda4fb85SAurabindo Pillai 		unsigned int        *MaxUncompressedBlockChroma,
988dda4fb85SAurabindo Pillai 		unsigned int        *MaxCompressedBlockLuma,
989dda4fb85SAurabindo Pillai 		unsigned int        *MaxCompressedBlockChroma,
990dda4fb85SAurabindo Pillai 		unsigned int        *IndependentBlockLuma,
991dda4fb85SAurabindo Pillai 		unsigned int        *IndependentBlockChroma);
992dda4fb85SAurabindo Pillai 
993dda4fb85SAurabindo Pillai void dml32_CalculateStutterEfficiency(
994dda4fb85SAurabindo Pillai 		unsigned int      CompressedBufferSizeInkByte,
995dda4fb85SAurabindo Pillai 		enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange[],
996dda4fb85SAurabindo Pillai 		bool   UnboundedRequestEnabled,
997dda4fb85SAurabindo Pillai 		unsigned int      MetaFIFOSizeInKEntries,
998dda4fb85SAurabindo Pillai 		unsigned int      ZeroSizeBufferEntries,
999dda4fb85SAurabindo Pillai 		unsigned int      PixelChunkSizeInKByte,
1000dda4fb85SAurabindo Pillai 		unsigned int   NumberOfActiveSurfaces,
1001dda4fb85SAurabindo Pillai 		unsigned int      ROBBufferSizeInKByte,
1002dda4fb85SAurabindo Pillai 		double    TotalDataReadBandwidth,
1003dda4fb85SAurabindo Pillai 		double    DCFCLK,
1004dda4fb85SAurabindo Pillai 		double    ReturnBW,
1005dda4fb85SAurabindo Pillai 		unsigned int      CompbufReservedSpace64B,
1006dda4fb85SAurabindo Pillai 		unsigned int      CompbufReservedSpaceZs,
1007dda4fb85SAurabindo Pillai 		double    SRExitTime,
1008dda4fb85SAurabindo Pillai 		double    SRExitZ8Time,
1009dda4fb85SAurabindo Pillai 		bool   SynchronizeTimingsFinal,
1010dda4fb85SAurabindo Pillai 		unsigned int   BlendingAndTiming[],
1011dda4fb85SAurabindo Pillai 		double    StutterEnterPlusExitWatermark,
1012dda4fb85SAurabindo Pillai 		double    Z8StutterEnterPlusExitWatermark,
1013dda4fb85SAurabindo Pillai 		bool   ProgressiveToInterlaceUnitInOPP,
1014dda4fb85SAurabindo Pillai 		bool   Interlace[],
1015dda4fb85SAurabindo Pillai 		double    MinTTUVBlank[],
1016dda4fb85SAurabindo Pillai 		unsigned int   DPPPerSurface[],
1017dda4fb85SAurabindo Pillai 		unsigned int      DETBufferSizeY[],
1018dda4fb85SAurabindo Pillai 		unsigned int   BytePerPixelY[],
1019dda4fb85SAurabindo Pillai 		double    BytePerPixelDETY[],
1020dda4fb85SAurabindo Pillai 		double      SwathWidthY[],
1021dda4fb85SAurabindo Pillai 		unsigned int   SwathHeightY[],
1022dda4fb85SAurabindo Pillai 		unsigned int   SwathHeightC[],
1023dda4fb85SAurabindo Pillai 		double    NetDCCRateLuma[],
1024dda4fb85SAurabindo Pillai 		double    NetDCCRateChroma[],
1025dda4fb85SAurabindo Pillai 		double    DCCFractionOfZeroSizeRequestsLuma[],
1026dda4fb85SAurabindo Pillai 		double    DCCFractionOfZeroSizeRequestsChroma[],
1027dda4fb85SAurabindo Pillai 		unsigned int      HTotal[],
1028dda4fb85SAurabindo Pillai 		unsigned int      VTotal[],
1029dda4fb85SAurabindo Pillai 		double    PixelClock[],
1030dda4fb85SAurabindo Pillai 		double    VRatio[],
1031dda4fb85SAurabindo Pillai 		enum dm_rotation_angle SourceRotation[],
1032dda4fb85SAurabindo Pillai 		unsigned int   BlockHeight256BytesY[],
1033dda4fb85SAurabindo Pillai 		unsigned int   BlockWidth256BytesY[],
1034dda4fb85SAurabindo Pillai 		unsigned int   BlockHeight256BytesC[],
1035dda4fb85SAurabindo Pillai 		unsigned int   BlockWidth256BytesC[],
1036dda4fb85SAurabindo Pillai 		unsigned int   DCCYMaxUncompressedBlock[],
1037dda4fb85SAurabindo Pillai 		unsigned int   DCCCMaxUncompressedBlock[],
1038dda4fb85SAurabindo Pillai 		unsigned int      VActive[],
1039dda4fb85SAurabindo Pillai 		bool   DCCEnable[],
1040dda4fb85SAurabindo Pillai 		bool   WritebackEnable[],
1041dda4fb85SAurabindo Pillai 		double    ReadBandwidthSurfaceLuma[],
1042dda4fb85SAurabindo Pillai 		double    ReadBandwidthSurfaceChroma[],
1043dda4fb85SAurabindo Pillai 		double    meta_row_bw[],
1044dda4fb85SAurabindo Pillai 		double    dpte_row_bw[],
1045dda4fb85SAurabindo Pillai 
1046dda4fb85SAurabindo Pillai 		/* Output */
1047dda4fb85SAurabindo Pillai 		double   *StutterEfficiencyNotIncludingVBlank,
1048dda4fb85SAurabindo Pillai 		double   *StutterEfficiency,
1049dda4fb85SAurabindo Pillai 		unsigned int     *NumberOfStutterBurstsPerFrame,
1050dda4fb85SAurabindo Pillai 		double   *Z8StutterEfficiencyNotIncludingVBlank,
1051dda4fb85SAurabindo Pillai 		double   *Z8StutterEfficiency,
1052dda4fb85SAurabindo Pillai 		unsigned int     *Z8NumberOfStutterBurstsPerFrame,
1053dda4fb85SAurabindo Pillai 		double   *StutterPeriod,
1054dda4fb85SAurabindo Pillai 		bool  *DCHUBBUB_ARB_CSTATE_MAX_CAP_MODE);
1055dda4fb85SAurabindo Pillai 
1056dda4fb85SAurabindo Pillai void dml32_CalculateMaxDETAndMinCompressedBufferSize(
1057dda4fb85SAurabindo Pillai 		unsigned int    ConfigReturnBufferSizeInKByte,
1058dda4fb85SAurabindo Pillai 		unsigned int    ROBBufferSizeInKByte,
1059dda4fb85SAurabindo Pillai 		unsigned int MaxNumDPP,
1060dda4fb85SAurabindo Pillai 		bool nomDETInKByteOverrideEnable, // VBA_DELTA, allow DV to override default DET size
1061dda4fb85SAurabindo Pillai 		unsigned int nomDETInKByteOverrideValue,  // VBA_DELTA
1062dda4fb85SAurabindo Pillai 
1063dda4fb85SAurabindo Pillai 		/* Output */
1064dda4fb85SAurabindo Pillai 		unsigned int *MaxTotalDETInKByte,
1065dda4fb85SAurabindo Pillai 		unsigned int *nomDETInKByte,
1066dda4fb85SAurabindo Pillai 		unsigned int *MinCompressedBufferSizeInKByte);
1067dda4fb85SAurabindo Pillai 
1068dda4fb85SAurabindo Pillai bool dml32_CalculateVActiveBandwithSupport(unsigned int NumberOfActiveSurfaces,
1069dda4fb85SAurabindo Pillai 		double ReturnBW,
1070dda4fb85SAurabindo Pillai 		bool NotUrgentLatencyHiding[],
1071dda4fb85SAurabindo Pillai 		double ReadBandwidthLuma[],
1072dda4fb85SAurabindo Pillai 		double ReadBandwidthChroma[],
1073dda4fb85SAurabindo Pillai 		double cursor_bw[],
1074dda4fb85SAurabindo Pillai 		double meta_row_bandwidth[],
1075dda4fb85SAurabindo Pillai 		double dpte_row_bandwidth[],
1076dda4fb85SAurabindo Pillai 		unsigned int NumberOfDPP[],
1077dda4fb85SAurabindo Pillai 		double UrgentBurstFactorLuma[],
1078dda4fb85SAurabindo Pillai 		double UrgentBurstFactorChroma[],
1079dda4fb85SAurabindo Pillai 		double UrgentBurstFactorCursor[]);
1080dda4fb85SAurabindo Pillai 
1081dda4fb85SAurabindo Pillai void dml32_CalculatePrefetchBandwithSupport(unsigned int NumberOfActiveSurfaces,
1082dda4fb85SAurabindo Pillai 		double ReturnBW,
1083dda4fb85SAurabindo Pillai 		bool NotUrgentLatencyHiding[],
1084dda4fb85SAurabindo Pillai 		double ReadBandwidthLuma[],
1085dda4fb85SAurabindo Pillai 		double ReadBandwidthChroma[],
1086dda4fb85SAurabindo Pillai 		double PrefetchBandwidthLuma[],
1087dda4fb85SAurabindo Pillai 		double PrefetchBandwidthChroma[],
1088dda4fb85SAurabindo Pillai 		double cursor_bw[],
1089dda4fb85SAurabindo Pillai 		double meta_row_bandwidth[],
1090dda4fb85SAurabindo Pillai 		double dpte_row_bandwidth[],
1091dda4fb85SAurabindo Pillai 		double cursor_bw_pre[],
1092dda4fb85SAurabindo Pillai 		double prefetch_vmrow_bw[],
1093dda4fb85SAurabindo Pillai 		unsigned int NumberOfDPP[],
1094dda4fb85SAurabindo Pillai 		double UrgentBurstFactorLuma[],
1095dda4fb85SAurabindo Pillai 		double UrgentBurstFactorChroma[],
1096dda4fb85SAurabindo Pillai 		double UrgentBurstFactorCursor[],
1097dda4fb85SAurabindo Pillai 		double UrgentBurstFactorLumaPre[],
1098dda4fb85SAurabindo Pillai 		double UrgentBurstFactorChromaPre[],
1099dda4fb85SAurabindo Pillai 		double UrgentBurstFactorCursorPre[],
11003a615704SAlvin Lee 		double PrefetchBW[],
11013a615704SAlvin Lee 		double VRatio[],
11023a615704SAlvin Lee 		double MaxVRatioPre,
1103dda4fb85SAurabindo Pillai 
1104dda4fb85SAurabindo Pillai 		/* output */
11053a615704SAlvin Lee 		double  *MaxPrefetchBandwidth,
1106dda4fb85SAurabindo Pillai 		double  *FractionOfUrgentBandwidth,
1107dda4fb85SAurabindo Pillai 		bool *PrefetchBandwidthSupport);
1108dda4fb85SAurabindo Pillai 
1109dda4fb85SAurabindo Pillai double dml32_CalculateBandwidthAvailableForImmediateFlip(unsigned int NumberOfActiveSurfaces,
1110dda4fb85SAurabindo Pillai 		double ReturnBW,
1111dda4fb85SAurabindo Pillai 		double ReadBandwidthLuma[],
1112dda4fb85SAurabindo Pillai 		double ReadBandwidthChroma[],
1113dda4fb85SAurabindo Pillai 		double PrefetchBandwidthLuma[],
1114dda4fb85SAurabindo Pillai 		double PrefetchBandwidthChroma[],
1115dda4fb85SAurabindo Pillai 		double cursor_bw[],
1116dda4fb85SAurabindo Pillai 		double cursor_bw_pre[],
1117dda4fb85SAurabindo Pillai 		unsigned int NumberOfDPP[],
1118dda4fb85SAurabindo Pillai 		double UrgentBurstFactorLuma[],
1119dda4fb85SAurabindo Pillai 		double UrgentBurstFactorChroma[],
1120dda4fb85SAurabindo Pillai 		double UrgentBurstFactorCursor[],
1121dda4fb85SAurabindo Pillai 		double UrgentBurstFactorLumaPre[],
1122dda4fb85SAurabindo Pillai 		double UrgentBurstFactorChromaPre[],
1123dda4fb85SAurabindo Pillai 		double UrgentBurstFactorCursorPre[]);
1124dda4fb85SAurabindo Pillai 
1125dda4fb85SAurabindo Pillai void dml32_CalculateImmediateFlipBandwithSupport(unsigned int NumberOfActiveSurfaces,
1126dda4fb85SAurabindo Pillai 		double ReturnBW,
1127dda4fb85SAurabindo Pillai 		enum immediate_flip_requirement ImmediateFlipRequirement[],
1128dda4fb85SAurabindo Pillai 		double final_flip_bw[],
1129dda4fb85SAurabindo Pillai 		double ReadBandwidthLuma[],
1130dda4fb85SAurabindo Pillai 		double ReadBandwidthChroma[],
1131dda4fb85SAurabindo Pillai 		double PrefetchBandwidthLuma[],
1132dda4fb85SAurabindo Pillai 		double PrefetchBandwidthChroma[],
1133dda4fb85SAurabindo Pillai 		double cursor_bw[],
1134dda4fb85SAurabindo Pillai 		double meta_row_bandwidth[],
1135dda4fb85SAurabindo Pillai 		double dpte_row_bandwidth[],
1136dda4fb85SAurabindo Pillai 		double cursor_bw_pre[],
1137dda4fb85SAurabindo Pillai 		double prefetch_vmrow_bw[],
1138dda4fb85SAurabindo Pillai 		unsigned int NumberOfDPP[],
1139dda4fb85SAurabindo Pillai 		double UrgentBurstFactorLuma[],
1140dda4fb85SAurabindo Pillai 		double UrgentBurstFactorChroma[],
1141dda4fb85SAurabindo Pillai 		double UrgentBurstFactorCursor[],
1142dda4fb85SAurabindo Pillai 		double UrgentBurstFactorLumaPre[],
1143dda4fb85SAurabindo Pillai 		double UrgentBurstFactorChromaPre[],
1144dda4fb85SAurabindo Pillai 		double UrgentBurstFactorCursorPre[],
1145dda4fb85SAurabindo Pillai 
1146dda4fb85SAurabindo Pillai 		/* output */
1147dda4fb85SAurabindo Pillai 		double  *TotalBandwidth,
1148dda4fb85SAurabindo Pillai 		double  *FractionOfUrgentBandwidth,
1149dda4fb85SAurabindo Pillai 		bool *ImmediateFlipBandwidthSupport);
1150dda4fb85SAurabindo Pillai 
11516d4727c8SDillon Varone bool dml32_CalculateDETSwathFillLatencyHiding(unsigned int NumberOfActiveSurfaces,
11526d4727c8SDillon Varone 		double ReturnBW,
11536d4727c8SDillon Varone 		double UrgentLatency,
11546d4727c8SDillon Varone 		unsigned int SwathHeightY[],
11556d4727c8SDillon Varone 		unsigned int SwathHeightC[],
11566d4727c8SDillon Varone 		unsigned int SwathWidthY[],
11576d4727c8SDillon Varone 		unsigned int SwathWidthC[],
11586d4727c8SDillon Varone 		double  BytePerPixelInDETY[],
11596d4727c8SDillon Varone 		double  BytePerPixelInDETC[],
11606d4727c8SDillon Varone 		unsigned int    DETBufferSizeY[],
11616d4727c8SDillon Varone 		unsigned int    DETBufferSizeC[],
11626d4727c8SDillon Varone 		unsigned int	NumOfDPP[],
11636d4727c8SDillon Varone 		unsigned int	HTotal[],
11646d4727c8SDillon Varone 		double	PixelClock[],
11656d4727c8SDillon Varone 		double	VRatioY[],
11666d4727c8SDillon Varone 		double	VRatioC[],
1167de930140SAlvin Lee 		enum dm_use_mall_for_pstate_change_mode UsesMALLForPStateChange[],
1168de930140SAlvin Lee 		enum unbounded_requesting_policy UseUnboundedRequesting);
11696d4727c8SDillon Varone 
1170dda4fb85SAurabindo Pillai #endif
1171