2 * Copyright 2017 Advanced Micro Devices, Inc.
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:
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
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.
27 #ifndef __DML2_DISPLAY_MODE_VBA_H__
28 #define __DML2_DISPLAY_MODE_VBA_H__
30 struct display_mode_lib
;
32 void ModeSupportAndSystemConfiguration(struct display_mode_lib
*mode_lib
);
34 #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)
36 dml_get_attr_decl(clk_dcf_deepsleep
);
37 dml_get_attr_decl(wm_urgent
);
38 dml_get_attr_decl(wm_memory_trip
);
39 dml_get_attr_decl(wm_writeback_urgent
);
40 dml_get_attr_decl(wm_stutter_exit
);
41 dml_get_attr_decl(wm_stutter_enter_exit
);
42 dml_get_attr_decl(wm_z8_stutter_exit
);
43 dml_get_attr_decl(wm_z8_stutter_enter_exit
);
44 dml_get_attr_decl(stutter_efficiency_z8
);
45 dml_get_attr_decl(stutter_num_bursts_z8
);
46 dml_get_attr_decl(wm_dram_clock_change
);
47 dml_get_attr_decl(wm_writeback_dram_clock_change
);
48 dml_get_attr_decl(stutter_efficiency_no_vblank
);
49 dml_get_attr_decl(stutter_efficiency
);
50 dml_get_attr_decl(stutter_period
);
51 dml_get_attr_decl(urgent_latency
);
52 dml_get_attr_decl(urgent_extra_latency
);
53 dml_get_attr_decl(nonurgent_latency
);
54 dml_get_attr_decl(dram_clock_change_latency
);
55 dml_get_attr_decl(dispclk_calculated
);
56 dml_get_attr_decl(total_data_read_bw
);
57 dml_get_attr_decl(return_bw
);
58 dml_get_attr_decl(tcalc
);
59 dml_get_attr_decl(fraction_of_urgent_bandwidth
);
60 dml_get_attr_decl(fraction_of_urgent_bandwidth_imm_flip
);
61 dml_get_attr_decl(cstate_max_cap_mode
);
62 dml_get_attr_decl(comp_buffer_size_kbytes
);
63 dml_get_attr_decl(pixel_chunk_size_in_kbyte
);
64 dml_get_attr_decl(alpha_pixel_chunk_size_in_kbyte
);
65 dml_get_attr_decl(meta_chunk_size_in_kbyte
);
66 dml_get_attr_decl(min_pixel_chunk_size_in_byte
);
67 dml_get_attr_decl(min_meta_chunk_size_in_byte
);
68 dml_get_attr_decl(fclk_watermark
);
69 dml_get_attr_decl(usr_retraining_watermark
);
70 dml_get_attr_decl(comp_buffer_reserved_space_kbytes
);
71 dml_get_attr_decl(comp_buffer_reserved_space_64bytes
);
72 dml_get_attr_decl(comp_buffer_reserved_space_zs
);
73 dml_get_attr_decl(unbounded_request_enabled
);
75 #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)
77 dml_get_pipe_attr_decl(dsc_delay
);
78 dml_get_pipe_attr_decl(dppclk_calculated
);
79 dml_get_pipe_attr_decl(dscclk_calculated
);
80 dml_get_pipe_attr_decl(min_ttu_vblank
);
81 dml_get_pipe_attr_decl(min_ttu_vblank_in_us
);
82 dml_get_pipe_attr_decl(vratio_prefetch_l
);
83 dml_get_pipe_attr_decl(vratio_prefetch_c
);
84 dml_get_pipe_attr_decl(dst_x_after_scaler
);
85 dml_get_pipe_attr_decl(dst_y_after_scaler
);
86 dml_get_pipe_attr_decl(dst_y_per_vm_vblank
);
87 dml_get_pipe_attr_decl(dst_y_per_row_vblank
);
88 dml_get_pipe_attr_decl(dst_y_prefetch
);
89 dml_get_pipe_attr_decl(dst_y_per_vm_flip
);
90 dml_get_pipe_attr_decl(dst_y_per_row_flip
);
91 dml_get_pipe_attr_decl(dst_y_per_pte_row_nom_l
);
92 dml_get_pipe_attr_decl(dst_y_per_pte_row_nom_c
);
93 dml_get_pipe_attr_decl(dst_y_per_meta_row_nom_l
);
94 dml_get_pipe_attr_decl(dst_y_per_meta_row_nom_c
);
95 dml_get_pipe_attr_decl(dpte_row_height_linear_c
);
96 dml_get_pipe_attr_decl(swath_height_l
);
97 dml_get_pipe_attr_decl(swath_height_c
);
98 dml_get_pipe_attr_decl(det_stored_buffer_size_l_bytes
);
99 dml_get_pipe_attr_decl(det_stored_buffer_size_c_bytes
);
100 dml_get_pipe_attr_decl(dpte_group_size_in_bytes
);
101 dml_get_pipe_attr_decl(vm_group_size_in_bytes
);
102 dml_get_pipe_attr_decl(det_buffer_size_kbytes
);
103 dml_get_pipe_attr_decl(dpte_row_height_linear_l
);
104 dml_get_pipe_attr_decl(refcyc_per_pte_group_nom_l_in_us
);
105 dml_get_pipe_attr_decl(refcyc_per_pte_group_nom_c_in_us
);
106 dml_get_pipe_attr_decl(refcyc_per_pte_group_vblank_l_in_us
);
107 dml_get_pipe_attr_decl(refcyc_per_pte_group_vblank_c_in_us
);
108 dml_get_pipe_attr_decl(refcyc_per_pte_group_flip_l_in_us
);
109 dml_get_pipe_attr_decl(refcyc_per_pte_group_flip_c_in_us
);
110 dml_get_pipe_attr_decl(pte_buffer_mode
);
111 dml_get_pipe_attr_decl(refcyc_per_vm_group_vblank
);
112 dml_get_pipe_attr_decl(refcyc_per_vm_group_flip
);
113 dml_get_pipe_attr_decl(refcyc_per_vm_req_vblank
);
114 dml_get_pipe_attr_decl(refcyc_per_vm_req_flip
);
115 dml_get_pipe_attr_decl(refcyc_per_vm_group_vblank_in_us
);
116 dml_get_pipe_attr_decl(refcyc_per_vm_group_flip_in_us
);
117 dml_get_pipe_attr_decl(refcyc_per_vm_req_vblank_in_us
);
118 dml_get_pipe_attr_decl(refcyc_per_vm_req_flip_in_us
);
119 dml_get_pipe_attr_decl(refcyc_per_vm_dmdata_in_us
);
120 dml_get_pipe_attr_decl(dmdata_dl_delta_in_us
);
121 dml_get_pipe_attr_decl(refcyc_per_line_delivery_l_in_us
);
122 dml_get_pipe_attr_decl(refcyc_per_line_delivery_c_in_us
);
123 dml_get_pipe_attr_decl(refcyc_per_line_delivery_pre_l_in_us
);
124 dml_get_pipe_attr_decl(refcyc_per_line_delivery_pre_c_in_us
);
125 dml_get_pipe_attr_decl(refcyc_per_req_delivery_l_in_us
);
126 dml_get_pipe_attr_decl(refcyc_per_req_delivery_c_in_us
);
127 dml_get_pipe_attr_decl(refcyc_per_req_delivery_pre_l_in_us
);
128 dml_get_pipe_attr_decl(refcyc_per_req_delivery_pre_c_in_us
);
129 dml_get_pipe_attr_decl(refcyc_per_cursor_req_delivery_in_us
);
130 dml_get_pipe_attr_decl(refcyc_per_cursor_req_delivery_pre_in_us
);
131 dml_get_pipe_attr_decl(refcyc_per_meta_chunk_nom_l_in_us
);
132 dml_get_pipe_attr_decl(refcyc_per_meta_chunk_nom_c_in_us
);
133 dml_get_pipe_attr_decl(refcyc_per_meta_chunk_vblank_l_in_us
);
134 dml_get_pipe_attr_decl(refcyc_per_meta_chunk_vblank_c_in_us
);
135 dml_get_pipe_attr_decl(refcyc_per_meta_chunk_flip_l_in_us
);
136 dml_get_pipe_attr_decl(refcyc_per_meta_chunk_flip_c_in_us
);
138 dml_get_pipe_attr_decl(vstartup
);
139 dml_get_pipe_attr_decl(vupdate_offset
);
140 dml_get_pipe_attr_decl(vupdate_width
);
141 dml_get_pipe_attr_decl(vready_offset
);
142 dml_get_pipe_attr_decl(vready_at_or_after_vsync
);
143 dml_get_pipe_attr_decl(min_dst_y_next_start
);
144 dml_get_pipe_attr_decl(vstartup_calculated
);
145 dml_get_pipe_attr_decl(subviewport_lines_needed_in_mall
);
147 double get_total_immediate_flip_bytes(
148 struct display_mode_lib
*mode_lib
,
149 const display_e2e_pipe_params_st
*pipes
,
150 unsigned int num_pipes
);
151 double get_total_immediate_flip_bw(
152 struct display_mode_lib
*mode_lib
,
153 const display_e2e_pipe_params_st
*pipes
,
154 unsigned int num_pipes
);
155 double get_total_prefetch_bw(
156 struct display_mode_lib
*mode_lib
,
157 const display_e2e_pipe_params_st
*pipes
,
158 unsigned int num_pipes
);
159 unsigned int dml_get_voltage_level(
160 struct display_mode_lib
*mode_lib
,
161 const display_e2e_pipe_params_st
*pipes
,
162 unsigned int num_pipes
);
164 unsigned int get_total_surface_size_in_mall_bytes(
165 struct display_mode_lib
*mode_lib
,
166 const display_e2e_pipe_params_st
*pipes
,
167 unsigned int num_pipes
);
169 bool get_is_phantom_pipe(struct display_mode_lib
*mode_lib
,
170 const display_e2e_pipe_params_st
*pipes
,
171 unsigned int num_pipes
,
172 unsigned int pipe_idx
);
173 void PixelClockAdjustmentForProgressiveToInterlaceUnit(struct display_mode_lib
*mode_lib
);
175 void Calculate256BBlockSizes(
176 enum source_format_class SourcePixelFormat
,
177 enum dm_swizzle_mode SurfaceTiling
,
178 unsigned int BytePerPixelY
,
179 unsigned int BytePerPixelC
,
180 unsigned int *BlockHeight256BytesY
,
181 unsigned int *BlockHeight256BytesC
,
182 unsigned int *BlockWidth256BytesY
,
183 unsigned int *BlockWidth256BytesC
);
185 struct DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation
{
186 unsigned int dummy_integer_array
[2][DC__NUM_DPP__MAX
];
187 double dummy_single_array
[2][DC__NUM_DPP__MAX
];
188 unsigned int dummy_long_array
[2][DC__NUM_DPP__MAX
];
189 double dummy_double_array
[2][DC__NUM_DPP__MAX
];
190 bool dummy_boolean_array
[DC__NUM_DPP__MAX
];
193 enum output_encoder_class dummy_output_encoder_array
[DC__NUM_DPP__MAX
];
194 DmlPipe SurfaceParameters
[DC__NUM_DPP__MAX
];
195 bool dummy_boolean_array2
[2][DC__NUM_DPP__MAX
];
196 unsigned int ReorderBytes
;
197 unsigned int VMDataOnlyReturnBW
;
198 double HostVMInefficiencyFactor
;
200 SOCParametersList mmSOCParameters
;
201 double dummy_unit_vector
[DC__NUM_DPP__MAX
];
202 double dummy_single
[2];
203 enum clock_change_support dummy_dramchange_support
;
204 enum dm_fclock_change_support dummy_fclkchange_support
;
205 bool dummy_USRRetrainingSupport
;
208 struct dml32_ModeSupportAndSystemConfigurationFull
{
209 unsigned int dummy_integer_array
[22][DC__NUM_DPP__MAX
];
210 double dummy_double_array
[2][DC__NUM_DPP__MAX
];
211 DmlPipe SurfParameters
[DC__NUM_DPP__MAX
];
212 double dummy_single
[5];
213 double dummy_single2
[5];
214 SOCParametersList mSOCParameters
;
215 unsigned int MaximumSwathWidthSupportLuma
;
216 unsigned int MaximumSwathWidthSupportChroma
;
217 double DSTYAfterScaler
[DC__NUM_DPP__MAX
];
218 double DSTXAfterScaler
[DC__NUM_DPP__MAX
];
219 double MaxTotalVActiveRDBandwidth
;
220 bool dummy_boolean_array
[2][DC__NUM_DPP__MAX
];
221 enum odm_combine_mode dummy_odm_mode
[DC__NUM_DPP__MAX
];
223 unsigned int dummy_integer
[4];
224 unsigned int TotalNumberOfActiveOTG
;
225 unsigned int TotalNumberOfActiveHDMIFRL
;
226 unsigned int TotalNumberOfActiveDP2p0
;
227 unsigned int TotalNumberOfActiveDP2p0Outputs
;
228 unsigned int TotalDSCUnitsRequired
;
229 unsigned int ReorderingBytes
;
230 unsigned int TotalSlots
;
231 unsigned int NumberOfDPPDSC
;
232 unsigned int NumberOfDPPNoDSC
;
233 unsigned int NextPrefetchModeState
;
234 bool MPCCombineMethodAsNeededForPStateChangeAndVoltage
;
235 bool MPCCombineMethodAsPossible
;
236 bool FullFrameMALLPStateMethod
;
237 bool SubViewportMALLPStateMethod
;
238 bool PhantomPipeMALLPStateMethod
;
240 bool TotalAvailablePipesSupportNoDSC
;
241 bool TotalAvailablePipesSupportDSC
;
242 enum odm_combine_mode ODMModeNoDSC
;
243 enum odm_combine_mode ODMModeDSC
;
244 double RequiredDISPCLKPerSurfaceNoDSC
;
245 double RequiredDISPCLKPerSurfaceDSC
;
246 double BWOfNonCombinedSurfaceOfMaximumBandwidth
;
247 double VMDataOnlyReturnBWPerState
;
248 double HostVMInefficiencyFactor
;
249 bool dummy_boolean
[2];
253 struct DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation
254 DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation
;
255 struct dml32_ModeSupportAndSystemConfigurationFull dml32_ModeSupportAndSystemConfigurationFull
;
260 soc_bounding_box_st soc
;
263 bool UseMaximumVStartup
;
265 double WritebackDISPCLK
;
266 double DPPCLKUsingSingleDPPLuma
;
267 double DPPCLKUsingSingleDPPChroma
;
268 double DISPCLKWithRamping
;
269 double DISPCLKWithoutRamping
;
271 double DISPCLKWithRampingRoundedToDFSGranularity
;
272 double DISPCLKWithoutRampingRoundedToDFSGranularity
;
273 double MaxDispclkRoundedToDFSGranularity
;
274 bool DCCEnabledAnyPlane
;
275 double ReturnBandwidthToDCN
;
276 unsigned int TotalActiveDPP
;
277 unsigned int TotalDCCActiveDPP
;
278 double UrgentRoundTripAndOutOfOrderLatency
;
279 double StutterPeriod
;
280 double FrameTimeForMinFullDETBufferingTime
;
281 double AverageReadBandwidth
;
282 double TotalRowReadBandwidth
;
283 double PartOfBurstThatFitsInROB
;
284 double StutterBurstTime
;
285 unsigned int NextPrefetchMode
;
286 double NextMaxVStartup
;
288 double SmallestVBlank
;
289 enum dm_prefetch_modes AllowForPStateChangeOrStutterInVBlankFinal
; // Mode Support only
290 double DCFCLKDeepSleepPerPlane
[DC__NUM_DPP__MAX
];
291 double EffectiveDETPlusLBLinesLuma
;
292 double EffectiveDETPlusLBLinesChroma
;
293 double UrgentLatencySupportUsLuma
;
294 double UrgentLatencySupportUsChroma
;
295 unsigned int DSCFormatFactor
;
297 bool DummyPStateCheck
;
298 bool DRAMClockChangeSupportsVActive
;
299 bool PrefetchModeSupported
;
300 bool PrefetchAndImmediateFlipSupported
;
301 enum self_refresh_affinity AllowDRAMSelfRefreshOrDRAMClockChangeInVblank
; // Mode Support only
302 double XFCRemoteSurfaceFlipDelay
;
305 double SrcActiveDrainRate
;
306 bool ImmediateFlipSupported
;
307 enum mpc_combine_affinity WhenToDoMPCCombine
; // Mode Support only
311 unsigned int VStartupLines
;
312 unsigned int ActiveDPPs
;
313 unsigned int LBLatencyHidingSourceLinesY
;
314 unsigned int LBLatencyHidingSourceLinesC
;
315 double ActiveDRAMClockChangeLatencyMargin
[DC__NUM_DPP__MAX
];
316 double CachedActiveDRAMClockChangeLatencyMargin
[DC__NUM_DPP__MAX
]; // Cache in dml_get_voltage_level for debug purposes only
317 double MinActiveDRAMClockChangeMargin
;
318 double InitFillLevel
;
319 double FinalFillMargin
;
320 double FinalFillLevel
;
321 double RemainingFillLevel
;
325 // SOC Bounding Box Parameters
328 double SREnterPlusExitTime
;
329 double UrgentLatencyPixelDataOnly
;
330 double UrgentLatencyPixelMixedWithVMData
;
331 double UrgentLatencyVMDataOnly
;
332 double UrgentLatency
; // max of the above three
333 double USRRetrainingLatency
;
335 double FCLKChangeLatency
;
336 unsigned int MALLAllocatedForDCNFinal
;
337 double MaxAveragePercentOfIdealFabricBWDisplayCanUseInNormalSystemOperation
;
338 double MaxAveragePercentOfIdealDRAMBWDisplayCanUseInNormalSystemOperationSTROBE
;
339 double PercentOfIdealDRAMBWReceivedAfterUrgLatencySTROBE
;
340 double WritebackLatency
;
341 double PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelDataOnly
; // Mode Support
342 double PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData
; // Mode Support
343 double PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyVMDataOnly
; // Mode Support
344 double MaxAveragePercentOfIdealSDPPortBWDisplayCanUseInNormalSystemOperation
; // Mode Support
345 double MaxAveragePercentOfIdealDRAMBWDisplayCanUseInNormalSystemOperation
; // Mode Support
346 double NumberOfChannels
;
347 double DRAMChannelWidth
;
348 double FabricDatapathToDCNDataReturn
;
349 double ReturnBusWidth
;
350 double Downspreading
;
351 double DISPCLKDPPCLKDSCCLKDownSpreading
;
352 double DISPCLKDPPCLKVCOSpeed
;
353 double RoundTripPingLatencyCycles
;
354 double UrgentOutOfOrderReturnPerChannel
;
355 double UrgentOutOfOrderReturnPerChannelPixelDataOnly
;
356 double UrgentOutOfOrderReturnPerChannelPixelMixedWithVMData
;
357 double UrgentOutOfOrderReturnPerChannelVMDataOnly
;
358 unsigned int VMMPageSize
;
359 double DRAMClockChangeLatency
;
360 double XFCBusTransportTime
;
361 bool UseUrgentBurstBandwidth
;
362 double XFCXBUFLatencyTolerance
;
367 unsigned int ROBBufferSizeInKByte
;
368 unsigned int DETBufferSizeInKByte
[DC__NUM_DPP__MAX
];
369 double DETBufferSizeInTime
;
370 unsigned int DPPOutputBufferPixels
;
371 unsigned int OPPOutputBufferLines
;
372 unsigned int PixelChunkSizeInKByte
;
376 unsigned int GPUVMMaxPageTableLevels
;
377 unsigned int HostVMMaxPageTableLevels
;
378 unsigned int HostVMCachedPageTableLevels
;
379 unsigned int OverrideGPUVMPageTableLevels
;
380 unsigned int OverrideHostVMPageTableLevels
;
381 unsigned int MetaChunkSize
;
382 unsigned int MinMetaChunkSizeBytes
;
383 unsigned int WritebackChunkSize
;
385 unsigned int NumberOfDSC
;
386 unsigned int LineBufferSize
;
387 unsigned int MaxLineBufferLines
;
388 unsigned int WritebackInterfaceLumaBufferSize
;
389 unsigned int WritebackInterfaceChromaBufferSize
;
390 unsigned int WritebackChromaLineBufferWidth
;
391 enum writeback_config WritebackConfiguration
;
392 double MaxDCHUBToPSCLThroughput
;
393 double MaxPSCLToLBThroughput
;
394 unsigned int PTEBufferSizeInRequestsLuma
;
395 unsigned int PTEBufferSizeInRequestsChroma
;
396 double DISPCLKRampingMargin
;
397 unsigned int MaxInterDCNTileRepeaters
;
399 double XFCSlvChunkSize
;
400 double XFCFillBWOverhead
;
401 double XFCFillConstant
;
402 double XFCTSlvVupdateOffset
;
403 double XFCTSlvVupdateWidth
;
404 double XFCTSlvVreadyOffset
;
405 double DPPCLKDelaySubtotal
;
406 double DPPCLKDelaySCL
;
407 double DPPCLKDelaySCLLBOnly
;
408 double DPPCLKDelayCNVCFormater
;
409 double DPPCLKDelayCNVCCursor
;
410 double DISPCLKDelaySubtotal
;
411 bool ProgressiveToInterlaceUnitInOPP
;
412 unsigned int CompressedBufferSegmentSizeInkByteFinal
;
413 unsigned int CompbufReservedSpace64B
;
414 unsigned int CompbufReservedSpaceZs
;
415 unsigned int LineBufferSizeFinal
;
416 unsigned int MaximumPixelsPerLinePerDSCUnit
;
417 unsigned int AlphaPixelChunkSizeInKByte
;
418 double MinPixelChunkSizeBytes
;
419 unsigned int DCCMetaBufferSizeBytes
;
420 // Pipe/Plane Parameters
427 unsigned int MaxTotalDETInKByte
;
428 unsigned int MinCompressedBufferSizeInKByte
;
429 unsigned int NumberOfActiveSurfaces
;
430 bool ViewportStationary
[DC__NUM_DPP__MAX
];
431 unsigned int RefreshRate
[DC__NUM_DPP__MAX
];
432 double OutputBPP
[DC__NUM_DPP__MAX
];
433 unsigned int GPUVMMinPageSizeKBytes
[DC__NUM_DPP__MAX
];
434 bool SynchronizeTimingsFinal
;
435 bool SynchronizeDRRDisplaysForUCLKPStateChangeFinal
;
436 bool ForceOneRowForFrame
[DC__NUM_DPP__MAX
];
437 unsigned int ViewportXStartY
[DC__NUM_DPP__MAX
];
438 unsigned int ViewportXStartC
[DC__NUM_DPP__MAX
];
439 enum dm_rotation_angle SourceRotation
[DC__NUM_DPP__MAX
];
440 bool DRRDisplay
[DC__NUM_DPP__MAX
];
441 bool PteBufferMode
[DC__NUM_DPP__MAX
];
442 enum dm_output_type OutputType
[DC__NUM_DPP__MAX
];
443 enum dm_output_rate OutputRate
[DC__NUM_DPP__MAX
];
445 unsigned int NumberOfActivePlanes
;
446 unsigned int NumberOfDSCSlices
[DC__NUM_DPP__MAX
];
447 unsigned int ViewportWidth
[DC__NUM_DPP__MAX
];
448 unsigned int ViewportHeight
[DC__NUM_DPP__MAX
];
449 unsigned int ViewportYStartY
[DC__NUM_DPP__MAX
];
450 unsigned int ViewportYStartC
[DC__NUM_DPP__MAX
];
451 unsigned int PitchY
[DC__NUM_DPP__MAX
];
452 unsigned int PitchC
[DC__NUM_DPP__MAX
];
453 double HRatio
[DC__NUM_DPP__MAX
];
454 double VRatio
[DC__NUM_DPP__MAX
];
455 unsigned int htaps
[DC__NUM_DPP__MAX
];
456 unsigned int vtaps
[DC__NUM_DPP__MAX
];
457 unsigned int HTAPsChroma
[DC__NUM_DPP__MAX
];
458 unsigned int VTAPsChroma
[DC__NUM_DPP__MAX
];
459 unsigned int HTotal
[DC__NUM_DPP__MAX
];
460 unsigned int VTotal
[DC__NUM_DPP__MAX
];
461 unsigned int VTotal_Max
[DC__NUM_DPP__MAX
];
462 unsigned int VTotal_Min
[DC__NUM_DPP__MAX
];
463 int DPPPerPlane
[DC__NUM_DPP__MAX
];
464 double PixelClock
[DC__NUM_DPP__MAX
];
465 double PixelClockBackEnd
[DC__NUM_DPP__MAX
];
466 bool DCCEnable
[DC__NUM_DPP__MAX
];
467 bool FECEnable
[DC__NUM_DPP__MAX
];
468 unsigned int DCCMetaPitchY
[DC__NUM_DPP__MAX
];
469 unsigned int DCCMetaPitchC
[DC__NUM_DPP__MAX
];
470 enum scan_direction_class SourceScan
[DC__NUM_DPP__MAX
];
471 enum source_format_class SourcePixelFormat
[DC__NUM_DPP__MAX
];
472 bool WritebackEnable
[DC__NUM_DPP__MAX
];
473 unsigned int ActiveWritebacksPerPlane
[DC__NUM_DPP__MAX
];
474 double WritebackDestinationWidth
[DC__NUM_DPP__MAX
];
475 double WritebackDestinationHeight
[DC__NUM_DPP__MAX
];
476 double WritebackSourceHeight
[DC__NUM_DPP__MAX
];
477 enum source_format_class WritebackPixelFormat
[DC__NUM_DPP__MAX
];
478 unsigned int WritebackLumaHTaps
[DC__NUM_DPP__MAX
];
479 unsigned int WritebackLumaVTaps
[DC__NUM_DPP__MAX
];
480 unsigned int WritebackChromaHTaps
[DC__NUM_DPP__MAX
];
481 unsigned int WritebackChromaVTaps
[DC__NUM_DPP__MAX
];
482 double WritebackHRatio
[DC__NUM_DPP__MAX
];
483 double WritebackVRatio
[DC__NUM_DPP__MAX
];
484 unsigned int HActive
[DC__NUM_DPP__MAX
];
485 unsigned int VActive
[DC__NUM_DPP__MAX
];
486 bool Interlace
[DC__NUM_DPP__MAX
];
487 enum dm_swizzle_mode SurfaceTiling
[DC__NUM_DPP__MAX
];
488 unsigned int ScalerRecoutWidth
[DC__NUM_DPP__MAX
];
489 bool DynamicMetadataEnable
[DC__NUM_DPP__MAX
];
490 int DynamicMetadataLinesBeforeActiveRequired
[DC__NUM_DPP__MAX
];
491 unsigned int DynamicMetadataTransmittedBytes
[DC__NUM_DPP__MAX
];
492 double DCCRate
[DC__NUM_DPP__MAX
];
493 double AverageDCCCompressionRate
;
494 enum odm_combine_mode ODMCombineEnabled
[DC__NUM_DPP__MAX
];
495 double OutputBpp
[DC__NUM_DPP__MAX
];
496 bool DSCEnabled
[DC__NUM_DPP__MAX
];
497 unsigned int DSCInputBitPerComponent
[DC__NUM_DPP__MAX
];
498 enum output_format_class OutputFormat
[DC__NUM_DPP__MAX
];
499 enum output_encoder_class Output
[DC__NUM_DPP__MAX
];
500 bool skip_dio_check
[DC__NUM_DPP__MAX
];
501 unsigned int BlendingAndTiming
[DC__NUM_DPP__MAX
];
502 bool SynchronizedVBlank
;
503 unsigned int NumberOfCursors
[DC__NUM_DPP__MAX
];
504 unsigned int CursorWidth
[DC__NUM_DPP__MAX
][DC__NUM_CURSOR__MAX
];
505 unsigned int CursorBPP
[DC__NUM_DPP__MAX
][DC__NUM_CURSOR__MAX
];
506 bool XFCEnabled
[DC__NUM_DPP__MAX
];
507 bool ScalerEnabled
[DC__NUM_DPP__MAX
];
508 unsigned int VBlankNom
[DC__NUM_DPP__MAX
];
509 bool DisableUnboundRequestIfCompBufReservedSpaceNeedAdjustment
;
511 // Intermediates/Informational
512 bool ImmediateFlipSupport
;
513 unsigned int DETBufferSizeY
[DC__NUM_DPP__MAX
];
514 unsigned int DETBufferSizeC
[DC__NUM_DPP__MAX
];
515 unsigned int SwathHeightY
[DC__NUM_DPP__MAX
];
516 unsigned int SwathHeightC
[DC__NUM_DPP__MAX
];
517 unsigned int LBBitPerPixel
[DC__NUM_DPP__MAX
];
518 double LastPixelOfLineExtraWatermark
;
519 double TotalDataReadBandwidth
;
520 unsigned int TotalActiveWriteback
;
521 unsigned int EffectiveLBLatencyHidingSourceLinesLuma
;
522 unsigned int EffectiveLBLatencyHidingSourceLinesChroma
;
523 double BandwidthAvailableForImmediateFlip
;
524 unsigned int PrefetchMode
[DC__VOLTAGE_STATES
][2];
525 unsigned int PrefetchModePerState
[DC__VOLTAGE_STATES
][2];
526 unsigned int MinPrefetchMode
;
527 unsigned int MaxPrefetchMode
;
528 bool AnyLinesForVMOrRowTooLarge
;
530 bool IgnoreViewportPositioning
;
531 bool ErrorResult
[DC__NUM_DPP__MAX
];
533 // Calculated dml_ml->vba.Outputs
535 double DCFCLKDeepSleep
;
536 double UrgentWatermark
;
537 double UrgentExtraLatency
;
538 double WritebackUrgentWatermark
;
539 double StutterExitWatermark
;
540 double StutterEnterPlusExitWatermark
;
541 double DRAMClockChangeWatermark
;
542 double WritebackDRAMClockChangeWatermark
;
543 double StutterEfficiency
;
544 double StutterEfficiencyNotIncludingVBlank
;
545 double NonUrgentLatencyTolerance
;
546 double MinActiveDRAMClockChangeLatencySupported
;
547 double Z8StutterEfficiencyBestCase
;
548 unsigned int Z8NumberOfStutterBurstsPerFrameBestCase
;
549 double Z8StutterEfficiencyNotIncludingVBlankBestCase
;
550 double StutterPeriodBestCase
;
551 Watermarks Watermark
;
552 bool DCHUBBUB_ARB_CSTATE_MAX_CAP_MODE
;
553 unsigned int CompBufReservedSpaceKBytes
;
554 unsigned int CompBufReservedSpace64B
;
555 unsigned int CompBufReservedSpaceZs
;
556 bool CompBufReservedSpaceNeedAdjustment
;
558 // These are the clocks calcuated by the library but they are not actually
559 // used explicitly. They are fetched by tests and then possibly used. The
560 // ultimate values to use are the ones specified by the parameters to DML
561 double DISPCLK_calculated
;
562 double DPPCLK_calculated
[DC__NUM_DPP__MAX
];
564 bool ImmediateFlipSupportedSurface
[DC__NUM_DPP__MAX
];
566 bool Use_One_Row_For_Frame
[DC__NUM_DPP__MAX
];
567 bool Use_One_Row_For_Frame_Flip
[DC__NUM_DPP__MAX
];
568 unsigned int VUpdateOffsetPix
[DC__NUM_DPP__MAX
];
569 double VUpdateWidthPix
[DC__NUM_DPP__MAX
];
570 double VReadyOffsetPix
[DC__NUM_DPP__MAX
];
572 unsigned int TotImmediateFlipBytes
;
575 display_e2e_pipe_params_st cache_pipes
[DC__NUM_DPP__MAX
];
576 unsigned int cache_num_pipes
;
577 unsigned int pipe_plane
[DC__NUM_DPP__MAX
];
579 /* vba mode support */
581 bool SupportGFX7CompatibleTilingIn32bppAnd64bpp
;
584 unsigned int MaxNumWriteback
;
585 bool WritebackLumaAndChromaScalingSupported
;
586 bool Cursor64BppSupport
;
587 double DCFCLKPerState
[DC__VOLTAGE_STATES
];
588 double DCFCLKState
[DC__VOLTAGE_STATES
][2];
589 double FabricClockPerState
[DC__VOLTAGE_STATES
];
590 double SOCCLKPerState
[DC__VOLTAGE_STATES
];
591 double PHYCLKPerState
[DC__VOLTAGE_STATES
];
592 double DTBCLKPerState
[DC__VOLTAGE_STATES
];
593 double MaxDppclk
[DC__VOLTAGE_STATES
];
594 double MaxDSCCLK
[DC__VOLTAGE_STATES
];
595 double DRAMSpeedPerState
[DC__VOLTAGE_STATES
];
596 double MaxDispclk
[DC__VOLTAGE_STATES
];
597 int VoltageOverrideLevel
;
598 double PHYCLKD32PerState
[DC__VOLTAGE_STATES
];
601 bool ScaleRatioAndTapsSupport
;
602 bool SourceFormatPixelAndScanSupport
;
603 double TotalBandwidthConsumedGBytePerSecond
;
604 bool DCCEnabledInAnyPlane
;
605 bool WritebackLatencySupport
;
606 bool WritebackModeSupport
;
607 bool Writeback10bpc420Supported
;
608 bool BandwidthSupport
[DC__VOLTAGE_STATES
];
609 unsigned int TotalNumberOfActiveWriteback
;
610 double CriticalPoint
;
611 double ReturnBWToDCNPerState
;
612 bool IsErrorResult
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
613 bool prefetch_vm_bw_valid
;
614 bool prefetch_row_bw_valid
;
615 bool NumberOfOTGSupport
;
616 bool NonsupportedDSCInputBPC
;
617 bool WritebackScaleRatioAndTapsSupport
;
620 enum dm_validation_status ValidationStatus
[DC__VOLTAGE_STATES
];
622 /* Mode Support Reason */
624 bool DSCOnlyIfNecessaryWithBPP
;
625 bool DSC422NativeNotSupported
;
626 bool LinkRateDoesNotMatchDPVersion
;
627 bool LinkRateForMultistreamNotIndicated
;
628 bool BPPForMultistreamNotIndicated
;
629 bool MultistreamWithHDMIOreDP
;
630 bool MSOOrODMSplitWithNonDPLink
;
631 bool NotEnoughLanesForMSO
;
632 bool ViewportExceedsSurface
;
634 bool ImmediateFlipRequiredButTheRequirementForEachSurfaceIsNotSpecified
;
635 bool ImmediateFlipOrHostVMAndPStateWithMALLFullFrameOrPhantomPipe
;
636 bool InvalidCombinationOfMALLUseForPStateAndStaticScreen
;
637 bool InvalidCombinationOfMALLUseForPState
;
639 enum dm_output_link_dp_rate OutputLinkDPRate
[DC__NUM_DPP__MAX
];
640 double PrefetchLinesYThisState
[DC__NUM_DPP__MAX
];
641 double PrefetchLinesCThisState
[DC__NUM_DPP__MAX
];
642 double meta_row_bandwidth_this_state
[DC__NUM_DPP__MAX
];
643 double dpte_row_bandwidth_this_state
[DC__NUM_DPP__MAX
];
644 double DPTEBytesPerRowThisState
[DC__NUM_DPP__MAX
];
645 double PDEAndMetaPTEBytesPerFrameThisState
[DC__NUM_DPP__MAX
];
646 double MetaRowBytesThisState
[DC__NUM_DPP__MAX
];
647 bool use_one_row_for_frame
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
648 bool use_one_row_for_frame_flip
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
649 bool use_one_row_for_frame_this_state
[DC__NUM_DPP__MAX
];
650 bool use_one_row_for_frame_flip_this_state
[DC__NUM_DPP__MAX
];
652 unsigned int OutputTypeAndRatePerState
[DC__VOLTAGE_STATES
][DC__NUM_DPP__MAX
];
653 double RequiredDISPCLKPerSurface
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
654 unsigned int MicroTileHeightY
[DC__NUM_DPP__MAX
];
655 unsigned int MicroTileHeightC
[DC__NUM_DPP__MAX
];
656 unsigned int MicroTileWidthY
[DC__NUM_DPP__MAX
];
657 unsigned int MicroTileWidthC
[DC__NUM_DPP__MAX
];
658 bool ImmediateFlipRequiredFinal
;
659 bool DCCProgrammingAssumesScanDirectionUnknownFinal
;
660 bool EnoughWritebackUnits
;
661 bool ODMCombine2To1SupportCheckOK
[DC__VOLTAGE_STATES
];
662 bool NumberOfDP2p0Support
;
663 unsigned int MaxNumDP2p0Streams
;
664 unsigned int MaxNumDP2p0Outputs
;
665 enum dm_output_type OutputTypePerState
[DC__VOLTAGE_STATES
][DC__NUM_DPP__MAX
];
666 enum dm_output_rate OutputRatePerState
[DC__VOLTAGE_STATES
][DC__NUM_DPP__MAX
];
667 double WritebackLineBufferLumaBufferSize
;
668 double WritebackLineBufferChromaBufferSize
;
669 double WritebackMinHSCLRatio
;
670 double WritebackMinVSCLRatio
;
671 double WritebackMaxHSCLRatio
;
672 double WritebackMaxVSCLRatio
;
673 double WritebackMaxHSCLTaps
;
674 double WritebackMaxVSCLTaps
;
675 unsigned int MaxNumDPP
;
676 unsigned int MaxNumOTG
;
677 double CursorBufferSize
;
678 double CursorChunkSize
;
680 double OutputLinkDPLanes
[DC__NUM_DPP__MAX
];
681 double ForcedOutputLinkBPP
[DC__NUM_DPP__MAX
]; // Mode Support only
682 double ImmediateFlipBW
[DC__NUM_DPP__MAX
];
683 double MaxMaxVStartup
[DC__VOLTAGE_STATES
][2];
685 double WritebackLumaVExtra
;
686 double WritebackChromaVExtra
;
687 double WritebackRequiredDISPCLK
;
688 double MaximumSwathWidthSupport
;
689 double MaximumSwathWidthInDETBuffer
;
690 double MaximumSwathWidthInLineBuffer
;
691 double MaxDispclkRoundedDownToDFSGranularity
;
692 double MaxDppclkRoundedDownToDFSGranularity
;
693 double PlaneRequiredDISPCLKWithoutODMCombine
;
694 double PlaneRequiredDISPCLKWithODMCombine
;
695 double PlaneRequiredDISPCLK
;
696 double TotalNumberOfActiveOTG
;
698 double EffectiveFECOverhead
;
700 unsigned int OutbppDSC
;
701 double TotalDSCUnitsRequired
;
704 double SwathWidthGranularityY
;
705 double RoundedUpMaxSwathSizeBytesY
;
706 double SwathWidthGranularityC
;
707 double RoundedUpMaxSwathSizeBytesC
;
708 double EffectiveDETLBLinesLuma
;
709 double EffectiveDETLBLinesChroma
;
710 double ProjectedDCFCLKDeepSleep
[DC__VOLTAGE_STATES
][2];
711 double PDEAndMetaPTEBytesPerFrameY
;
712 double PDEAndMetaPTEBytesPerFrameC
;
713 unsigned int MetaRowBytesY
;
714 unsigned int MetaRowBytesC
;
715 unsigned int DPTEBytesPerRowC
;
716 unsigned int DPTEBytesPerRowY
;
720 double MaximumReadBandwidthWithPrefetch
;
721 double MaximumReadBandwidthWithoutPrefetch
;
722 double total_dcn_read_bw_with_flip
;
723 double total_dcn_read_bw_with_flip_no_urgent_burst
;
724 double FractionOfUrgentBandwidth
;
725 double FractionOfUrgentBandwidthImmediateFlip
; // Mode Support debugging output
728 double IdealSDPPortBandwidthPerState
[DC__VOLTAGE_STATES
][2];
729 unsigned int NoOfDPP
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
730 int NoOfDPPThisState
[DC__NUM_DPP__MAX
];
731 enum odm_combine_mode ODMCombineEnablePerState
[DC__VOLTAGE_STATES
][DC__NUM_DPP__MAX
];
732 double SwathWidthYThisState
[DC__NUM_DPP__MAX
];
733 unsigned int SwathHeightCPerState
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
734 unsigned int SwathHeightYThisState
[DC__NUM_DPP__MAX
];
735 unsigned int SwathHeightCThisState
[DC__NUM_DPP__MAX
];
736 double VRatioPreY
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
737 double VRatioPreC
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
738 double RequiredPrefetchPixelDataBWLuma
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
739 double RequiredPrefetchPixelDataBWChroma
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
740 double RequiredDPPCLK
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
741 double RequiredDPPCLKThisState
[DC__NUM_DPP__MAX
];
742 bool PTEBufferSizeNotExceededY
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
743 bool PTEBufferSizeNotExceededC
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
744 bool BandwidthWithoutPrefetchSupported
[DC__VOLTAGE_STATES
][2];
745 bool PrefetchSupported
[DC__VOLTAGE_STATES
][2];
746 bool VRatioInPrefetchSupported
[DC__VOLTAGE_STATES
][2];
747 double RequiredDISPCLK
[DC__VOLTAGE_STATES
][2];
748 bool DISPCLK_DPPCLK_Support
[DC__VOLTAGE_STATES
][2];
749 bool TotalAvailablePipesSupport
[DC__VOLTAGE_STATES
][2];
750 unsigned int TotalNumberOfActiveDPP
[DC__VOLTAGE_STATES
][2];
751 unsigned int TotalNumberOfDCCActiveDPP
[DC__VOLTAGE_STATES
][2];
752 bool ModeSupport
[DC__VOLTAGE_STATES
][2];
753 double ReturnBWPerState
[DC__VOLTAGE_STATES
][2];
754 bool DIOSupport
[DC__VOLTAGE_STATES
];
755 bool NotEnoughDSCUnits
[DC__VOLTAGE_STATES
];
756 bool DSCCLKRequiredMoreThanSupported
[DC__VOLTAGE_STATES
];
757 bool DTBCLKRequiredMoreThanSupported
[DC__VOLTAGE_STATES
];
758 double UrgentRoundTripAndOutOfOrderLatencyPerState
[DC__VOLTAGE_STATES
];
759 bool ROBSupport
[DC__VOLTAGE_STATES
][2];
760 //based on rev 99: Dim DCCMetaBufferSizeSupport(NumberOfStates, 1) As Boolean
761 bool DCCMetaBufferSizeSupport
[DC__VOLTAGE_STATES
][2];
762 bool PTEBufferSizeNotExceeded
[DC__VOLTAGE_STATES
][2];
763 bool TotalVerticalActiveBandwidthSupport
[DC__VOLTAGE_STATES
][2];
764 double MaxTotalVerticalActiveAvailableBandwidth
[DC__VOLTAGE_STATES
][2];
765 double PrefetchBW
[DC__NUM_DPP__MAX
];
766 double PDEAndMetaPTEBytesPerFrame
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
767 double MetaRowBytes
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
768 double DPTEBytesPerRow
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
769 double PrefetchLinesY
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
770 double PrefetchLinesC
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
771 unsigned int MaxNumSwY
[DC__NUM_DPP__MAX
];
772 unsigned int MaxNumSwC
[DC__NUM_DPP__MAX
];
773 double PrefillY
[DC__NUM_DPP__MAX
];
774 double PrefillC
[DC__NUM_DPP__MAX
];
775 double LineTimesForPrefetch
[DC__NUM_DPP__MAX
];
776 double LinesForMetaPTE
[DC__NUM_DPP__MAX
];
777 double LinesForMetaAndDPTERow
[DC__NUM_DPP__MAX
];
778 double MinDPPCLKUsingSingleDPP
[DC__NUM_DPP__MAX
];
779 double SwathWidthYSingleDPP
[DC__NUM_DPP__MAX
];
780 double BytePerPixelInDETY
[DC__NUM_DPP__MAX
];
781 double BytePerPixelInDETC
[DC__NUM_DPP__MAX
];
782 bool RequiresDSC
[DC__VOLTAGE_STATES
][DC__NUM_DPP__MAX
];
783 unsigned int NumberOfDSCSlice
[DC__VOLTAGE_STATES
][DC__NUM_DPP__MAX
];
784 double RequiresFEC
[DC__VOLTAGE_STATES
][DC__NUM_DPP__MAX
];
785 double OutputBppPerState
[DC__VOLTAGE_STATES
][DC__NUM_DPP__MAX
];
786 double DSCDelayPerState
[DC__VOLTAGE_STATES
][DC__NUM_DPP__MAX
];
787 bool ViewportSizeSupport
[DC__VOLTAGE_STATES
][2];
788 unsigned int Read256BlockHeightY
[DC__NUM_DPP__MAX
];
789 unsigned int Read256BlockWidthY
[DC__NUM_DPP__MAX
];
790 unsigned int Read256BlockHeightC
[DC__NUM_DPP__MAX
];
791 unsigned int Read256BlockWidthC
[DC__NUM_DPP__MAX
];
792 double MaxSwathHeightY
[DC__NUM_DPP__MAX
];
793 double MaxSwathHeightC
[DC__NUM_DPP__MAX
];
794 double MinSwathHeightY
[DC__NUM_DPP__MAX
];
795 double MinSwathHeightC
[DC__NUM_DPP__MAX
];
796 double ReadBandwidthLuma
[DC__NUM_DPP__MAX
];
797 double ReadBandwidthChroma
[DC__NUM_DPP__MAX
];
798 double ReadBandwidth
[DC__NUM_DPP__MAX
];
799 double WriteBandwidth
[DC__NUM_DPP__MAX
];
800 double PSCL_FACTOR
[DC__NUM_DPP__MAX
];
801 double PSCL_FACTOR_CHROMA
[DC__NUM_DPP__MAX
];
802 double MaximumVStartup
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
803 unsigned int MacroTileWidthY
[DC__NUM_DPP__MAX
];
804 unsigned int MacroTileWidthC
[DC__NUM_DPP__MAX
];
805 double AlignedDCCMetaPitch
[DC__NUM_DPP__MAX
];
806 double AlignedYPitch
[DC__NUM_DPP__MAX
];
807 double AlignedCPitch
[DC__NUM_DPP__MAX
];
808 double MaximumSwathWidth
[DC__NUM_DPP__MAX
];
809 double cursor_bw
[DC__NUM_DPP__MAX
];
810 double cursor_bw_pre
[DC__NUM_DPP__MAX
];
811 double Tno_bw
[DC__NUM_DPP__MAX
];
812 double prefetch_vmrow_bw
[DC__NUM_DPP__MAX
];
813 double DestinationLinesToRequestVMInImmediateFlip
[DC__NUM_DPP__MAX
];
814 double DestinationLinesToRequestRowInImmediateFlip
[DC__NUM_DPP__MAX
];
815 double final_flip_bw
[DC__NUM_DPP__MAX
];
816 bool ImmediateFlipSupportedForState
[DC__VOLTAGE_STATES
][2];
817 double WritebackDelay
[DC__VOLTAGE_STATES
][DC__NUM_DPP__MAX
];
818 unsigned int vm_group_bytes
[DC__NUM_DPP__MAX
];
819 unsigned int dpte_group_bytes
[DC__NUM_DPP__MAX
];
820 unsigned int dpte_row_height
[DC__NUM_DPP__MAX
];
821 unsigned int meta_req_height
[DC__NUM_DPP__MAX
];
822 unsigned int meta_req_width
[DC__NUM_DPP__MAX
];
823 unsigned int meta_row_height
[DC__NUM_DPP__MAX
];
824 unsigned int meta_row_width
[DC__NUM_DPP__MAX
];
825 unsigned int dpte_row_height_chroma
[DC__NUM_DPP__MAX
];
826 unsigned int meta_req_height_chroma
[DC__NUM_DPP__MAX
];
827 unsigned int meta_req_width_chroma
[DC__NUM_DPP__MAX
];
828 unsigned int meta_row_height_chroma
[DC__NUM_DPP__MAX
];
829 unsigned int meta_row_width_chroma
[DC__NUM_DPP__MAX
];
830 bool ImmediateFlipSupportedForPipe
[DC__NUM_DPP__MAX
];
831 double meta_row_bw
[DC__NUM_DPP__MAX
];
832 double dpte_row_bw
[DC__NUM_DPP__MAX
];
833 double DisplayPipeLineDeliveryTimeLuma
[DC__NUM_DPP__MAX
]; // WM
834 double DisplayPipeLineDeliveryTimeChroma
[DC__NUM_DPP__MAX
]; // WM
835 double DisplayPipeRequestDeliveryTimeLuma
[DC__NUM_DPP__MAX
];
836 double DisplayPipeRequestDeliveryTimeChroma
[DC__NUM_DPP__MAX
];
837 enum clock_change_support DRAMClockChangeSupport
[DC__VOLTAGE_STATES
][2];
838 double UrgentBurstFactorCursor
[DC__NUM_DPP__MAX
];
839 double UrgentBurstFactorCursorPre
[DC__NUM_DPP__MAX
];
840 double UrgentBurstFactorLuma
[DC__NUM_DPP__MAX
];
841 double UrgentBurstFactorLumaPre
[DC__NUM_DPP__MAX
];
842 double UrgentBurstFactorChroma
[DC__NUM_DPP__MAX
];
843 double UrgentBurstFactorChromaPre
[DC__NUM_DPP__MAX
];
846 bool MPCCombine
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
847 double SwathWidthCSingleDPP
[DC__NUM_DPP__MAX
];
848 double MaximumSwathWidthInLineBufferLuma
;
849 double MaximumSwathWidthInLineBufferChroma
;
850 double MaximumSwathWidthLuma
[DC__NUM_DPP__MAX
];
851 double MaximumSwathWidthChroma
[DC__NUM_DPP__MAX
];
852 enum odm_combine_mode odm_combine_dummy
[DC__NUM_DPP__MAX
];
853 double dummy1
[DC__NUM_DPP__MAX
];
854 double dummy2
[DC__NUM_DPP__MAX
];
855 unsigned int dummy3
[DC__NUM_DPP__MAX
];
856 unsigned int dummy4
[DC__NUM_DPP__MAX
];
859 double dummy7
[DC__NUM_DPP__MAX
];
860 double dummy8
[DC__NUM_DPP__MAX
];
861 double dummy13
[DC__NUM_DPP__MAX
];
862 double dummy_double_array
[2][DC__NUM_DPP__MAX
];
863 unsigned int dummyinteger3
[DC__NUM_DPP__MAX
];
864 unsigned int dummyinteger4
[DC__NUM_DPP__MAX
];
865 unsigned int dummyinteger5
;
866 unsigned int dummyinteger6
;
867 unsigned int dummyinteger7
;
868 unsigned int dummyinteger8
;
869 unsigned int dummyinteger9
;
870 unsigned int dummyinteger10
;
871 unsigned int dummyinteger11
;
872 unsigned int dummy_integer_array
[8][DC__NUM_DPP__MAX
];
874 bool dummysinglestring
;
875 bool SingleDPPViewportSizeSupportPerPlane
[DC__NUM_DPP__MAX
];
876 double PlaneRequiredDISPCLKWithODMCombine2To1
;
877 double PlaneRequiredDISPCLKWithODMCombine4To1
;
878 unsigned int TotalNumberOfSingleDPPPlanes
[DC__VOLTAGE_STATES
][2];
880 bool ODMCombine4To1SupportCheckOK
[DC__VOLTAGE_STATES
];
881 enum odm_combine_mode ODMCombineEnableThisState
[DC__NUM_DPP__MAX
];
882 double SwathWidthCThisState
[DC__NUM_DPP__MAX
];
883 bool ViewportSizeSupportPerPlane
[DC__NUM_DPP__MAX
];
884 double AlignedDCCMetaPitchY
[DC__NUM_DPP__MAX
];
885 double AlignedDCCMetaPitchC
[DC__NUM_DPP__MAX
];
887 unsigned int NotEnoughUrgentLatencyHiding
[DC__VOLTAGE_STATES
][2];
888 unsigned int NotEnoughUrgentLatencyHidingPre
;
889 int PTEBufferSizeInRequestsForLuma
;
890 int PTEBufferSizeInRequestsForChroma
;
893 int dpte_group_bytes_chroma
;
894 unsigned int vm_group_bytes_chroma
;
895 double dst_x_after_scaler
;
896 double dst_y_after_scaler
;
897 unsigned int VStartupRequiredWhenNotEnoughTimeForDynamicMetadata
;
900 double PrefetchBandwidth
[DC__NUM_DPP__MAX
];
901 double VInitPreFillY
[DC__NUM_DPP__MAX
];
902 double VInitPreFillC
[DC__NUM_DPP__MAX
];
903 unsigned int MaxNumSwathY
[DC__NUM_DPP__MAX
];
904 unsigned int MaxNumSwathC
[DC__NUM_DPP__MAX
];
905 unsigned int VStartup
[DC__NUM_DPP__MAX
];
906 double DSTYAfterScaler
[DC__NUM_DPP__MAX
];
907 double DSTXAfterScaler
[DC__NUM_DPP__MAX
];
908 bool AllowDRAMClockChangeDuringVBlank
[DC__NUM_DPP__MAX
];
909 bool AllowDRAMSelfRefreshDuringVBlank
[DC__NUM_DPP__MAX
];
910 double VRatioPrefetchY
[DC__NUM_DPP__MAX
];
911 double VRatioPrefetchC
[DC__NUM_DPP__MAX
];
912 double DestinationLinesForPrefetch
[DC__NUM_DPP__MAX
];
913 double DestinationLinesToRequestVMInVBlank
[DC__NUM_DPP__MAX
];
914 double DestinationLinesToRequestRowInVBlank
[DC__NUM_DPP__MAX
];
915 double MinTTUVBlank
[DC__NUM_DPP__MAX
];
916 double BytePerPixelDETY
[DC__NUM_DPP__MAX
];
917 double BytePerPixelDETC
[DC__NUM_DPP__MAX
];
918 double SwathWidthY
[DC__NUM_DPP__MAX
];
919 double SwathWidthSingleDPPY
[DC__NUM_DPP__MAX
];
920 double CursorRequestDeliveryTime
[DC__NUM_DPP__MAX
];
921 double CursorRequestDeliveryTimePrefetch
[DC__NUM_DPP__MAX
];
922 double ReadBandwidthPlaneLuma
[DC__NUM_DPP__MAX
];
923 double ReadBandwidthPlaneChroma
[DC__NUM_DPP__MAX
];
924 double DisplayPipeLineDeliveryTimeLumaPrefetch
[DC__NUM_DPP__MAX
];
925 double DisplayPipeLineDeliveryTimeChromaPrefetch
[DC__NUM_DPP__MAX
];
926 double DisplayPipeRequestDeliveryTimeLumaPrefetch
[DC__NUM_DPP__MAX
];
927 double DisplayPipeRequestDeliveryTimeChromaPrefetch
[DC__NUM_DPP__MAX
];
928 double PixelPTEBytesPerRow
[DC__NUM_DPP__MAX
];
929 double PDEAndMetaPTEBytesFrame
[DC__NUM_DPP__MAX
];
930 double MetaRowByte
[DC__NUM_DPP__MAX
];
931 double PrefetchSourceLinesY
[DC__NUM_DPP__MAX
];
932 double RequiredPrefetchPixDataBWLuma
[DC__NUM_DPP__MAX
];
933 double RequiredPrefetchPixDataBWChroma
[DC__NUM_DPP__MAX
];
934 double PrefetchSourceLinesC
[DC__NUM_DPP__MAX
];
935 double PSCL_THROUGHPUT_LUMA
[DC__NUM_DPP__MAX
];
936 double PSCL_THROUGHPUT_CHROMA
[DC__NUM_DPP__MAX
];
937 double DSCCLK_calculated
[DC__NUM_DPP__MAX
];
938 unsigned int DSCDelay
[DC__NUM_DPP__MAX
];
939 unsigned int MaxVStartupLines
[DC__NUM_DPP__MAX
];
940 double DPPCLKUsingSingleDPP
[DC__NUM_DPP__MAX
];
941 double DPPCLK
[DC__NUM_DPP__MAX
];
942 unsigned int DCCYMaxUncompressedBlock
[DC__NUM_DPP__MAX
];
943 unsigned int DCCYMaxCompressedBlock
[DC__NUM_DPP__MAX
];
944 unsigned int DCCYIndependent64ByteBlock
[DC__NUM_DPP__MAX
];
945 double MaximumDCCCompressionYSurface
[DC__NUM_DPP__MAX
];
946 unsigned int BlockHeight256BytesY
[DC__NUM_DPP__MAX
];
947 unsigned int BlockHeight256BytesC
[DC__NUM_DPP__MAX
];
948 unsigned int BlockWidth256BytesY
[DC__NUM_DPP__MAX
];
949 unsigned int BlockWidth256BytesC
[DC__NUM_DPP__MAX
];
950 double XFCSlaveVUpdateOffset
[DC__NUM_DPP__MAX
];
951 double XFCSlaveVupdateWidth
[DC__NUM_DPP__MAX
];
952 double XFCSlaveVReadyOffset
[DC__NUM_DPP__MAX
];
953 double XFCTransferDelay
[DC__NUM_DPP__MAX
];
954 double XFCPrechargeDelay
[DC__NUM_DPP__MAX
];
955 double XFCRemoteSurfaceFlipLatency
[DC__NUM_DPP__MAX
];
956 double XFCPrefetchMargin
[DC__NUM_DPP__MAX
];
957 unsigned int dpte_row_width_luma_ub
[DC__NUM_DPP__MAX
];
958 unsigned int dpte_row_width_chroma_ub
[DC__NUM_DPP__MAX
];
959 double FullDETBufferingTimeY
[DC__NUM_DPP__MAX
]; // WM
960 double FullDETBufferingTimeC
[DC__NUM_DPP__MAX
]; // WM
961 double DST_Y_PER_PTE_ROW_NOM_L
[DC__NUM_DPP__MAX
];
962 double DST_Y_PER_PTE_ROW_NOM_C
[DC__NUM_DPP__MAX
];
963 double DST_Y_PER_META_ROW_NOM_L
[DC__NUM_DPP__MAX
];
964 double TimePerMetaChunkNominal
[DC__NUM_DPP__MAX
];
965 double TimePerMetaChunkVBlank
[DC__NUM_DPP__MAX
];
966 double TimePerMetaChunkFlip
[DC__NUM_DPP__MAX
];
967 unsigned int swath_width_luma_ub
[DC__NUM_DPP__MAX
];
968 unsigned int swath_width_chroma_ub
[DC__NUM_DPP__MAX
];
969 unsigned int PixelPTEReqWidthY
[DC__NUM_DPP__MAX
];
970 unsigned int PixelPTEReqHeightY
[DC__NUM_DPP__MAX
];
971 unsigned int PTERequestSizeY
[DC__NUM_DPP__MAX
];
972 unsigned int PixelPTEReqWidthC
[DC__NUM_DPP__MAX
];
973 unsigned int PixelPTEReqHeightC
[DC__NUM_DPP__MAX
];
974 unsigned int PTERequestSizeC
[DC__NUM_DPP__MAX
];
975 double time_per_pte_group_nom_luma
[DC__NUM_DPP__MAX
];
976 double time_per_pte_group_nom_chroma
[DC__NUM_DPP__MAX
];
977 double time_per_pte_group_vblank_luma
[DC__NUM_DPP__MAX
];
978 double time_per_pte_group_vblank_chroma
[DC__NUM_DPP__MAX
];
979 double time_per_pte_group_flip_luma
[DC__NUM_DPP__MAX
];
980 double time_per_pte_group_flip_chroma
[DC__NUM_DPP__MAX
];
981 double TimePerVMGroupVBlank
[DC__NUM_DPP__MAX
];
982 double TimePerVMGroupFlip
[DC__NUM_DPP__MAX
];
983 double TimePerVMRequestVBlank
[DC__NUM_DPP__MAX
];
984 double TimePerVMRequestFlip
[DC__NUM_DPP__MAX
];
985 unsigned int dpde0_bytes_per_frame_ub_l
[DC__NUM_DPP__MAX
];
986 unsigned int meta_pte_bytes_per_frame_ub_l
[DC__NUM_DPP__MAX
];
987 unsigned int dpde0_bytes_per_frame_ub_c
[DC__NUM_DPP__MAX
];
988 unsigned int meta_pte_bytes_per_frame_ub_c
[DC__NUM_DPP__MAX
];
989 double LinesToFinishSwathTransferStutterCriticalPlane
;
990 unsigned int BytePerPixelYCriticalPlane
;
991 double SwathWidthYCriticalPlane
;
992 double LinesInDETY
[DC__NUM_DPP__MAX
];
993 double LinesInDETYRoundedDownToSwath
[DC__NUM_DPP__MAX
];
995 double SwathWidthSingleDPPC
[DC__NUM_DPP__MAX
];
996 double SwathWidthC
[DC__NUM_DPP__MAX
];
997 unsigned int BytePerPixelY
[DC__NUM_DPP__MAX
];
998 unsigned int BytePerPixelC
[DC__NUM_DPP__MAX
];
999 unsigned int dummyinteger1
;
1000 unsigned int dummyinteger2
;
1001 double FinalDRAMClockChangeLatency
;
1002 double Tdmdl_vm
[DC__NUM_DPP__MAX
];
1003 double Tdmdl
[DC__NUM_DPP__MAX
];
1004 double TSetup
[DC__NUM_DPP__MAX
];
1005 unsigned int ThisVStartup
;
1006 bool WritebackAllowDRAMClockChangeEndPosition
[DC__NUM_DPP__MAX
];
1007 double DST_Y_PER_META_ROW_NOM_C
[DC__NUM_DPP__MAX
];
1008 double TimePerChromaMetaChunkNominal
[DC__NUM_DPP__MAX
];
1009 double TimePerChromaMetaChunkVBlank
[DC__NUM_DPP__MAX
];
1010 double TimePerChromaMetaChunkFlip
[DC__NUM_DPP__MAX
];
1011 unsigned int DCCCMaxUncompressedBlock
[DC__NUM_DPP__MAX
];
1012 unsigned int DCCCMaxCompressedBlock
[DC__NUM_DPP__MAX
];
1013 double VStartupMargin
;
1014 bool NotEnoughTimeForDynamicMetadata
[DC__NUM_DPP__MAX
];
1016 /* Missing from VBA */
1017 unsigned int MaximumMaxVStartupLines
;
1018 double FabricAndDRAMBandwidth
;
1019 double LinesInDETLuma
;
1020 double LinesInDETChroma
;
1021 unsigned int ImmediateFlipBytes
[DC__NUM_DPP__MAX
];
1022 unsigned int LinesInDETC
[DC__NUM_DPP__MAX
];
1023 unsigned int LinesInDETCRoundedDownToSwath
[DC__NUM_DPP__MAX
];
1024 double UrgentLatencySupportUsPerState
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1025 double UrgentLatencySupportUs
[DC__NUM_DPP__MAX
];
1026 double FabricAndDRAMBandwidthPerState
[DC__VOLTAGE_STATES
];
1027 bool UrgentLatencySupport
[DC__VOLTAGE_STATES
][2];
1028 unsigned int SwathWidthYPerState
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1029 unsigned int SwathHeightYPerState
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1030 double qual_row_bw
[DC__NUM_DPP__MAX
];
1031 double prefetch_row_bw
[DC__NUM_DPP__MAX
];
1032 double prefetch_vm_bw
[DC__NUM_DPP__MAX
];
1034 double PTEGroupSize
;
1035 unsigned int PDEProcessingBufIn64KBReqs
;
1037 double MaxTotalVActiveRDBandwidth
;
1038 bool DoUrgentLatencyAdjustment
;
1039 double UrgentLatencyAdjustmentFabricClockComponent
;
1040 double UrgentLatencyAdjustmentFabricClockReference
;
1041 double MinUrgentLatencySupportUs
;
1042 double MinFullDETBufferingTime
;
1043 double AverageReadBandwidthGBytePerSecond
;
1044 bool FirstMainPlane
;
1046 unsigned int ViewportWidthChroma
[DC__NUM_DPP__MAX
];
1047 unsigned int ViewportHeightChroma
[DC__NUM_DPP__MAX
];
1048 double HRatioChroma
[DC__NUM_DPP__MAX
];
1049 double VRatioChroma
[DC__NUM_DPP__MAX
];
1050 int WritebackSourceWidth
[DC__NUM_DPP__MAX
];
1052 bool ModeIsSupported
;
1053 bool ODMCombine4To1Supported
;
1055 unsigned int SurfaceWidthY
[DC__NUM_DPP__MAX
];
1056 unsigned int SurfaceWidthC
[DC__NUM_DPP__MAX
];
1057 unsigned int SurfaceHeightY
[DC__NUM_DPP__MAX
];
1058 unsigned int SurfaceHeightC
[DC__NUM_DPP__MAX
];
1059 unsigned int WritebackHTaps
[DC__NUM_DPP__MAX
];
1060 unsigned int WritebackVTaps
[DC__NUM_DPP__MAX
];
1061 bool DSCEnable
[DC__NUM_DPP__MAX
];
1063 double DRAMClockChangeLatencyOverride
;
1065 double GPUVMMinPageSize
;
1066 double HostVMMinPageSize
;
1068 bool MPCCombineEnable
[DC__NUM_DPP__MAX
];
1069 unsigned int HostVMMaxNonCachedPageTableLevels
;
1070 bool DynamicMetadataVMEnabled
;
1071 double WritebackInterfaceBufferSize
;
1072 double WritebackLineBufferSize
;
1074 double DCCRateLuma
[DC__NUM_DPP__MAX
];
1075 double DCCRateChroma
[DC__NUM_DPP__MAX
];
1077 double PHYCLKD18PerState
[DC__VOLTAGE_STATES
];
1079 bool WritebackSupportInterleaveAndUsingWholeBufferForASingleStream
;
1080 bool NumberOfHDMIFRLSupport
;
1081 unsigned int MaxNumHDMIFRLOutputs
;
1082 int AudioSampleRate
[DC__NUM_DPP__MAX
];
1083 int AudioSampleLayout
[DC__NUM_DPP__MAX
];
1085 int PercentMarginOverMinimumRequiredDCFCLK
;
1086 bool DynamicMetadataSupported
[DC__VOLTAGE_STATES
][2];
1087 enum immediate_flip_requirement ImmediateFlipRequirement
[DC__NUM_DPP__MAX
];
1088 unsigned int DETBufferSizeYThisState
[DC__NUM_DPP__MAX
];
1089 unsigned int DETBufferSizeCThisState
[DC__NUM_DPP__MAX
];
1090 bool NoUrgentLatencyHiding
[DC__NUM_DPP__MAX
];
1091 bool NoUrgentLatencyHidingPre
[DC__NUM_DPP__MAX
];
1092 int swath_width_luma_ub_this_state
[DC__NUM_DPP__MAX
];
1093 int swath_width_chroma_ub_this_state
[DC__NUM_DPP__MAX
];
1094 double UrgLatency
[DC__VOLTAGE_STATES
];
1095 double VActiveCursorBandwidth
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1096 double VActivePixelBandwidth
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1097 bool NoTimeForPrefetch
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1098 bool NoTimeForDynamicMetadata
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1099 double dpte_row_bandwidth
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1100 double meta_row_bandwidth
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1101 double DETBufferSizeYAllStates
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1102 double DETBufferSizeCAllStates
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1103 unsigned int swath_width_luma_ub_all_states
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1104 unsigned int swath_width_chroma_ub_all_states
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1105 bool NotUrgentLatencyHiding
[DC__VOLTAGE_STATES
][2];
1106 unsigned int SwathHeightYAllStates
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1107 unsigned int SwathHeightCAllStates
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1108 unsigned int SwathWidthYAllStates
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1109 unsigned int SwathWidthCAllStates
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1110 double TotalDPTERowBandwidth
[DC__VOLTAGE_STATES
][2];
1111 double TotalMetaRowBandwidth
[DC__VOLTAGE_STATES
][2];
1112 double TotalVActiveCursorBandwidth
[DC__VOLTAGE_STATES
][2];
1113 double TotalVActivePixelBandwidth
[DC__VOLTAGE_STATES
][2];
1114 double WritebackDelayTime
[DC__NUM_DPP__MAX
];
1115 unsigned int DCCYIndependentBlock
[DC__NUM_DPP__MAX
];
1116 unsigned int DCCCIndependentBlock
[DC__NUM_DPP__MAX
];
1117 unsigned int dummyinteger17
;
1118 unsigned int dummyinteger18
;
1119 unsigned int dummyinteger19
;
1120 unsigned int dummyinteger20
;
1121 unsigned int dummyinteger21
;
1122 unsigned int dummyinteger22
;
1123 unsigned int dummyinteger23
;
1124 unsigned int dummyinteger24
;
1125 unsigned int dummyinteger25
;
1126 unsigned int dummyinteger26
;
1127 unsigned int dummyinteger27
;
1128 unsigned int dummyinteger28
;
1129 unsigned int dummyinteger29
;
1130 bool dummystring
[DC__NUM_DPP__MAX
];
1132 enum odm_combine_policy ODMCombinePolicy
;
1133 bool UseMinimumRequiredDCFCLK
;
1134 bool ClampMinDCFCLK
;
1135 bool AllowDramClockChangeOneDisplayVactive
;
1137 double MaxAveragePercentOfIdealFabricAndSDPPortBWDisplayCanUseInNormalSystemOperation
;
1138 double PercentOfIdealFabricAndSDPPortBWReceivedAfterUrgLatency
;
1139 double PercentOfIdealDRAMBWReceivedAfterUrgLatencyPixelMixedWithVMData
;
1140 double PercentOfIdealDRAMBWReceivedAfterUrgLatencyVMDataOnly
;
1141 double PercentOfIdealDRAMBWReceivedAfterUrgLatencyPixelDataOnly
;
1142 double SRExitZ8Time
;
1143 double SREnterPlusExitZ8Time
;
1144 double Z8StutterExitWatermark
;
1145 double Z8StutterEnterPlusExitWatermark
;
1146 double Z8StutterEfficiencyNotIncludingVBlank
;
1147 double Z8StutterEfficiency
;
1148 double DCCFractionOfZeroSizeRequestsLuma
[DC__NUM_DPP__MAX
];
1149 double DCCFractionOfZeroSizeRequestsChroma
[DC__NUM_DPP__MAX
];
1150 double UrgBurstFactorCursor
[DC__NUM_DPP__MAX
];
1151 double UrgBurstFactorLuma
[DC__NUM_DPP__MAX
];
1152 double UrgBurstFactorChroma
[DC__NUM_DPP__MAX
];
1153 double UrgBurstFactorCursorPre
[DC__NUM_DPP__MAX
];
1154 double UrgBurstFactorLumaPre
[DC__NUM_DPP__MAX
];
1155 double UrgBurstFactorChromaPre
[DC__NUM_DPP__MAX
];
1156 bool NotUrgentLatencyHidingPre
[DC__NUM_DPP__MAX
];
1157 bool LinkCapacitySupport
[DC__NUM_DPP__MAX
];
1158 bool VREADY_AT_OR_AFTER_VSYNC
[DC__NUM_DPP__MAX
];
1159 unsigned int MIN_DST_Y_NEXT_START
[DC__NUM_DPP__MAX
];
1160 unsigned int VFrontPorch
[DC__NUM_DPP__MAX
];
1161 int ConfigReturnBufferSizeInKByte
;
1162 enum unbounded_requesting_policy UseUnboundedRequesting
;
1163 int CompressedBufferSegmentSizeInkByte
;
1164 int CompressedBufferSizeInkByte
;
1165 int MetaFIFOSizeInKEntries
;
1166 int ZeroSizeBufferEntries
;
1167 int COMPBUF_RESERVED_SPACE_64B
;
1168 int COMPBUF_RESERVED_SPACE_ZS
;
1169 bool UnboundedRequestEnabled
;
1170 bool DSC422NativeSupport
;
1171 bool NoEnoughUrgentLatencyHiding
;
1172 bool NoEnoughUrgentLatencyHidingPre
;
1173 int NumberOfStutterBurstsPerFrame
;
1174 int Z8NumberOfStutterBurstsPerFrame
;
1175 unsigned int MaximumDSCBitsPerComponent
;
1176 unsigned int NotEnoughUrgentLatencyHidingA
[DC__VOLTAGE_STATES
][2];
1177 double ReadBandwidthSurfaceLuma
[DC__NUM_DPP__MAX
];
1178 double ReadBandwidthSurfaceChroma
[DC__NUM_DPP__MAX
];
1179 double SurfaceRequiredDISPCLKWithoutODMCombine
;
1180 double SurfaceRequiredDISPCLK
;
1181 double MinActiveFCLKChangeLatencySupported
;
1182 int MinVoltageLevel
;
1183 int MaxVoltageLevel
;
1184 unsigned int TotalNumberOfSingleDPPSurfaces
[DC__VOLTAGE_STATES
][2];
1185 unsigned int CompressedBufferSizeInkByteAllStates
[DC__VOLTAGE_STATES
][2];
1186 unsigned int DETBufferSizeInKByteAllStates
[DC__VOLTAGE_STATES
][2][DC__NUM_DPP__MAX
];
1187 unsigned int DETBufferSizeInKByteThisState
[DC__NUM_DPP__MAX
];
1188 unsigned int SurfaceSizeInMALL
[DC__NUM_DPP__MAX
];
1189 bool ExceededMALLSize
;
1190 bool PTE_BUFFER_MODE
[DC__NUM_DPP__MAX
];
1191 unsigned int BIGK_FRAGMENT_SIZE
[DC__NUM_DPP__MAX
];
1192 unsigned int CompressedBufferSizeInkByteThisState
;
1193 enum dm_fclock_change_support FCLKChangeSupport
[DC__VOLTAGE_STATES
][2];
1194 bool USRRetrainingSupport
[DC__VOLTAGE_STATES
][2];
1195 enum dm_use_mall_for_pstate_change_mode UsesMALLForPStateChange
[DC__NUM_DPP__MAX
];
1196 bool UnboundedRequestEnabledAllStates
[DC__VOLTAGE_STATES
][2];
1197 bool SingleDPPViewportSizeSupportPerSurface
[DC__NUM_DPP__MAX
];
1198 enum dm_use_mall_for_static_screen_mode UseMALLForStaticScreen
[DC__NUM_DPP__MAX
];
1199 bool UnboundedRequestEnabledThisState
;
1200 bool DRAMClockChangeRequirementFinal
;
1201 bool FCLKChangeRequirementFinal
;
1202 bool USRRetrainingRequiredFinal
;
1203 unsigned int DETSizeOverride
[DC__NUM_DPP__MAX
];
1204 unsigned int nomDETInKByte
;
1205 enum mpc_combine_affinity MPCCombineUse
[DC__NUM_DPP__MAX
];
1206 bool MPCCombineMethodIncompatible
;
1207 unsigned int RequiredSlots
[DC__VOLTAGE_STATES
][DC__NUM_DPP__MAX
];
1208 bool ExceededMultistreamSlots
[DC__VOLTAGE_STATES
];
1209 enum odm_combine_policy ODMUse
[DC__NUM_DPP__MAX
];
1210 unsigned int OutputMultistreamId
[DC__NUM_DPP__MAX
];
1211 bool OutputMultistreamEn
[DC__NUM_DPP__MAX
];
1212 bool UsesMALLForStaticScreen
[DC__NUM_DPP__MAX
];
1213 double MaxActiveDRAMClockChangeLatencySupported
[DC__NUM_DPP__MAX
];
1214 double WritebackAllowFCLKChangeEndPosition
[DC__NUM_DPP__MAX
];
1215 bool PTEBufferSizeNotExceededPerState
[DC__NUM_DPP__MAX
]; // new in DML32
1216 bool DCCMetaBufferSizeNotExceededPerState
[DC__NUM_DPP__MAX
]; // new in DML32
1217 bool NotEnoughDSCSlices
[DC__VOLTAGE_STATES
];
1218 bool PixelsPerLinePerDSCUnitSupport
[DC__VOLTAGE_STATES
];
1219 bool DCCMetaBufferSizeNotExceeded
[DC__VOLTAGE_STATES
][2];
1220 unsigned int dpte_row_height_linear
[DC__NUM_DPP__MAX
];
1221 unsigned int dpte_row_height_linear_chroma
[DC__NUM_DPP__MAX
];
1222 unsigned int BlockHeightY
[DC__NUM_DPP__MAX
];
1223 unsigned int BlockHeightC
[DC__NUM_DPP__MAX
];
1224 unsigned int BlockWidthY
[DC__NUM_DPP__MAX
];
1225 unsigned int BlockWidthC
[DC__NUM_DPP__MAX
];
1226 unsigned int SubViewportLinesNeededInMALL
[DC__NUM_DPP__MAX
];
1227 bool VActiveBandwithSupport
[DC__VOLTAGE_STATES
][2];
1228 struct dummy_vars dummy_vars
;
1231 bool CalculateMinAndMaxPrefetchMode(
1232 enum self_refresh_affinity AllowDRAMSelfRefreshOrDRAMClockChangeInVblank
,
1233 unsigned int *MinPrefetchMode
,
1234 unsigned int *MaxPrefetchMode
);
1236 double CalculateWriteBackDISPCLK(
1237 enum source_format_class WritebackPixelFormat
,
1239 double WritebackHRatio
,
1240 double WritebackVRatio
,
1241 unsigned int WritebackLumaHTaps
,
1242 unsigned int WritebackLumaVTaps
,
1243 unsigned int WritebackChromaHTaps
,
1244 unsigned int WritebackChromaVTaps
,
1245 double WritebackDestinationWidth
,
1246 unsigned int HTotal
,
1247 unsigned int WritebackChromaLineBufferWidth
);
1249 #endif /* _DML2_DISPLAY_MODE_VBA_H_ */