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

source code of linux/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h