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