1 /* 2 * Copyright 2017 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 #ifdef CONFIG_DRM_AMD_DC_DCN2_0 27 28 #ifndef __DML2_DISPLAY_MODE_VBA_H__ 29 #define __DML2_DISPLAY_MODE_VBA_H__ 30 31 #include "dml_common_defs.h" 32 33 struct display_mode_lib; 34 35 void ModeSupportAndSystemConfiguration(struct display_mode_lib *mode_lib); 36 37 #define dml_get_attr_decl(attr) double get_##attr(struct display_mode_lib *mode_lib, const display_e2e_pipe_params_st *pipes, unsigned int num_pipes) 38 39 dml_get_attr_decl(clk_dcf_deepsleep); 40 dml_get_attr_decl(wm_urgent); 41 dml_get_attr_decl(wm_memory_trip); 42 dml_get_attr_decl(wm_writeback_urgent); 43 dml_get_attr_decl(wm_stutter_exit); 44 dml_get_attr_decl(wm_stutter_enter_exit); 45 dml_get_attr_decl(wm_dram_clock_change); 46 dml_get_attr_decl(wm_writeback_dram_clock_change); 47 dml_get_attr_decl(wm_xfc_underflow); 48 dml_get_attr_decl(stutter_efficiency_no_vblank); 49 dml_get_attr_decl(stutter_efficiency); 50 dml_get_attr_decl(urgent_latency); 51 dml_get_attr_decl(urgent_extra_latency); 52 dml_get_attr_decl(nonurgent_latency); 53 dml_get_attr_decl(dram_clock_change_latency); 54 dml_get_attr_decl(dispclk_calculated); 55 dml_get_attr_decl(total_data_read_bw); 56 dml_get_attr_decl(return_bw); 57 dml_get_attr_decl(tcalc); 58 dml_get_attr_decl(fraction_of_urgent_bandwidth); 59 dml_get_attr_decl(fraction_of_urgent_bandwidth_imm_flip); 60 61 #define dml_get_pipe_attr_decl(attr) double get_##attr(struct display_mode_lib *mode_lib, const display_e2e_pipe_params_st *pipes, unsigned int num_pipes, unsigned int which_pipe) 62 63 dml_get_pipe_attr_decl(dsc_delay); 64 dml_get_pipe_attr_decl(dppclk_calculated); 65 dml_get_pipe_attr_decl(dscclk_calculated); 66 dml_get_pipe_attr_decl(min_ttu_vblank); 67 dml_get_pipe_attr_decl(vratio_prefetch_l); 68 dml_get_pipe_attr_decl(vratio_prefetch_c); 69 dml_get_pipe_attr_decl(dst_x_after_scaler); 70 dml_get_pipe_attr_decl(dst_y_after_scaler); 71 dml_get_pipe_attr_decl(dst_y_per_vm_vblank); 72 dml_get_pipe_attr_decl(dst_y_per_row_vblank); 73 dml_get_pipe_attr_decl(dst_y_prefetch); 74 dml_get_pipe_attr_decl(dst_y_per_vm_flip); 75 dml_get_pipe_attr_decl(dst_y_per_row_flip); 76 dml_get_pipe_attr_decl(xfc_transfer_delay); 77 dml_get_pipe_attr_decl(xfc_precharge_delay); 78 dml_get_pipe_attr_decl(xfc_remote_surface_flip_latency); 79 dml_get_pipe_attr_decl(xfc_prefetch_margin); 80 dml_get_pipe_attr_decl(refcyc_per_vm_group_vblank); 81 dml_get_pipe_attr_decl(refcyc_per_vm_group_flip); 82 dml_get_pipe_attr_decl(refcyc_per_vm_req_vblank); 83 dml_get_pipe_attr_decl(refcyc_per_vm_req_flip); 84 85 unsigned int get_vstartup_calculated( 86 struct display_mode_lib *mode_lib, 87 const display_e2e_pipe_params_st *pipes, 88 unsigned int num_pipes, 89 unsigned int which_pipe); 90 91 double get_total_immediate_flip_bytes( 92 struct display_mode_lib *mode_lib, 93 const display_e2e_pipe_params_st *pipes, 94 unsigned int num_pipes); 95 double get_total_immediate_flip_bw( 96 struct display_mode_lib *mode_lib, 97 const display_e2e_pipe_params_st *pipes, 98 unsigned int num_pipes); 99 double get_total_prefetch_bw( 100 struct display_mode_lib *mode_lib, 101 const display_e2e_pipe_params_st *pipes, 102 unsigned int num_pipes); 103 unsigned int dml_get_voltage_level( 104 struct display_mode_lib *mode_lib, 105 const display_e2e_pipe_params_st *pipes, 106 unsigned int num_pipes); 107 108 void PixelClockAdjustmentForProgressiveToInterlaceUnit(struct display_mode_lib *mode_lib); 109 110 bool Calculate256BBlockSizes( 111 enum source_format_class SourcePixelFormat, 112 enum dm_swizzle_mode SurfaceTiling, 113 unsigned int BytePerPixelY, 114 unsigned int BytePerPixelC, 115 unsigned int *BlockHeight256BytesY, 116 unsigned int *BlockHeight256BytesC, 117 unsigned int *BlockWidth256BytesY, 118 unsigned int *BlockWidth256BytesC); 119 120 struct vba_vars_st { 121 ip_params_st ip; 122 soc_bounding_box_st soc; 123 124 int maxMpcComb; 125 bool UseMaximumVStartup; 126 127 double WritebackDISPCLK; 128 double DPPCLKUsingSingleDPPLuma; 129 double DPPCLKUsingSingleDPPChroma; 130 double DISPCLKWithRamping; 131 double DISPCLKWithoutRamping; 132 double GlobalDPPCLK; 133 double DISPCLKWithRampingRoundedToDFSGranularity; 134 double DISPCLKWithoutRampingRoundedToDFSGranularity; 135 double MaxDispclkRoundedToDFSGranularity; 136 bool DCCEnabledAnyPlane; 137 double ReturnBandwidthToDCN; 138 unsigned int TotalActiveDPP; 139 unsigned int TotalDCCActiveDPP; 140 double UrgentRoundTripAndOutOfOrderLatency; 141 double StutterPeriod; 142 double FrameTimeForMinFullDETBufferingTime; 143 double AverageReadBandwidth; 144 double TotalRowReadBandwidth; 145 double PartOfBurstThatFitsInROB; 146 double StutterBurstTime; 147 unsigned int NextPrefetchMode; 148 double NextMaxVStartup; 149 double VBlankTime; 150 double SmallestVBlank; 151 double DCFCLKDeepSleepPerPlane[DC__NUM_DPP__MAX]; 152 double EffectiveDETPlusLBLinesLuma; 153 double EffectiveDETPlusLBLinesChroma; 154 double UrgentLatencySupportUsLuma; 155 double UrgentLatencySupportUsChroma; 156 unsigned int DSCFormatFactor; 157 158 bool PrefetchModeSupported; 159 enum self_refresh_affinity AllowDRAMSelfRefreshOrDRAMClockChangeInVblank; // Mode Support only 160 double XFCRemoteSurfaceFlipDelay; 161 double TInitXFill; 162 double TslvChk; 163 double SrcActiveDrainRate; 164 bool ImmediateFlipSupported; 165 enum mpc_combine_affinity WhenToDoMPCCombine; // Mode Support only 166 167 bool PrefetchERROR; 168 169 unsigned int VStartupLines; 170 unsigned int ActiveDPPs; 171 unsigned int LBLatencyHidingSourceLinesY; 172 unsigned int LBLatencyHidingSourceLinesC; 173 double ActiveDRAMClockChangeLatencyMargin[DC__NUM_DPP__MAX]; 174 double MinActiveDRAMClockChangeMargin; 175 double InitFillLevel; 176 double FinalFillMargin; 177 double FinalFillLevel; 178 double RemainingFillLevel; 179 double TFinalxFill; 180 181 // 182 // SOC Bounding Box Parameters 183 // 184 double SRExitTime; 185 double SREnterPlusExitTime; 186 double UrgentLatencyPixelDataOnly; 187 double UrgentLatencyPixelMixedWithVMData; 188 double UrgentLatencyVMDataOnly; 189 double UrgentLatency; // max of the above three 190 double WritebackLatency; 191 double PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelDataOnly; // Mode Support 192 double PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData; // Mode Support 193 double PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyVMDataOnly; // Mode Support 194 double MaxAveragePercentOfIdealSDPPortBWDisplayCanUseInNormalSystemOperation; // Mode Support 195 double MaxAveragePercentOfIdealDRAMBWDisplayCanUseInNormalSystemOperation; // Mode Support 196 double NumberOfChannels; 197 double DRAMChannelWidth; 198 double FabricDatapathToDCNDataReturn; 199 double ReturnBusWidth; 200 double Downspreading; 201 double DISPCLKDPPCLKDSCCLKDownSpreading; 202 double DISPCLKDPPCLKVCOSpeed; 203 double RoundTripPingLatencyCycles; 204 double UrgentOutOfOrderReturnPerChannel; 205 double UrgentOutOfOrderReturnPerChannelPixelDataOnly; 206 double UrgentOutOfOrderReturnPerChannelPixelMixedWithVMData; 207 double UrgentOutOfOrderReturnPerChannelVMDataOnly; 208 unsigned int VMMPageSize; 209 double DRAMClockChangeLatency; 210 double XFCBusTransportTime; 211 bool UseUrgentBurstBandwidth; 212 double XFCXBUFLatencyTolerance; 213 214 // 215 // IP Parameters 216 // 217 unsigned int ROBBufferSizeInKByte; 218 double DETBufferSizeInKByte; 219 double DETBufferSizeInTime; 220 unsigned int DPPOutputBufferPixels; 221 unsigned int OPPOutputBufferLines; 222 unsigned int PixelChunkSizeInKByte; 223 double ReturnBW; 224 bool GPUVMEnable; 225 bool HostVMEnable; 226 unsigned int GPUVMMaxPageTableLevels; 227 unsigned int HostVMMaxPageTableLevels; 228 unsigned int HostVMCachedPageTableLevels; 229 unsigned int OverrideGPUVMPageTableLevels; 230 unsigned int OverrideHostVMPageTableLevels; 231 unsigned int MetaChunkSize; 232 double MinPixelChunkSizeBytes; 233 double MinMetaChunkSizeBytes; 234 unsigned int WritebackChunkSize; 235 bool ODMCapability; 236 unsigned int NumberOfDSC; 237 unsigned int LineBufferSize; 238 unsigned int MaxLineBufferLines; 239 unsigned int WritebackInterfaceLumaBufferSize; 240 unsigned int WritebackInterfaceChromaBufferSize; 241 unsigned int WritebackChromaLineBufferWidth; 242 enum writeback_config WritebackConfiguration; 243 double MaxDCHUBToPSCLThroughput; 244 double MaxPSCLToLBThroughput; 245 unsigned int PTEBufferSizeInRequestsLuma; 246 unsigned int PTEBufferSizeInRequestsChroma; 247 double DISPCLKRampingMargin; 248 unsigned int MaxInterDCNTileRepeaters; 249 bool XFCSupported; 250 double XFCSlvChunkSize; 251 double XFCFillBWOverhead; 252 double XFCFillConstant; 253 double XFCTSlvVupdateOffset; 254 double XFCTSlvVupdateWidth; 255 double XFCTSlvVreadyOffset; 256 double DPPCLKDelaySubtotal; 257 double DPPCLKDelaySCL; 258 double DPPCLKDelaySCLLBOnly; 259 double DPPCLKDelayCNVCFormater; 260 double DPPCLKDelayCNVCCursor; 261 double DISPCLKDelaySubtotal; 262 bool ProgressiveToInterlaceUnitInOPP; 263 // Pipe/Plane Parameters 264 int VoltageLevel; 265 double FabricClock; 266 double DRAMSpeed; 267 double DISPCLK; 268 double SOCCLK; 269 double DCFCLK; 270 271 unsigned int NumberOfActivePlanes; 272 unsigned int NumberOfDSCSlices[DC__NUM_DPP__MAX]; 273 unsigned int ViewportWidth[DC__NUM_DPP__MAX]; 274 unsigned int ViewportHeight[DC__NUM_DPP__MAX]; 275 unsigned int ViewportYStartY[DC__NUM_DPP__MAX]; 276 unsigned int ViewportYStartC[DC__NUM_DPP__MAX]; 277 unsigned int PitchY[DC__NUM_DPP__MAX]; 278 unsigned int PitchC[DC__NUM_DPP__MAX]; 279 double HRatio[DC__NUM_DPP__MAX]; 280 double VRatio[DC__NUM_DPP__MAX]; 281 unsigned int htaps[DC__NUM_DPP__MAX]; 282 unsigned int vtaps[DC__NUM_DPP__MAX]; 283 unsigned int HTAPsChroma[DC__NUM_DPP__MAX]; 284 unsigned int VTAPsChroma[DC__NUM_DPP__MAX]; 285 unsigned int HTotal[DC__NUM_DPP__MAX]; 286 unsigned int VTotal[DC__NUM_DPP__MAX]; 287 unsigned int VTotal_Max[DC__NUM_DPP__MAX]; 288 unsigned int VTotal_Min[DC__NUM_DPP__MAX]; 289 int DPPPerPlane[DC__NUM_DPP__MAX]; 290 double PixelClock[DC__NUM_DPP__MAX]; 291 double PixelClockBackEnd[DC__NUM_DPP__MAX]; 292 bool DCCEnable[DC__NUM_DPP__MAX]; 293 bool FECEnable[DC__NUM_DPP__MAX]; 294 unsigned int DCCMetaPitchY[DC__NUM_DPP__MAX]; 295 unsigned int DCCMetaPitchC[DC__NUM_DPP__MAX]; 296 enum scan_direction_class SourceScan[DC__NUM_DPP__MAX]; 297 enum source_format_class SourcePixelFormat[DC__NUM_DPP__MAX]; 298 bool WritebackEnable[DC__NUM_DPP__MAX]; 299 unsigned int ActiveWritebacksPerPlane[DC__NUM_DPP__MAX]; 300 double WritebackDestinationWidth[DC__NUM_DPP__MAX]; 301 double WritebackDestinationHeight[DC__NUM_DPP__MAX]; 302 double WritebackSourceHeight[DC__NUM_DPP__MAX]; 303 enum source_format_class WritebackPixelFormat[DC__NUM_DPP__MAX]; 304 unsigned int WritebackLumaHTaps[DC__NUM_DPP__MAX]; 305 unsigned int WritebackLumaVTaps[DC__NUM_DPP__MAX]; 306 unsigned int WritebackChromaHTaps[DC__NUM_DPP__MAX]; 307 unsigned int WritebackChromaVTaps[DC__NUM_DPP__MAX]; 308 double WritebackHRatio[DC__NUM_DPP__MAX]; 309 double WritebackVRatio[DC__NUM_DPP__MAX]; 310 unsigned int HActive[DC__NUM_DPP__MAX]; 311 unsigned int VActive[DC__NUM_DPP__MAX]; 312 bool Interlace[DC__NUM_DPP__MAX]; 313 enum dm_swizzle_mode SurfaceTiling[DC__NUM_DPP__MAX]; 314 unsigned int ScalerRecoutWidth[DC__NUM_DPP__MAX]; 315 bool DynamicMetadataEnable[DC__NUM_DPP__MAX]; 316 int DynamicMetadataLinesBeforeActiveRequired[DC__NUM_DPP__MAX]; 317 unsigned int DynamicMetadataTransmittedBytes[DC__NUM_DPP__MAX]; 318 double DCCRate[DC__NUM_DPP__MAX]; 319 double AverageDCCCompressionRate; 320 bool ODMCombineEnabled[DC__NUM_DPP__MAX]; 321 enum odm_combine_mode ODMCombineTypeEnabled[DC__NUM_DPP__MAX]; 322 double OutputBpp[DC__NUM_DPP__MAX]; 323 bool DSCEnabled[DC__NUM_DPP__MAX]; 324 unsigned int DSCInputBitPerComponent[DC__NUM_DPP__MAX]; 325 enum output_format_class OutputFormat[DC__NUM_DPP__MAX]; 326 enum output_encoder_class Output[DC__NUM_DPP__MAX]; 327 unsigned int BlendingAndTiming[DC__NUM_DPP__MAX]; 328 bool SynchronizedVBlank; 329 unsigned int NumberOfCursors[DC__NUM_DPP__MAX]; 330 unsigned int CursorWidth[DC__NUM_DPP__MAX][DC__NUM_CURSOR__MAX]; 331 unsigned int CursorBPP[DC__NUM_DPP__MAX][DC__NUM_CURSOR__MAX]; 332 bool XFCEnabled[DC__NUM_DPP__MAX]; 333 bool ScalerEnabled[DC__NUM_DPP__MAX]; 334 335 // Intermediates/Informational 336 bool ImmediateFlipSupport; 337 double DETBufferSizeY[DC__NUM_DPP__MAX]; 338 double DETBufferSizeC[DC__NUM_DPP__MAX]; 339 unsigned int SwathHeightY[DC__NUM_DPP__MAX]; 340 unsigned int SwathHeightC[DC__NUM_DPP__MAX]; 341 unsigned int LBBitPerPixel[DC__NUM_DPP__MAX]; 342 double LastPixelOfLineExtraWatermark; 343 double TotalDataReadBandwidth; 344 unsigned int TotalActiveWriteback; 345 unsigned int EffectiveLBLatencyHidingSourceLinesLuma; 346 unsigned int EffectiveLBLatencyHidingSourceLinesChroma; 347 double BandwidthAvailableForImmediateFlip; 348 unsigned int PrefetchMode[DC__VOLTAGE_STATES + 1][2]; 349 unsigned int MinPrefetchMode; 350 unsigned int MaxPrefetchMode; 351 bool AnyLinesForVMOrRowTooLarge; 352 double MaxVStartup; 353 bool IgnoreViewportPositioning; 354 bool ErrorResult[DC__NUM_DPP__MAX]; 355 // 356 // Calculated dml_ml->vba.Outputs 357 // 358 double DCFCLKDeepSleep; 359 double UrgentWatermark; 360 double UrgentExtraLatency; 361 double WritebackUrgentWatermark; 362 double StutterExitWatermark; 363 double StutterEnterPlusExitWatermark; 364 double DRAMClockChangeWatermark; 365 double WritebackDRAMClockChangeWatermark; 366 double StutterEfficiency; 367 double StutterEfficiencyNotIncludingVBlank; 368 double NonUrgentLatencyTolerance; 369 double MinActiveDRAMClockChangeLatencySupported; 370 371 // These are the clocks calcuated by the library but they are not actually 372 // used explicitly. They are fetched by tests and then possibly used. The 373 // ultimate values to use are the ones specified by the parameters to DML 374 double DISPCLK_calculated; 375 double DPPCLK_calculated[DC__NUM_DPP__MAX]; 376 377 unsigned int VUpdateOffsetPix[DC__NUM_DPP__MAX]; 378 double VUpdateWidthPix[DC__NUM_DPP__MAX]; 379 double VReadyOffsetPix[DC__NUM_DPP__MAX]; 380 381 unsigned int TotImmediateFlipBytes; 382 double TCalc; 383 384 display_e2e_pipe_params_st cache_pipes[DC__NUM_DPP__MAX]; 385 unsigned int cache_num_pipes; 386 unsigned int pipe_plane[DC__NUM_DPP__MAX]; 387 388 /* vba mode support */ 389 /*inputs*/ 390 bool SupportGFX7CompatibleTilingIn32bppAnd64bpp; 391 double MaxHSCLRatio; 392 double MaxVSCLRatio; 393 unsigned int MaxNumWriteback; 394 bool WritebackLumaAndChromaScalingSupported; 395 bool Cursor64BppSupport; 396 double DCFCLKPerState[DC__VOLTAGE_STATES + 1]; 397 double FabricClockPerState[DC__VOLTAGE_STATES + 1]; 398 double SOCCLKPerState[DC__VOLTAGE_STATES + 1]; 399 double PHYCLKPerState[DC__VOLTAGE_STATES + 1]; 400 double DTBCLKPerState[DC__VOLTAGE_STATES + 1]; 401 double MaxDppclk[DC__VOLTAGE_STATES + 1]; 402 double MaxDSCCLK[DC__VOLTAGE_STATES + 1]; 403 double DRAMSpeedPerState[DC__VOLTAGE_STATES + 1]; 404 double MaxDispclk[DC__VOLTAGE_STATES + 1]; 405 int VoltageOverrideLevel; 406 407 /*outputs*/ 408 bool ScaleRatioAndTapsSupport; 409 bool SourceFormatPixelAndScanSupport; 410 double TotalBandwidthConsumedGBytePerSecond; 411 bool DCCEnabledInAnyPlane; 412 bool WritebackLatencySupport; 413 bool WritebackModeSupport; 414 bool Writeback10bpc420Supported; 415 bool BandwidthSupport[DC__VOLTAGE_STATES + 1]; 416 unsigned int TotalNumberOfActiveWriteback; 417 double CriticalPoint; 418 double ReturnBWToDCNPerState; 419 bool IsErrorResult[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX]; 420 bool prefetch_vm_bw_valid; 421 bool prefetch_row_bw_valid; 422 bool NumberOfOTGSupport; 423 bool NonsupportedDSCInputBPC; 424 bool WritebackScaleRatioAndTapsSupport; 425 bool CursorSupport; 426 bool PitchSupport; 427 enum dm_validation_status ValidationStatus[DC__VOLTAGE_STATES + 1]; 428 429 double WritebackLineBufferLumaBufferSize; 430 double WritebackLineBufferChromaBufferSize; 431 double WritebackMinHSCLRatio; 432 double WritebackMinVSCLRatio; 433 double WritebackMaxHSCLRatio; 434 double WritebackMaxVSCLRatio; 435 double WritebackMaxHSCLTaps; 436 double WritebackMaxVSCLTaps; 437 unsigned int MaxNumDPP; 438 unsigned int MaxNumOTG; 439 double CursorBufferSize; 440 double CursorChunkSize; 441 unsigned int Mode; 442 double OutputLinkDPLanes[DC__NUM_DPP__MAX]; 443 double ForcedOutputLinkBPP[DC__NUM_DPP__MAX]; // Mode Support only 444 double ImmediateFlipBW[DC__NUM_DPP__MAX]; 445 double MaxMaxVStartup; 446 447 double WritebackLumaVExtra; 448 double WritebackChromaVExtra; 449 double WritebackRequiredDISPCLK; 450 double MaximumSwathWidthSupport; 451 double MaximumSwathWidthInDETBuffer; 452 double MaximumSwathWidthInLineBuffer; 453 double MaxDispclkRoundedDownToDFSGranularity; 454 double MaxDppclkRoundedDownToDFSGranularity; 455 double PlaneRequiredDISPCLKWithoutODMCombine; 456 double PlaneRequiredDISPCLKWithODMCombine; 457 double PlaneRequiredDISPCLK; 458 double TotalNumberOfActiveOTG; 459 double FECOverhead; 460 double EffectiveFECOverhead; 461 double Outbpp; 462 unsigned int OutbppDSC; 463 double TotalDSCUnitsRequired; 464 double bpp; 465 unsigned int slices; 466 double SwathWidthGranularityY; 467 double RoundedUpMaxSwathSizeBytesY; 468 double SwathWidthGranularityC; 469 double RoundedUpMaxSwathSizeBytesC; 470 double EffectiveDETLBLinesLuma; 471 double EffectiveDETLBLinesChroma; 472 double ProjectedDCFCLKDeepSleep; 473 double PDEAndMetaPTEBytesPerFrameY; 474 double PDEAndMetaPTEBytesPerFrameC; 475 unsigned int MetaRowBytesY; 476 unsigned int MetaRowBytesC; 477 unsigned int DPTEBytesPerRowC; 478 unsigned int DPTEBytesPerRowY; 479 double ExtraLatency; 480 double TimeCalc; 481 double TWait; 482 double MaximumReadBandwidthWithPrefetch; 483 double MaximumReadBandwidthWithoutPrefetch; 484 double total_dcn_read_bw_with_flip; 485 double total_dcn_read_bw_with_flip_no_urgent_burst; 486 double FractionOfUrgentBandwidth; 487 double FractionOfUrgentBandwidthImmediateFlip; // Mode Support debugging output 488 489 /* ms locals */ 490 double IdealSDPPortBandwidthPerState[DC__VOLTAGE_STATES + 1]; 491 unsigned int NoOfDPP[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX]; 492 int NoOfDPPThisState[DC__NUM_DPP__MAX]; 493 bool ODMCombineEnablePerState[DC__VOLTAGE_STATES + 1][DC__NUM_DPP__MAX]; 494 enum odm_combine_mode ODMCombineTypeEnablePerState[DC__VOLTAGE_STATES + 1][DC__NUM_DPP__MAX]; 495 unsigned int SwathWidthYThisState[DC__NUM_DPP__MAX]; 496 unsigned int SwathHeightCPerState[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX]; 497 unsigned int SwathHeightYThisState[DC__NUM_DPP__MAX]; 498 unsigned int SwathHeightCThisState[DC__NUM_DPP__MAX]; 499 double VRatioPreY[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX]; 500 double VRatioPreC[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX]; 501 double RequiredPrefetchPixelDataBWLuma[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX]; 502 double RequiredPrefetchPixelDataBWChroma[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX]; 503 double RequiredDPPCLK[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX]; 504 double RequiredDPPCLKThisState[DC__NUM_DPP__MAX]; 505 bool PTEBufferSizeNotExceededY[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX]; 506 bool PTEBufferSizeNotExceededC[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX]; 507 bool BandwidthWithoutPrefetchSupported[DC__VOLTAGE_STATES + 1]; 508 bool PrefetchSupported[DC__VOLTAGE_STATES + 1][2]; 509 bool VRatioInPrefetchSupported[DC__VOLTAGE_STATES + 1][2]; 510 double RequiredDISPCLK[DC__VOLTAGE_STATES + 1][2]; 511 bool DISPCLK_DPPCLK_Support[DC__VOLTAGE_STATES + 1][2]; 512 bool TotalAvailablePipesSupport[DC__VOLTAGE_STATES + 1][2]; 513 unsigned int TotalNumberOfActiveDPP[DC__VOLTAGE_STATES + 1][2]; 514 unsigned int TotalNumberOfDCCActiveDPP[DC__VOLTAGE_STATES + 1][2]; 515 bool ModeSupport[DC__VOLTAGE_STATES + 1][2]; 516 double ReturnBWPerState[DC__VOLTAGE_STATES + 1]; 517 bool DIOSupport[DC__VOLTAGE_STATES + 1]; 518 bool NotEnoughDSCUnits[DC__VOLTAGE_STATES + 1]; 519 bool DSCCLKRequiredMoreThanSupported[DC__VOLTAGE_STATES + 1]; 520 bool DTBCLKRequiredMoreThanSupported[DC__VOLTAGE_STATES + 1]; 521 double UrgentRoundTripAndOutOfOrderLatencyPerState[DC__VOLTAGE_STATES + 1]; 522 bool ROBSupport[DC__VOLTAGE_STATES + 1]; 523 bool PTEBufferSizeNotExceeded[DC__VOLTAGE_STATES + 1][2]; 524 bool TotalVerticalActiveBandwidthSupport[DC__VOLTAGE_STATES + 1]; 525 double MaxTotalVerticalActiveAvailableBandwidth[DC__VOLTAGE_STATES + 1]; 526 double PrefetchBW[DC__NUM_DPP__MAX]; 527 double PDEAndMetaPTEBytesPerFrame[DC__NUM_DPP__MAX]; 528 double MetaRowBytes[DC__NUM_DPP__MAX]; 529 double DPTEBytesPerRow[DC__NUM_DPP__MAX]; 530 double PrefetchLinesY[DC__NUM_DPP__MAX]; 531 double PrefetchLinesC[DC__NUM_DPP__MAX]; 532 unsigned int MaxNumSwY[DC__NUM_DPP__MAX]; 533 unsigned int MaxNumSwC[DC__NUM_DPP__MAX]; 534 double PrefillY[DC__NUM_DPP__MAX]; 535 double PrefillC[DC__NUM_DPP__MAX]; 536 double LineTimesForPrefetch[DC__NUM_DPP__MAX]; 537 double LinesForMetaPTE[DC__NUM_DPP__MAX]; 538 double LinesForMetaAndDPTERow[DC__NUM_DPP__MAX]; 539 double MinDPPCLKUsingSingleDPP[DC__NUM_DPP__MAX]; 540 unsigned int SwathWidthYSingleDPP[DC__NUM_DPP__MAX]; 541 double BytePerPixelInDETY[DC__NUM_DPP__MAX]; 542 double BytePerPixelInDETC[DC__NUM_DPP__MAX]; 543 bool RequiresDSC[DC__VOLTAGE_STATES + 1][DC__NUM_DPP__MAX]; 544 unsigned int NumberOfDSCSlice[DC__VOLTAGE_STATES + 1][DC__NUM_DPP__MAX]; 545 double RequiresFEC[DC__VOLTAGE_STATES + 1][DC__NUM_DPP__MAX]; 546 double OutputBppPerState[DC__VOLTAGE_STATES + 1][DC__NUM_DPP__MAX]; 547 double DSCDelayPerState[DC__VOLTAGE_STATES + 1][DC__NUM_DPP__MAX]; 548 bool ViewportSizeSupport[DC__VOLTAGE_STATES + 1]; 549 unsigned int Read256BlockHeightY[DC__NUM_DPP__MAX]; 550 unsigned int Read256BlockWidthY[DC__NUM_DPP__MAX]; 551 unsigned int Read256BlockHeightC[DC__NUM_DPP__MAX]; 552 unsigned int Read256BlockWidthC[DC__NUM_DPP__MAX]; 553 double MaxSwathHeightY[DC__NUM_DPP__MAX]; 554 double MaxSwathHeightC[DC__NUM_DPP__MAX]; 555 double MinSwathHeightY[DC__NUM_DPP__MAX]; 556 double MinSwathHeightC[DC__NUM_DPP__MAX]; 557 double ReadBandwidthLuma[DC__NUM_DPP__MAX]; 558 double ReadBandwidthChroma[DC__NUM_DPP__MAX]; 559 double ReadBandwidth[DC__NUM_DPP__MAX]; 560 double WriteBandwidth[DC__NUM_DPP__MAX]; 561 double PSCL_FACTOR[DC__NUM_DPP__MAX]; 562 double PSCL_FACTOR_CHROMA[DC__NUM_DPP__MAX]; 563 double MaximumVStartup[DC__NUM_DPP__MAX]; 564 unsigned int MacroTileWidthY[DC__NUM_DPP__MAX]; 565 unsigned int MacroTileWidthC[DC__NUM_DPP__MAX]; 566 double AlignedDCCMetaPitch[DC__NUM_DPP__MAX]; 567 double AlignedYPitch[DC__NUM_DPP__MAX]; 568 double AlignedCPitch[DC__NUM_DPP__MAX]; 569 double MaximumSwathWidth[DC__NUM_DPP__MAX]; 570 double cursor_bw[DC__NUM_DPP__MAX]; 571 double cursor_bw_pre[DC__NUM_DPP__MAX]; 572 double Tno_bw[DC__NUM_DPP__MAX]; 573 double prefetch_vmrow_bw[DC__NUM_DPP__MAX]; 574 double DestinationLinesToRequestVMInImmediateFlip[DC__NUM_DPP__MAX]; 575 double DestinationLinesToRequestRowInImmediateFlip[DC__NUM_DPP__MAX]; 576 double final_flip_bw[DC__NUM_DPP__MAX]; 577 bool ImmediateFlipSupportedForState[DC__VOLTAGE_STATES + 1][2]; 578 double WritebackDelay[DC__VOLTAGE_STATES + 1][DC__NUM_DPP__MAX]; 579 unsigned int vm_group_bytes[DC__NUM_DPP__MAX]; 580 long dpte_group_bytes[DC__NUM_DPP__MAX]; 581 unsigned int dpte_row_height[DC__NUM_DPP__MAX]; 582 unsigned int meta_req_height[DC__NUM_DPP__MAX]; 583 unsigned int meta_req_width[DC__NUM_DPP__MAX]; 584 unsigned int meta_row_height[DC__NUM_DPP__MAX]; 585 unsigned int meta_row_width[DC__NUM_DPP__MAX]; 586 unsigned int dpte_row_height_chroma[DC__NUM_DPP__MAX]; 587 unsigned int meta_req_height_chroma[DC__NUM_DPP__MAX]; 588 unsigned int meta_req_width_chroma[DC__NUM_DPP__MAX]; 589 unsigned int meta_row_height_chroma[DC__NUM_DPP__MAX]; 590 unsigned int meta_row_width_chroma[DC__NUM_DPP__MAX]; 591 bool ImmediateFlipSupportedForPipe[DC__NUM_DPP__MAX]; 592 double meta_row_bw[DC__NUM_DPP__MAX]; 593 double dpte_row_bw[DC__NUM_DPP__MAX]; 594 double DisplayPipeLineDeliveryTimeLuma[DC__NUM_DPP__MAX]; // WM 595 double DisplayPipeLineDeliveryTimeChroma[DC__NUM_DPP__MAX]; // WM 596 double DisplayPipeRequestDeliveryTimeLuma[DC__NUM_DPP__MAX]; 597 double DisplayPipeRequestDeliveryTimeChroma[DC__NUM_DPP__MAX]; 598 enum clock_change_support DRAMClockChangeSupport[DC__VOLTAGE_STATES + 1][2]; 599 double UrgentBurstFactorCursor[DC__NUM_DPP__MAX]; 600 double UrgentBurstFactorCursorPre[DC__NUM_DPP__MAX]; 601 double UrgentBurstFactorLuma[DC__NUM_DPP__MAX]; 602 double UrgentBurstFactorLumaPre[DC__NUM_DPP__MAX]; 603 double UrgentBurstFactorChroma[DC__NUM_DPP__MAX]; 604 double UrgentBurstFactorChromaPre[DC__NUM_DPP__MAX]; 605 606 bool MPCCombine[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX]; 607 double SwathWidthCSingleDPP[DC__NUM_DPP__MAX]; 608 double MaximumSwathWidthInLineBufferLuma; 609 double MaximumSwathWidthInLineBufferChroma; 610 double MaximumSwathWidthLuma[DC__NUM_DPP__MAX]; 611 double MaximumSwathWidthChroma[DC__NUM_DPP__MAX]; 612 bool odm_combine_dummy[DC__NUM_DPP__MAX]; 613 enum odm_combine_mode odm_combine_mode_dummy[DC__NUM_DPP__MAX]; 614 double dummy1[DC__NUM_DPP__MAX]; 615 double dummy2[DC__NUM_DPP__MAX]; 616 double dummy3[DC__NUM_DPP__MAX]; 617 double dummy4[DC__NUM_DPP__MAX]; 618 double dummy5; 619 double dummy6; 620 double dummy7[DC__NUM_DPP__MAX]; 621 double dummy8[DC__NUM_DPP__MAX]; 622 unsigned int dummyinteger1ms[DC__NUM_DPP__MAX]; 623 unsigned int dummyinteger2ms[DC__NUM_DPP__MAX]; 624 unsigned int dummyinteger3[DC__NUM_DPP__MAX]; 625 unsigned int dummyinteger4; 626 unsigned int dummyinteger5; 627 unsigned int dummyinteger6; 628 unsigned int dummyinteger7; 629 unsigned int dummyinteger8; 630 unsigned int dummyinteger9; 631 unsigned int dummyinteger10; 632 unsigned int dummyinteger11; 633 unsigned int dummyinteger12; 634 unsigned int dummyintegerarr1[DC__NUM_DPP__MAX]; 635 unsigned int dummyintegerarr2[DC__NUM_DPP__MAX]; 636 unsigned int dummyintegerarr3[DC__NUM_DPP__MAX]; 637 unsigned int dummyintegerarr4[DC__NUM_DPP__MAX]; 638 long dummylongarr1[DC__NUM_DPP__MAX]; 639 bool dummysinglestring; 640 bool SingleDPPViewportSizeSupportPerPlane[DC__NUM_DPP__MAX]; 641 double PlaneRequiredDISPCLKWithODMCombine2To1; 642 double PlaneRequiredDISPCLKWithODMCombine4To1; 643 unsigned int TotalNumberOfSingleDPPPlanes[DC__VOLTAGE_STATES + 1][2]; 644 bool LinkDSCEnable; 645 bool ODMCombine4To1SupportCheckOK[DC__VOLTAGE_STATES + 1]; 646 bool ODMCombineEnableThisState[DC__NUM_DPP__MAX]; 647 enum odm_combine_mode ODMCombineEnableTypeThisState[DC__NUM_DPP__MAX]; 648 unsigned int SwathWidthCThisState[DC__NUM_DPP__MAX]; 649 bool ViewportSizeSupportPerPlane[DC__NUM_DPP__MAX]; 650 double AlignedDCCMetaPitchY[DC__NUM_DPP__MAX]; 651 double AlignedDCCMetaPitchC[DC__NUM_DPP__MAX]; 652 653 unsigned int NotEnoughUrgentLatencyHiding; 654 unsigned int NotEnoughUrgentLatencyHidingPre; 655 long PTEBufferSizeInRequestsForLuma; 656 long PTEBufferSizeInRequestsForChroma; 657 658 // Missing from VBA 659 long dpte_group_bytes_chroma; 660 unsigned int vm_group_bytes_chroma; 661 double dst_x_after_scaler; 662 double dst_y_after_scaler; 663 unsigned int VStartupRequiredWhenNotEnoughTimeForDynamicMetadata; 664 665 /* perf locals*/ 666 double PrefetchBandwidth[DC__NUM_DPP__MAX]; 667 double VInitPreFillY[DC__NUM_DPP__MAX]; 668 double VInitPreFillC[DC__NUM_DPP__MAX]; 669 unsigned int MaxNumSwathY[DC__NUM_DPP__MAX]; 670 unsigned int MaxNumSwathC[DC__NUM_DPP__MAX]; 671 unsigned int VStartup[DC__NUM_DPP__MAX]; 672 double DSTYAfterScaler[DC__NUM_DPP__MAX]; 673 double DSTXAfterScaler[DC__NUM_DPP__MAX]; 674 bool AllowDRAMClockChangeDuringVBlank[DC__NUM_DPP__MAX]; 675 bool AllowDRAMSelfRefreshDuringVBlank[DC__NUM_DPP__MAX]; 676 double VRatioPrefetchY[DC__NUM_DPP__MAX]; 677 double VRatioPrefetchC[DC__NUM_DPP__MAX]; 678 double DestinationLinesForPrefetch[DC__NUM_DPP__MAX]; 679 double DestinationLinesToRequestVMInVBlank[DC__NUM_DPP__MAX]; 680 double DestinationLinesToRequestRowInVBlank[DC__NUM_DPP__MAX]; 681 double MinTTUVBlank[DC__NUM_DPP__MAX]; 682 double BytePerPixelDETY[DC__NUM_DPP__MAX]; 683 double BytePerPixelDETC[DC__NUM_DPP__MAX]; 684 unsigned int SwathWidthY[DC__NUM_DPP__MAX]; 685 unsigned int SwathWidthSingleDPPY[DC__NUM_DPP__MAX]; 686 double CursorRequestDeliveryTime[DC__NUM_DPP__MAX]; 687 double CursorRequestDeliveryTimePrefetch[DC__NUM_DPP__MAX]; 688 double ReadBandwidthPlaneLuma[DC__NUM_DPP__MAX]; 689 double ReadBandwidthPlaneChroma[DC__NUM_DPP__MAX]; 690 double DisplayPipeLineDeliveryTimeLumaPrefetch[DC__NUM_DPP__MAX]; 691 double DisplayPipeLineDeliveryTimeChromaPrefetch[DC__NUM_DPP__MAX]; 692 double DisplayPipeRequestDeliveryTimeLumaPrefetch[DC__NUM_DPP__MAX]; 693 double DisplayPipeRequestDeliveryTimeChromaPrefetch[DC__NUM_DPP__MAX]; 694 double PixelPTEBytesPerRow[DC__NUM_DPP__MAX]; 695 double PDEAndMetaPTEBytesFrame[DC__NUM_DPP__MAX]; 696 double MetaRowByte[DC__NUM_DPP__MAX]; 697 double PrefetchSourceLinesY[DC__NUM_DPP__MAX]; 698 double RequiredPrefetchPixDataBWLuma[DC__NUM_DPP__MAX]; 699 double RequiredPrefetchPixDataBWChroma[DC__NUM_DPP__MAX]; 700 double PrefetchSourceLinesC[DC__NUM_DPP__MAX]; 701 double PSCL_THROUGHPUT_LUMA[DC__NUM_DPP__MAX]; 702 double PSCL_THROUGHPUT_CHROMA[DC__NUM_DPP__MAX]; 703 double DSCCLK_calculated[DC__NUM_DPP__MAX]; 704 unsigned int DSCDelay[DC__NUM_DPP__MAX]; 705 unsigned int MaxVStartupLines[DC__NUM_DPP__MAX]; 706 double DPPCLKUsingSingleDPP[DC__NUM_DPP__MAX]; 707 double DPPCLK[DC__NUM_DPP__MAX]; 708 unsigned int DCCYMaxUncompressedBlock[DC__NUM_DPP__MAX]; 709 unsigned int DCCYMaxCompressedBlock[DC__NUM_DPP__MAX]; 710 unsigned int DCCYIndependent64ByteBlock[DC__NUM_DPP__MAX]; 711 double MaximumDCCCompressionYSurface[DC__NUM_DPP__MAX]; 712 unsigned int BlockHeight256BytesY[DC__NUM_DPP__MAX]; 713 unsigned int BlockHeight256BytesC[DC__NUM_DPP__MAX]; 714 unsigned int BlockWidth256BytesY[DC__NUM_DPP__MAX]; 715 unsigned int BlockWidth256BytesC[DC__NUM_DPP__MAX]; 716 double XFCSlaveVUpdateOffset[DC__NUM_DPP__MAX]; 717 double XFCSlaveVupdateWidth[DC__NUM_DPP__MAX]; 718 double XFCSlaveVReadyOffset[DC__NUM_DPP__MAX]; 719 double XFCTransferDelay[DC__NUM_DPP__MAX]; 720 double XFCPrechargeDelay[DC__NUM_DPP__MAX]; 721 double XFCRemoteSurfaceFlipLatency[DC__NUM_DPP__MAX]; 722 double XFCPrefetchMargin[DC__NUM_DPP__MAX]; 723 unsigned int dpte_row_width_luma_ub[DC__NUM_DPP__MAX]; 724 unsigned int dpte_row_width_chroma_ub[DC__NUM_DPP__MAX]; 725 double FullDETBufferingTimeY[DC__NUM_DPP__MAX]; // WM 726 double FullDETBufferingTimeC[DC__NUM_DPP__MAX]; // WM 727 double DST_Y_PER_PTE_ROW_NOM_L[DC__NUM_DPP__MAX]; 728 double DST_Y_PER_PTE_ROW_NOM_C[DC__NUM_DPP__MAX]; 729 double DST_Y_PER_META_ROW_NOM_L[DC__NUM_DPP__MAX]; 730 double TimePerMetaChunkNominal[DC__NUM_DPP__MAX]; 731 double TimePerMetaChunkVBlank[DC__NUM_DPP__MAX]; 732 double TimePerMetaChunkFlip[DC__NUM_DPP__MAX]; 733 unsigned int swath_width_luma_ub[DC__NUM_DPP__MAX]; 734 unsigned int swath_width_chroma_ub[DC__NUM_DPP__MAX]; 735 unsigned int PixelPTEReqWidthY[DC__NUM_DPP__MAX]; 736 unsigned int PixelPTEReqHeightY[DC__NUM_DPP__MAX]; 737 unsigned int PTERequestSizeY[DC__NUM_DPP__MAX]; 738 unsigned int PixelPTEReqWidthC[DC__NUM_DPP__MAX]; 739 unsigned int PixelPTEReqHeightC[DC__NUM_DPP__MAX]; 740 unsigned int PTERequestSizeC[DC__NUM_DPP__MAX]; 741 double time_per_pte_group_nom_luma[DC__NUM_DPP__MAX]; 742 double time_per_pte_group_nom_chroma[DC__NUM_DPP__MAX]; 743 double time_per_pte_group_vblank_luma[DC__NUM_DPP__MAX]; 744 double time_per_pte_group_vblank_chroma[DC__NUM_DPP__MAX]; 745 double time_per_pte_group_flip_luma[DC__NUM_DPP__MAX]; 746 double time_per_pte_group_flip_chroma[DC__NUM_DPP__MAX]; 747 double TimePerVMGroupVBlank[DC__NUM_DPP__MAX]; 748 double TimePerVMGroupFlip[DC__NUM_DPP__MAX]; 749 double TimePerVMRequestVBlank[DC__NUM_DPP__MAX]; 750 double TimePerVMRequestFlip[DC__NUM_DPP__MAX]; 751 unsigned int dpde0_bytes_per_frame_ub_l[DC__NUM_DPP__MAX]; 752 unsigned int meta_pte_bytes_per_frame_ub_l[DC__NUM_DPP__MAX]; 753 unsigned int dpde0_bytes_per_frame_ub_c[DC__NUM_DPP__MAX]; 754 unsigned int meta_pte_bytes_per_frame_ub_c[DC__NUM_DPP__MAX]; 755 double LinesToFinishSwathTransferStutterCriticalPlane; 756 unsigned int BytePerPixelYCriticalPlane; 757 double SwathWidthYCriticalPlane; 758 double LinesInDETY[DC__NUM_DPP__MAX]; 759 double LinesInDETYRoundedDownToSwath[DC__NUM_DPP__MAX]; 760 761 unsigned int SwathWidthSingleDPPC[DC__NUM_DPP__MAX]; 762 unsigned int SwathWidthC[DC__NUM_DPP__MAX]; 763 unsigned int BytePerPixelY[DC__NUM_DPP__MAX]; 764 unsigned int BytePerPixelC[DC__NUM_DPP__MAX]; 765 long dummyinteger1; 766 long dummyinteger2; 767 double FinalDRAMClockChangeLatency; 768 double Tdmdl_vm[DC__NUM_DPP__MAX]; 769 double Tdmdl[DC__NUM_DPP__MAX]; 770 unsigned int ThisVStartup; 771 bool WritebackAllowDRAMClockChangeEndPosition[DC__NUM_DPP__MAX]; 772 double DST_Y_PER_META_ROW_NOM_C[DC__NUM_DPP__MAX]; 773 double TimePerChromaMetaChunkNominal[DC__NUM_DPP__MAX]; 774 double TimePerChromaMetaChunkVBlank[DC__NUM_DPP__MAX]; 775 double TimePerChromaMetaChunkFlip[DC__NUM_DPP__MAX]; 776 unsigned int DCCCMaxUncompressedBlock[DC__NUM_DPP__MAX]; 777 unsigned int DCCCMaxCompressedBlock[DC__NUM_DPP__MAX]; 778 unsigned int DCCCIndependent64ByteBlock[DC__NUM_DPP__MAX]; 779 double VStartupMargin; 780 781 /* Missing from VBA */ 782 unsigned int MaximumMaxVStartupLines; 783 double FabricAndDRAMBandwidth; 784 double LinesInDETLuma; 785 double LinesInDETChroma; 786 unsigned int ImmediateFlipBytes[DC__NUM_DPP__MAX]; 787 unsigned int LinesInDETC[DC__NUM_DPP__MAX]; 788 unsigned int LinesInDETCRoundedDownToSwath[DC__NUM_DPP__MAX]; 789 double UrgentLatencySupportUsPerState[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX]; 790 double UrgentLatencySupportUs[DC__NUM_DPP__MAX]; 791 double FabricAndDRAMBandwidthPerState[DC__VOLTAGE_STATES + 1]; 792 bool UrgentLatencySupport[DC__VOLTAGE_STATES + 1][2]; 793 unsigned int SwathWidthYPerState[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX]; 794 unsigned int SwathHeightYPerState[DC__VOLTAGE_STATES + 1][2][DC__NUM_DPP__MAX]; 795 double qual_row_bw[DC__NUM_DPP__MAX]; 796 double prefetch_row_bw[DC__NUM_DPP__MAX]; 797 double prefetch_vm_bw[DC__NUM_DPP__MAX]; 798 799 double PTEGroupSize; 800 unsigned int PDEProcessingBufIn64KBReqs; 801 802 double MaxTotalVActiveRDBandwidth; 803 bool DoUrgentLatencyAdjustment; 804 double UrgentLatencyAdjustmentFabricClockComponent; 805 double UrgentLatencyAdjustmentFabricClockReference; 806 double MinUrgentLatencySupportUs; 807 double MinFullDETBufferingTime; 808 double AverageReadBandwidthGBytePerSecond; 809 bool FirstMainPlane; 810 811 unsigned int ViewportWidthChroma[DC__NUM_DPP__MAX]; 812 unsigned int ViewportHeightChroma[DC__NUM_DPP__MAX]; 813 double HRatioChroma[DC__NUM_DPP__MAX]; 814 double VRatioChroma[DC__NUM_DPP__MAX]; 815 long WritebackSourceWidth[DC__NUM_DPP__MAX]; 816 817 bool ModeIsSupported; 818 bool ODMCombine4To1Supported; 819 820 unsigned int SurfaceWidthY[DC__NUM_DPP__MAX]; 821 unsigned int SurfaceWidthC[DC__NUM_DPP__MAX]; 822 unsigned int SurfaceHeightY[DC__NUM_DPP__MAX]; 823 unsigned int SurfaceHeightC[DC__NUM_DPP__MAX]; 824 unsigned int WritebackHTaps[DC__NUM_DPP__MAX]; 825 unsigned int WritebackVTaps[DC__NUM_DPP__MAX]; 826 bool DSCEnable[DC__NUM_DPP__MAX]; 827 828 double DRAMClockChangeLatencyOverride; 829 830 double GPUVMMinPageSize; 831 double HostVMMinPageSize; 832 833 bool MPCCombineEnable[DC__NUM_DPP__MAX]; 834 unsigned int HostVMMaxNonCachedPageTableLevels; 835 bool DynamicMetadataVMEnabled; 836 double WritebackInterfaceBufferSize; 837 double WritebackLineBufferSize; 838 839 double DCCRateLuma[DC__NUM_DPP__MAX]; 840 double DCCRateChroma[DC__NUM_DPP__MAX]; 841 842 double PHYCLKD18PerState[DC__VOLTAGE_STATES + 1]; 843 int MinVoltageLevel; 844 int MaxVoltageLevel; 845 846 bool WritebackSupportInterleaveAndUsingWholeBufferForASingleStream; 847 bool NumberOfHDMIFRLSupport; 848 unsigned int MaxNumHDMIFRLOutputs; 849 int AudioSampleRate[DC__NUM_DPP__MAX]; 850 int AudioSampleLayout[DC__NUM_DPP__MAX]; 851 }; 852 853 bool CalculateMinAndMaxPrefetchMode( 854 enum self_refresh_affinity AllowDRAMSelfRefreshOrDRAMClockChangeInVblank, 855 unsigned int *MinPrefetchMode, 856 unsigned int *MaxPrefetchMode); 857 858 double CalculateWriteBackDISPCLK( 859 enum source_format_class WritebackPixelFormat, 860 double PixelClock, 861 double WritebackHRatio, 862 double WritebackVRatio, 863 unsigned int WritebackLumaHTaps, 864 unsigned int WritebackLumaVTaps, 865 unsigned int WritebackChromaHTaps, 866 unsigned int WritebackChromaVTaps, 867 double WritebackDestinationWidth, 868 unsigned int HTotal, 869 unsigned int WritebackChromaLineBufferWidth); 870 871 #endif /* _DML2_DISPLAY_MODE_VBA_H_ */ 872 #endif 873