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 dml32_CalculateSwathAndDETConfiguration {
186 unsigned int MaximumSwathHeightY[DC__NUM_DPP__MAX];
187 unsigned int MaximumSwathHeightC[DC__NUM_DPP__MAX];
188 unsigned int RoundedUpMaxSwathSizeBytesY[DC__NUM_DPP__MAX];
189 unsigned int RoundedUpMaxSwathSizeBytesC[DC__NUM_DPP__MAX];
190 unsigned int RoundedUpSwathSizeBytesY;
191 unsigned int RoundedUpSwathSizeBytesC;
192 double SwathWidthdoubleDPP[DC__NUM_DPP__MAX];
193 double SwathWidthdoubleDPPChroma[DC__NUM_DPP__MAX];
194 unsigned int TotalActiveDPP;
195 bool NoChromaSurfaces;
196 unsigned int DETBufferSizeInKByteForSwathCalculation;
199 struct dml32_CalculateVMRowAndSwath {
200 unsigned int PTEBufferSizeInRequestsForLuma[DC__NUM_DPP__MAX];
201 unsigned int PTEBufferSizeInRequestsForChroma[DC__NUM_DPP__MAX];
202 unsigned int PDEAndMetaPTEBytesFrameY;
203 unsigned int PDEAndMetaPTEBytesFrameC;
204 unsigned int MetaRowByteY[DC__NUM_DPP__MAX];
205 unsigned int MetaRowByteC[DC__NUM_DPP__MAX];
206 unsigned int PixelPTEBytesPerRowY[DC__NUM_DPP__MAX];
207 unsigned int PixelPTEBytesPerRowC[DC__NUM_DPP__MAX];
208 unsigned int PixelPTEBytesPerRowY_one_row_per_frame[DC__NUM_DPP__MAX];
209 unsigned int PixelPTEBytesPerRowC_one_row_per_frame[DC__NUM_DPP__MAX];
210 unsigned int dpte_row_width_luma_ub_one_row_per_frame[DC__NUM_DPP__MAX];
211 unsigned int dpte_row_height_luma_one_row_per_frame[DC__NUM_DPP__MAX];
212 unsigned int dpte_row_width_chroma_ub_one_row_per_frame[DC__NUM_DPP__MAX];
213 unsigned int dpte_row_height_chroma_one_row_per_frame[DC__NUM_DPP__MAX];
214 bool one_row_per_frame_fits_in_buffer[DC__NUM_DPP__MAX];
217 struct DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation {
218 unsigned int dummy_integer_array[2][DC__NUM_DPP__MAX];
219 double dummy_single_array[2][DC__NUM_DPP__MAX];
220 unsigned int dummy_long_array[2][DC__NUM_DPP__MAX];
221 double dummy_double_array[2][DC__NUM_DPP__MAX];
222 bool dummy_boolean_array[DC__NUM_DPP__MAX];
225 enum output_encoder_class dummy_output_encoder_array[DC__NUM_DPP__MAX];
226 DmlPipe SurfaceParameters[DC__NUM_DPP__MAX];
227 bool dummy_boolean_array2[2][DC__NUM_DPP__MAX];
228 unsigned int ReorderBytes;
229 unsigned int VMDataOnlyReturnBW;
230 double HostVMInefficiencyFactor;
232 SOCParametersList mmSOCParameters;
233 double dummy_unit_vector[DC__NUM_DPP__MAX];
234 double dummy_single[2];
235 enum clock_change_support dummy_dramchange_support;
236 enum dm_fclock_change_support dummy_fclkchange_support;
237 bool dummy_USRRetrainingSupport;
240 struct dml32_ModeSupportAndSystemConfigurationFull {
241 unsigned int dummy_integer_array[22][DC__NUM_DPP__MAX];
242 double dummy_double_array[2][DC__NUM_DPP__MAX];
243 DmlPipe SurfParameters[DC__NUM_DPP__MAX];
244 double dummy_single[5];
245 double dummy_single2[5];
246 SOCParametersList mSOCParameters;
247 unsigned int MaximumSwathWidthSupportLuma;
248 unsigned int MaximumSwathWidthSupportChroma;
249 double DSTYAfterScaler[DC__NUM_DPP__MAX];
250 double DSTXAfterScaler[DC__NUM_DPP__MAX];
251 double MaxTotalVActiveRDBandwidth;
252 bool dummy_boolean_array[2][DC__NUM_DPP__MAX];
253 enum odm_combine_mode dummy_odm_mode[DC__NUM_DPP__MAX];
255 unsigned int dummy_integer[4];
256 unsigned int TotalNumberOfActiveOTG;
257 unsigned int TotalNumberOfActiveHDMIFRL;
258 unsigned int TotalNumberOfActiveDP2p0;
259 unsigned int TotalNumberOfActiveDP2p0Outputs;
260 unsigned int TotalDSCUnitsRequired;
261 unsigned int ReorderingBytes;
262 unsigned int TotalSlots;
263 unsigned int NumberOfDPPDSC;
264 unsigned int NumberOfDPPNoDSC;
265 unsigned int NextPrefetchModeState;
266 bool MPCCombineMethodAsNeededForPStateChangeAndVoltage;
267 bool MPCCombineMethodAsPossible;
268 bool FullFrameMALLPStateMethod;
269 bool SubViewportMALLPStateMethod;
270 bool PhantomPipeMALLPStateMethod;
272 bool TotalAvailablePipesSupportNoDSC;
273 bool TotalAvailablePipesSupportDSC;
274 enum odm_combine_mode ODMModeNoDSC;
275 enum odm_combine_mode ODMModeDSC;
276 double RequiredDISPCLKPerSurfaceNoDSC;
277 double RequiredDISPCLKPerSurfaceDSC;
278 double BWOfNonCombinedSurfaceOfMaximumBandwidth;
279 double VMDataOnlyReturnBWPerState;
280 double HostVMInefficiencyFactor;
281 bool dummy_boolean[2];
285 struct DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation
286 DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation;
287 struct dml32_ModeSupportAndSystemConfigurationFull dml32_ModeSupportAndSystemConfigurationFull;
288 struct dml32_CalculateSwathAndDETConfiguration dml32_CalculateSwathAndDETConfiguration;
289 struct dml32_CalculateVMRowAndSwath dml32_CalculateVMRowAndSwath;
294 soc_bounding_box_st soc;
297 bool UseMaximumVStartup;
299 double WritebackDISPCLK;
300 double DPPCLKUsingSingleDPPLuma;
301 double DPPCLKUsingSingleDPPChroma;
302 double DISPCLKWithRamping;
303 double DISPCLKWithoutRamping;
305 double DISPCLKWithRampingRoundedToDFSGranularity;
306 double DISPCLKWithoutRampingRoundedToDFSGranularity;
307 double MaxDispclkRoundedToDFSGranularity;
308 bool DCCEnabledAnyPlane;
309 double ReturnBandwidthToDCN;
310 unsigned int TotalActiveDPP;
311 unsigned int TotalDCCActiveDPP;
312 double UrgentRoundTripAndOutOfOrderLatency;
313 double StutterPeriod;
314 double FrameTimeForMinFullDETBufferingTime;
315 double AverageReadBandwidth;
316 double TotalRowReadBandwidth;
317 double PartOfBurstThatFitsInROB;
318 double StutterBurstTime;
319 unsigned int NextPrefetchMode;
320 double NextMaxVStartup;
322 double SmallestVBlank;
323 enum dm_prefetch_modes AllowForPStateChangeOrStutterInVBlankFinal; // Mode Support only
324 double DCFCLKDeepSleepPerPlane[DC__NUM_DPP__MAX];
325 double EffectiveDETPlusLBLinesLuma;
326 double EffectiveDETPlusLBLinesChroma;
327 double UrgentLatencySupportUsLuma;
328 double UrgentLatencySupportUsChroma;
329 unsigned int DSCFormatFactor;
331 bool DummyPStateCheck;
332 bool DRAMClockChangeSupportsVActive;
333 bool PrefetchModeSupported;
334 bool PrefetchAndImmediateFlipSupported;
335 enum self_refresh_affinity AllowDRAMSelfRefreshOrDRAMClockChangeInVblank; // Mode Support only
336 double XFCRemoteSurfaceFlipDelay;
339 double SrcActiveDrainRate;
340 bool ImmediateFlipSupported;
341 enum mpc_combine_affinity WhenToDoMPCCombine; // Mode Support only
345 unsigned int VStartupLines;
346 unsigned int ActiveDPPs;
347 unsigned int LBLatencyHidingSourceLinesY;
348 unsigned int LBLatencyHidingSourceLinesC;
349 double ActiveDRAMClockChangeLatencyMargin[DC__NUM_DPP__MAX];
350 double CachedActiveDRAMClockChangeLatencyMargin[DC__NUM_DPP__MAX]; // Cache in dml_get_voltage_level for debug purposes only
351 double MinActiveDRAMClockChangeMargin;
352 double InitFillLevel;
353 double FinalFillMargin;
354 double FinalFillLevel;
355 double RemainingFillLevel;
359 // SOC Bounding Box Parameters
362 double SREnterPlusExitTime;
363 double UrgentLatencyPixelDataOnly;
364 double UrgentLatencyPixelMixedWithVMData;
365 double UrgentLatencyVMDataOnly;
366 double UrgentLatency; // max of the above three
367 double USRRetrainingLatency;
369 double FCLKChangeLatency;
370 unsigned int MALLAllocatedForDCNFinal;
371 double MaxAveragePercentOfIdealFabricBWDisplayCanUseInNormalSystemOperation;
372 double MaxAveragePercentOfIdealDRAMBWDisplayCanUseInNormalSystemOperationSTROBE;
373 double PercentOfIdealDRAMBWReceivedAfterUrgLatencySTROBE;
374 double WritebackLatency;
375 double PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelDataOnly; // Mode Support
376 double PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData; // Mode Support
377 double PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyVMDataOnly; // Mode Support
378 double MaxAveragePercentOfIdealSDPPortBWDisplayCanUseInNormalSystemOperation; // Mode Support
379 double MaxAveragePercentOfIdealDRAMBWDisplayCanUseInNormalSystemOperation; // Mode Support
380 double NumberOfChannels;
381 double DRAMChannelWidth;
382 double FabricDatapathToDCNDataReturn;
383 double ReturnBusWidth;
384 double Downspreading;
385 double DISPCLKDPPCLKDSCCLKDownSpreading;
386 double DISPCLKDPPCLKVCOSpeed;
387 double RoundTripPingLatencyCycles;
388 double UrgentOutOfOrderReturnPerChannel;
389 double UrgentOutOfOrderReturnPerChannelPixelDataOnly;
390 double UrgentOutOfOrderReturnPerChannelPixelMixedWithVMData;
391 double UrgentOutOfOrderReturnPerChannelVMDataOnly;
392 unsigned int VMMPageSize;
393 double DRAMClockChangeLatency;
394 double XFCBusTransportTime;
395 bool UseUrgentBurstBandwidth;
396 double XFCXBUFLatencyTolerance;
401 unsigned int ROBBufferSizeInKByte;
402 unsigned int DETBufferSizeInKByte[DC__NUM_DPP__MAX];
403 double DETBufferSizeInTime;
404 unsigned int DPPOutputBufferPixels;
405 unsigned int OPPOutputBufferLines;
406 unsigned int PixelChunkSizeInKByte;
410 unsigned int GPUVMMaxPageTableLevels;
411 unsigned int HostVMMaxPageTableLevels;
412 unsigned int HostVMCachedPageTableLevels;
413 unsigned int OverrideGPUVMPageTableLevels;
414 unsigned int OverrideHostVMPageTableLevels;
415 unsigned int MetaChunkSize;
416 unsigned int MinMetaChunkSizeBytes;
417 unsigned int WritebackChunkSize;
419 unsigned int NumberOfDSC;
420 unsigned int LineBufferSize;
421 unsigned int MaxLineBufferLines;
422 unsigned int WritebackInterfaceLumaBufferSize;
423 unsigned int WritebackInterfaceChromaBufferSize;
424 unsigned int WritebackChromaLineBufferWidth;
425 enum writeback_config WritebackConfiguration;
426 double MaxDCHUBToPSCLThroughput;
427 double MaxPSCLToLBThroughput;
428 unsigned int PTEBufferSizeInRequestsLuma;
429 unsigned int PTEBufferSizeInRequestsChroma;
430 double DISPCLKRampingMargin;
431 unsigned int MaxInterDCNTileRepeaters;
433 double XFCSlvChunkSize;
434 double XFCFillBWOverhead;
435 double XFCFillConstant;
436 double XFCTSlvVupdateOffset;
437 double XFCTSlvVupdateWidth;
438 double XFCTSlvVreadyOffset;
439 double DPPCLKDelaySubtotal;
440 double DPPCLKDelaySCL;
441 double DPPCLKDelaySCLLBOnly;
442 double DPPCLKDelayCNVCFormater;
443 double DPPCLKDelayCNVCCursor;
444 double DISPCLKDelaySubtotal;
445 bool ProgressiveToInterlaceUnitInOPP;
446 unsigned int CompressedBufferSegmentSizeInkByteFinal;
447 unsigned int CompbufReservedSpace64B;
448 unsigned int CompbufReservedSpaceZs;
449 unsigned int LineBufferSizeFinal;
450 unsigned int MaximumPixelsPerLinePerDSCUnit;
451 unsigned int AlphaPixelChunkSizeInKByte;
452 double MinPixelChunkSizeBytes;
453 unsigned int DCCMetaBufferSizeBytes;
454 // Pipe/Plane Parameters
461 unsigned int MaxTotalDETInKByte;
462 unsigned int MinCompressedBufferSizeInKByte;
463 unsigned int NumberOfActiveSurfaces;
464 bool ViewportStationary[DC__NUM_DPP__MAX];
465 unsigned int RefreshRate[DC__NUM_DPP__MAX];
466 double OutputBPP[DC__NUM_DPP__MAX];
467 unsigned int GPUVMMinPageSizeKBytes[DC__NUM_DPP__MAX];
468 bool SynchronizeTimingsFinal;
469 bool SynchronizeDRRDisplaysForUCLKPStateChangeFinal;
470 bool ForceOneRowForFrame[DC__NUM_DPP__MAX];
471 unsigned int ViewportXStartY[DC__NUM_DPP__MAX];
472 unsigned int ViewportXStartC[DC__NUM_DPP__MAX];
473 enum dm_rotation_angle SourceRotation[DC__NUM_DPP__MAX];
474 bool DRRDisplay[DC__NUM_DPP__MAX];
475 bool PteBufferMode[DC__NUM_DPP__MAX];
476 enum dm_output_type OutputType[DC__NUM_DPP__MAX];
477 enum dm_output_rate OutputRate[DC__NUM_DPP__MAX];
479 unsigned int NumberOfActivePlanes;
480 unsigned int NumberOfDSCSlices[DC__NUM_DPP__MAX];
481 unsigned int ViewportWidth[DC__NUM_DPP__MAX];
482 unsigned int ViewportHeight[DC__NUM_DPP__MAX];
483 unsigned int ViewportYStartY[DC__NUM_DPP__MAX];
484 unsigned int ViewportYStartC[DC__NUM_DPP__MAX];
485 unsigned int PitchY[DC__NUM_DPP__MAX];
486 unsigned int PitchC[DC__NUM_DPP__MAX];
487 double HRatio[DC__NUM_DPP__MAX];
488 double VRatio[DC__NUM_DPP__MAX];
489 unsigned int htaps[DC__NUM_DPP__MAX];
490 unsigned int vtaps[DC__NUM_DPP__MAX];
491 unsigned int HTAPsChroma[DC__NUM_DPP__MAX];
492 unsigned int VTAPsChroma[DC__NUM_DPP__MAX];
493 unsigned int HTotal[DC__NUM_DPP__MAX];
494 unsigned int VTotal[DC__NUM_DPP__MAX];
495 unsigned int VTotal_Max[DC__NUM_DPP__MAX];
496 unsigned int VTotal_Min[DC__NUM_DPP__MAX];
497 int DPPPerPlane[DC__NUM_DPP__MAX];
498 double PixelClock[DC__NUM_DPP__MAX];
499 double PixelClockBackEnd[DC__NUM_DPP__MAX];
500 bool DCCEnable[DC__NUM_DPP__MAX];
501 bool FECEnable[DC__NUM_DPP__MAX];
502 unsigned int DCCMetaPitchY[DC__NUM_DPP__MAX];
503 unsigned int DCCMetaPitchC[DC__NUM_DPP__MAX];
504 enum scan_direction_class SourceScan[DC__NUM_DPP__MAX];
505 enum source_format_class SourcePixelFormat[DC__NUM_DPP__MAX];
506 bool WritebackEnable[DC__NUM_DPP__MAX];
507 unsigned int ActiveWritebacksPerPlane[DC__NUM_DPP__MAX];
508 double WritebackDestinationWidth[DC__NUM_DPP__MAX];
509 double WritebackDestinationHeight[DC__NUM_DPP__MAX];
510 double WritebackSourceHeight[DC__NUM_DPP__MAX];
511 enum source_format_class WritebackPixelFormat[DC__NUM_DPP__MAX];
512 unsigned int WritebackLumaHTaps[DC__NUM_DPP__MAX];
513 unsigned int WritebackLumaVTaps[DC__NUM_DPP__MAX];
514 unsigned int WritebackChromaHTaps[DC__NUM_DPP__MAX];
515 unsigned int WritebackChromaVTaps[DC__NUM_DPP__MAX];
516 double WritebackHRatio[DC__NUM_DPP__MAX];
517 double WritebackVRatio[DC__NUM_DPP__MAX];
518 unsigned int HActive[DC__NUM_DPP__MAX];
519 unsigned int VActive[DC__NUM_DPP__MAX];
520 bool Interlace[DC__NUM_DPP__MAX];
521 enum dm_swizzle_mode SurfaceTiling[DC__NUM_DPP__MAX];
522 unsigned int ScalerRecoutWidth[DC__NUM_DPP__MAX];
523 bool DynamicMetadataEnable[DC__NUM_DPP__MAX];
524 int DynamicMetadataLinesBeforeActiveRequired[DC__NUM_DPP__MAX];
525 unsigned int DynamicMetadataTransmittedBytes[DC__NUM_DPP__MAX];
526 double DCCRate[DC__NUM_DPP__MAX];
527 double AverageDCCCompressionRate;
528 enum odm_combine_mode ODMCombineEnabled[DC__NUM_DPP__MAX];
529 double OutputBpp[DC__NUM_DPP__MAX];
530 bool DSCEnabled[DC__NUM_DPP__MAX];
531 unsigned int DSCInputBitPerComponent[DC__NUM_DPP__MAX];
532 enum output_format_class OutputFormat[DC__NUM_DPP__MAX];
533 enum output_encoder_class Output[DC__NUM_DPP__MAX];
534 bool skip_dio_check[DC__NUM_DPP__MAX];
535 unsigned int BlendingAndTiming[DC__NUM_DPP__MAX];
536 bool SynchronizedVBlank;
537 unsigned int NumberOfCursors[DC__NUM_DPP__MAX];
538 unsigned int CursorWidth[DC__NUM_DPP__MAX][DC__NUM_CURSOR__MAX];
539 unsigned int CursorBPP[DC__NUM_DPP__MAX][DC__NUM_CURSOR__MAX];
540 bool XFCEnabled[DC__NUM_DPP__MAX];
541 bool ScalerEnabled[DC__NUM_DPP__MAX];
542 unsigned int VBlankNom[DC__NUM_DPP__MAX];
543 bool DisableUnboundRequestIfCompBufReservedSpaceNeedAdjustment;
545 // Intermediates/Informational
546 bool ImmediateFlipSupport;
547 unsigned int DETBufferSizeY[DC__NUM_DPP__MAX];
548 unsigned int DETBufferSizeC[DC__NUM_DPP__MAX];
549 unsigned int SwathHeightY[DC__NUM_DPP__MAX];
550 unsigned int SwathHeightC[DC__NUM_DPP__MAX];
551 unsigned int LBBitPerPixel[DC__NUM_DPP__MAX];
552 double LastPixelOfLineExtraWatermark;
553 double TotalDataReadBandwidth;
554 unsigned int TotalActiveWriteback;
555 unsigned int EffectiveLBLatencyHidingSourceLinesLuma;
556 unsigned int EffectiveLBLatencyHidingSourceLinesChroma;
557 double BandwidthAvailableForImmediateFlip;
558 unsigned int PrefetchMode[DC__VOLTAGE_STATES][2];
559 unsigned int PrefetchModePerState[DC__VOLTAGE_STATES][2];
560 unsigned int MinPrefetchMode;
561 unsigned int MaxPrefetchMode;
562 bool AnyLinesForVMOrRowTooLarge;
564 bool IgnoreViewportPositioning;
565 bool ErrorResult[DC__NUM_DPP__MAX];
567 // Calculated dml_ml->vba.Outputs
569 double DCFCLKDeepSleep;
570 double UrgentWatermark;
571 double UrgentExtraLatency;
572 double WritebackUrgentWatermark;
573 double StutterExitWatermark;
574 double StutterEnterPlusExitWatermark;
575 double DRAMClockChangeWatermark;
576 double WritebackDRAMClockChangeWatermark;
577 double StutterEfficiency;
578 double StutterEfficiencyNotIncludingVBlank;
579 double NonUrgentLatencyTolerance;
580 double MinActiveDRAMClockChangeLatencySupported;
581 double Z8StutterEfficiencyBestCase;
582 unsigned int Z8NumberOfStutterBurstsPerFrameBestCase;
583 double Z8StutterEfficiencyNotIncludingVBlankBestCase;
584 double StutterPeriodBestCase;
585 Watermarks Watermark;
586 bool DCHUBBUB_ARB_CSTATE_MAX_CAP_MODE;
587 unsigned int CompBufReservedSpaceKBytes;
588 unsigned int CompBufReservedSpace64B;
589 unsigned int CompBufReservedSpaceZs;
590 bool CompBufReservedSpaceNeedAdjustment;
592 // These are the clocks calcuated by the library but they are not actually
593 // used explicitly. They are fetched by tests and then possibly used. The
594 // ultimate values to use are the ones specified by the parameters to DML
595 double DISPCLK_calculated;
596 double DPPCLK_calculated[DC__NUM_DPP__MAX];
598 bool ImmediateFlipSupportedSurface[DC__NUM_DPP__MAX];
600 bool Use_One_Row_For_Frame[DC__NUM_DPP__MAX];
601 bool Use_One_Row_For_Frame_Flip[DC__NUM_DPP__MAX];
602 unsigned int VUpdateOffsetPix[DC__NUM_DPP__MAX];
603 double VUpdateWidthPix[DC__NUM_DPP__MAX];
604 double VReadyOffsetPix[DC__NUM_DPP__MAX];
606 unsigned int TotImmediateFlipBytes;
609 display_e2e_pipe_params_st cache_pipes[DC__NUM_DPP__MAX];
610 unsigned int cache_num_pipes;
611 unsigned int pipe_plane[DC__NUM_DPP__MAX];
613 /* vba mode support */
615 bool SupportGFX7CompatibleTilingIn32bppAnd64bpp;
618 unsigned int MaxNumWriteback;
619 bool WritebackLumaAndChromaScalingSupported;
620 bool Cursor64BppSupport;
621 double DCFCLKPerState[DC__VOLTAGE_STATES];
622 double DCFCLKState[DC__VOLTAGE_STATES][2];
623 double FabricClockPerState[DC__VOLTAGE_STATES];
624 double SOCCLKPerState[DC__VOLTAGE_STATES];
625 double PHYCLKPerState[DC__VOLTAGE_STATES];
626 double DTBCLKPerState[DC__VOLTAGE_STATES];
627 double MaxDppclk[DC__VOLTAGE_STATES];
628 double MaxDSCCLK[DC__VOLTAGE_STATES];
629 double DRAMSpeedPerState[DC__VOLTAGE_STATES];
630 double MaxDispclk[DC__VOLTAGE_STATES];
631 int VoltageOverrideLevel;
632 double PHYCLKD32PerState[DC__VOLTAGE_STATES];
635 bool ScaleRatioAndTapsSupport;
636 bool SourceFormatPixelAndScanSupport;
637 double TotalBandwidthConsumedGBytePerSecond;
638 bool DCCEnabledInAnyPlane;
639 bool WritebackLatencySupport;
640 bool WritebackModeSupport;
641 bool Writeback10bpc420Supported;
642 bool BandwidthSupport[DC__VOLTAGE_STATES];
643 unsigned int TotalNumberOfActiveWriteback;
644 double CriticalPoint;
645 double ReturnBWToDCNPerState;
646 bool IsErrorResult[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
647 bool prefetch_vm_bw_valid;
648 bool prefetch_row_bw_valid;
649 bool NumberOfOTGSupport;
650 bool NonsupportedDSCInputBPC;
651 bool WritebackScaleRatioAndTapsSupport;
654 enum dm_validation_status ValidationStatus[DC__VOLTAGE_STATES];
656 /* Mode Support Reason */
658 bool DSCOnlyIfNecessaryWithBPP;
659 bool DSC422NativeNotSupported;
660 bool LinkRateDoesNotMatchDPVersion;
661 bool LinkRateForMultistreamNotIndicated;
662 bool BPPForMultistreamNotIndicated;
663 bool MultistreamWithHDMIOreDP;
664 bool MSOOrODMSplitWithNonDPLink;
665 bool NotEnoughLanesForMSO;
666 bool ViewportExceedsSurface;
668 bool ImmediateFlipRequiredButTheRequirementForEachSurfaceIsNotSpecified;
669 bool ImmediateFlipOrHostVMAndPStateWithMALLFullFrameOrPhantomPipe;
670 bool InvalidCombinationOfMALLUseForPStateAndStaticScreen;
671 bool InvalidCombinationOfMALLUseForPState;
673 enum dm_output_link_dp_rate OutputLinkDPRate[DC__NUM_DPP__MAX];
674 double PrefetchLinesYThisState[DC__NUM_DPP__MAX];
675 double PrefetchLinesCThisState[DC__NUM_DPP__MAX];
676 double meta_row_bandwidth_this_state[DC__NUM_DPP__MAX];
677 double dpte_row_bandwidth_this_state[DC__NUM_DPP__MAX];
678 double DPTEBytesPerRowThisState[DC__NUM_DPP__MAX];
679 double PDEAndMetaPTEBytesPerFrameThisState[DC__NUM_DPP__MAX];
680 double MetaRowBytesThisState[DC__NUM_DPP__MAX];
681 bool use_one_row_for_frame[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
682 bool use_one_row_for_frame_flip[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
683 bool use_one_row_for_frame_this_state[DC__NUM_DPP__MAX];
684 bool use_one_row_for_frame_flip_this_state[DC__NUM_DPP__MAX];
686 unsigned int OutputTypeAndRatePerState[DC__VOLTAGE_STATES][DC__NUM_DPP__MAX];
687 double RequiredDISPCLKPerSurface[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
688 unsigned int MicroTileHeightY[DC__NUM_DPP__MAX];
689 unsigned int MicroTileHeightC[DC__NUM_DPP__MAX];
690 unsigned int MicroTileWidthY[DC__NUM_DPP__MAX];
691 unsigned int MicroTileWidthC[DC__NUM_DPP__MAX];
692 bool ImmediateFlipRequiredFinal;
693 bool DCCProgrammingAssumesScanDirectionUnknownFinal;
694 bool EnoughWritebackUnits;
695 bool ODMCombine2To1SupportCheckOK[DC__VOLTAGE_STATES];
696 bool NumberOfDP2p0Support;
697 unsigned int MaxNumDP2p0Streams;
698 unsigned int MaxNumDP2p0Outputs;
699 enum dm_output_type OutputTypePerState[DC__VOLTAGE_STATES][DC__NUM_DPP__MAX];
700 enum dm_output_rate OutputRatePerState[DC__VOLTAGE_STATES][DC__NUM_DPP__MAX];
701 double WritebackLineBufferLumaBufferSize;
702 double WritebackLineBufferChromaBufferSize;
703 double WritebackMinHSCLRatio;
704 double WritebackMinVSCLRatio;
705 double WritebackMaxHSCLRatio;
706 double WritebackMaxVSCLRatio;
707 double WritebackMaxHSCLTaps;
708 double WritebackMaxVSCLTaps;
709 unsigned int MaxNumDPP;
710 unsigned int MaxNumOTG;
711 double CursorBufferSize;
712 double CursorChunkSize;
714 double OutputLinkDPLanes[DC__NUM_DPP__MAX];
715 double ForcedOutputLinkBPP[DC__NUM_DPP__MAX]; // Mode Support only
716 double ImmediateFlipBW[DC__NUM_DPP__MAX];
717 double MaxMaxVStartup[DC__VOLTAGE_STATES][2];
719 double WritebackLumaVExtra;
720 double WritebackChromaVExtra;
721 double WritebackRequiredDISPCLK;
722 double MaximumSwathWidthSupport;
723 double MaximumSwathWidthInDETBuffer;
724 double MaximumSwathWidthInLineBuffer;
725 double MaxDispclkRoundedDownToDFSGranularity;
726 double MaxDppclkRoundedDownToDFSGranularity;
727 double PlaneRequiredDISPCLKWithoutODMCombine;
728 double PlaneRequiredDISPCLKWithODMCombine;
729 double PlaneRequiredDISPCLK;
730 double TotalNumberOfActiveOTG;
732 double EffectiveFECOverhead;
734 unsigned int OutbppDSC;
735 double TotalDSCUnitsRequired;
738 double SwathWidthGranularityY;
739 double RoundedUpMaxSwathSizeBytesY;
740 double SwathWidthGranularityC;
741 double RoundedUpMaxSwathSizeBytesC;
742 double EffectiveDETLBLinesLuma;
743 double EffectiveDETLBLinesChroma;
744 double ProjectedDCFCLKDeepSleep[DC__VOLTAGE_STATES][2];
745 double PDEAndMetaPTEBytesPerFrameY;
746 double PDEAndMetaPTEBytesPerFrameC;
747 unsigned int MetaRowBytesY;
748 unsigned int MetaRowBytesC;
749 unsigned int DPTEBytesPerRowC;
750 unsigned int DPTEBytesPerRowY;
754 double MaximumReadBandwidthWithPrefetch;
755 double MaximumReadBandwidthWithoutPrefetch;
756 double total_dcn_read_bw_with_flip;
757 double total_dcn_read_bw_with_flip_no_urgent_burst;
758 double FractionOfUrgentBandwidth;
759 double FractionOfUrgentBandwidthImmediateFlip; // Mode Support debugging output
762 double IdealSDPPortBandwidthPerState[DC__VOLTAGE_STATES][2];
763 unsigned int NoOfDPP[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
764 int NoOfDPPThisState[DC__NUM_DPP__MAX];
765 enum odm_combine_mode ODMCombineEnablePerState[DC__VOLTAGE_STATES][DC__NUM_DPP__MAX];
766 double SwathWidthYThisState[DC__NUM_DPP__MAX];
767 unsigned int SwathHeightCPerState[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
768 unsigned int SwathHeightYThisState[DC__NUM_DPP__MAX];
769 unsigned int SwathHeightCThisState[DC__NUM_DPP__MAX];
770 double VRatioPreY[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
771 double VRatioPreC[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
772 double RequiredPrefetchPixelDataBWLuma[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
773 double RequiredPrefetchPixelDataBWChroma[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
774 double RequiredDPPCLK[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
775 double RequiredDPPCLKThisState[DC__NUM_DPP__MAX];
776 bool PTEBufferSizeNotExceededY[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
777 bool PTEBufferSizeNotExceededC[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
778 bool BandwidthWithoutPrefetchSupported[DC__VOLTAGE_STATES][2];
779 bool PrefetchSupported[DC__VOLTAGE_STATES][2];
780 bool VRatioInPrefetchSupported[DC__VOLTAGE_STATES][2];
781 double RequiredDISPCLK[DC__VOLTAGE_STATES][2];
782 bool DISPCLK_DPPCLK_Support[DC__VOLTAGE_STATES][2];
783 bool TotalAvailablePipesSupport[DC__VOLTAGE_STATES][2];
784 unsigned int TotalNumberOfActiveDPP[DC__VOLTAGE_STATES][2];
785 unsigned int TotalNumberOfDCCActiveDPP[DC__VOLTAGE_STATES][2];
786 bool ModeSupport[DC__VOLTAGE_STATES][2];
787 double ReturnBWPerState[DC__VOLTAGE_STATES][2];
788 bool DIOSupport[DC__VOLTAGE_STATES];
789 bool NotEnoughDSCUnits[DC__VOLTAGE_STATES];
790 bool DSCCLKRequiredMoreThanSupported[DC__VOLTAGE_STATES];
791 bool DTBCLKRequiredMoreThanSupported[DC__VOLTAGE_STATES];
792 double UrgentRoundTripAndOutOfOrderLatencyPerState[DC__VOLTAGE_STATES];
793 bool ROBSupport[DC__VOLTAGE_STATES][2];
794 //based on rev 99: Dim DCCMetaBufferSizeSupport(NumberOfStates, 1) As Boolean
795 bool DCCMetaBufferSizeSupport[DC__VOLTAGE_STATES][2];
796 bool PTEBufferSizeNotExceeded[DC__VOLTAGE_STATES][2];
797 bool TotalVerticalActiveBandwidthSupport[DC__VOLTAGE_STATES][2];
798 double MaxTotalVerticalActiveAvailableBandwidth[DC__VOLTAGE_STATES][2];
799 double PrefetchBW[DC__NUM_DPP__MAX];
800 double PDEAndMetaPTEBytesPerFrame[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
801 double MetaRowBytes[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
802 double DPTEBytesPerRow[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
803 double PrefetchLinesY[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
804 double PrefetchLinesC[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
805 unsigned int MaxNumSwY[DC__NUM_DPP__MAX];
806 unsigned int MaxNumSwC[DC__NUM_DPP__MAX];
807 double PrefillY[DC__NUM_DPP__MAX];
808 double PrefillC[DC__NUM_DPP__MAX];
809 double LineTimesForPrefetch[DC__NUM_DPP__MAX];
810 double LinesForMetaPTE[DC__NUM_DPP__MAX];
811 double LinesForMetaAndDPTERow[DC__NUM_DPP__MAX];
812 double MinDPPCLKUsingSingleDPP[DC__NUM_DPP__MAX];
813 double SwathWidthYSingleDPP[DC__NUM_DPP__MAX];
814 double BytePerPixelInDETY[DC__NUM_DPP__MAX];
815 double BytePerPixelInDETC[DC__NUM_DPP__MAX];
816 bool RequiresDSC[DC__VOLTAGE_STATES][DC__NUM_DPP__MAX];
817 unsigned int NumberOfDSCSlice[DC__VOLTAGE_STATES][DC__NUM_DPP__MAX];
818 double RequiresFEC[DC__VOLTAGE_STATES][DC__NUM_DPP__MAX];
819 double OutputBppPerState[DC__VOLTAGE_STATES][DC__NUM_DPP__MAX];
820 double DSCDelayPerState[DC__VOLTAGE_STATES][DC__NUM_DPP__MAX];
821 bool ViewportSizeSupport[DC__VOLTAGE_STATES][2];
822 unsigned int Read256BlockHeightY[DC__NUM_DPP__MAX];
823 unsigned int Read256BlockWidthY[DC__NUM_DPP__MAX];
824 unsigned int Read256BlockHeightC[DC__NUM_DPP__MAX];
825 unsigned int Read256BlockWidthC[DC__NUM_DPP__MAX];
826 double MaxSwathHeightY[DC__NUM_DPP__MAX];
827 double MaxSwathHeightC[DC__NUM_DPP__MAX];
828 double MinSwathHeightY[DC__NUM_DPP__MAX];
829 double MinSwathHeightC[DC__NUM_DPP__MAX];
830 double ReadBandwidthLuma[DC__NUM_DPP__MAX];
831 double ReadBandwidthChroma[DC__NUM_DPP__MAX];
832 double ReadBandwidth[DC__NUM_DPP__MAX];
833 double WriteBandwidth[DC__NUM_DPP__MAX];
834 double PSCL_FACTOR[DC__NUM_DPP__MAX];
835 double PSCL_FACTOR_CHROMA[DC__NUM_DPP__MAX];
836 double MaximumVStartup[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
837 unsigned int MacroTileWidthY[DC__NUM_DPP__MAX];
838 unsigned int MacroTileWidthC[DC__NUM_DPP__MAX];
839 double AlignedDCCMetaPitch[DC__NUM_DPP__MAX];
840 double AlignedYPitch[DC__NUM_DPP__MAX];
841 double AlignedCPitch[DC__NUM_DPP__MAX];
842 double MaximumSwathWidth[DC__NUM_DPP__MAX];
843 double cursor_bw[DC__NUM_DPP__MAX];
844 double cursor_bw_pre[DC__NUM_DPP__MAX];
845 double Tno_bw[DC__NUM_DPP__MAX];
846 double prefetch_vmrow_bw[DC__NUM_DPP__MAX];
847 double DestinationLinesToRequestVMInImmediateFlip[DC__NUM_DPP__MAX];
848 double DestinationLinesToRequestRowInImmediateFlip[DC__NUM_DPP__MAX];
849 double final_flip_bw[DC__NUM_DPP__MAX];
850 bool ImmediateFlipSupportedForState[DC__VOLTAGE_STATES][2];
851 double WritebackDelay[DC__VOLTAGE_STATES][DC__NUM_DPP__MAX];
852 unsigned int vm_group_bytes[DC__NUM_DPP__MAX];
853 unsigned int dpte_group_bytes[DC__NUM_DPP__MAX];
854 unsigned int dpte_row_height[DC__NUM_DPP__MAX];
855 unsigned int meta_req_height[DC__NUM_DPP__MAX];
856 unsigned int meta_req_width[DC__NUM_DPP__MAX];
857 unsigned int meta_row_height[DC__NUM_DPP__MAX];
858 unsigned int meta_row_width[DC__NUM_DPP__MAX];
859 unsigned int dpte_row_height_chroma[DC__NUM_DPP__MAX];
860 unsigned int meta_req_height_chroma[DC__NUM_DPP__MAX];
861 unsigned int meta_req_width_chroma[DC__NUM_DPP__MAX];
862 unsigned int meta_row_height_chroma[DC__NUM_DPP__MAX];
863 unsigned int meta_row_width_chroma[DC__NUM_DPP__MAX];
864 bool ImmediateFlipSupportedForPipe[DC__NUM_DPP__MAX];
865 double meta_row_bw[DC__NUM_DPP__MAX];
866 double dpte_row_bw[DC__NUM_DPP__MAX];
867 double DisplayPipeLineDeliveryTimeLuma[DC__NUM_DPP__MAX]; // WM
868 double DisplayPipeLineDeliveryTimeChroma[DC__NUM_DPP__MAX]; // WM
869 double DisplayPipeRequestDeliveryTimeLuma[DC__NUM_DPP__MAX];
870 double DisplayPipeRequestDeliveryTimeChroma[DC__NUM_DPP__MAX];
871 enum clock_change_support DRAMClockChangeSupport[DC__VOLTAGE_STATES][2];
872 double UrgentBurstFactorCursor[DC__NUM_DPP__MAX];
873 double UrgentBurstFactorCursorPre[DC__NUM_DPP__MAX];
874 double UrgentBurstFactorLuma[DC__NUM_DPP__MAX];
875 double UrgentBurstFactorLumaPre[DC__NUM_DPP__MAX];
876 double UrgentBurstFactorChroma[DC__NUM_DPP__MAX];
877 double UrgentBurstFactorChromaPre[DC__NUM_DPP__MAX];
880 bool MPCCombine[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
881 double SwathWidthCSingleDPP[DC__NUM_DPP__MAX];
882 double MaximumSwathWidthInLineBufferLuma;
883 double MaximumSwathWidthInLineBufferChroma;
884 double MaximumSwathWidthLuma[DC__NUM_DPP__MAX];
885 double MaximumSwathWidthChroma[DC__NUM_DPP__MAX];
886 enum odm_combine_mode odm_combine_dummy[DC__NUM_DPP__MAX];
887 double dummy1[DC__NUM_DPP__MAX];
888 double dummy2[DC__NUM_DPP__MAX];
889 unsigned int dummy3[DC__NUM_DPP__MAX];
890 unsigned int dummy4[DC__NUM_DPP__MAX];
893 double dummy7[DC__NUM_DPP__MAX];
894 double dummy8[DC__NUM_DPP__MAX];
895 double dummy13[DC__NUM_DPP__MAX];
896 double dummy_double_array[2][DC__NUM_DPP__MAX];
897 unsigned int dummyinteger3[DC__NUM_DPP__MAX];
898 unsigned int dummyinteger4[DC__NUM_DPP__MAX];
899 unsigned int dummyinteger5;
900 unsigned int dummyinteger6;
901 unsigned int dummyinteger7;
902 unsigned int dummyinteger8;
903 unsigned int dummyinteger9;
904 unsigned int dummyinteger10;
905 unsigned int dummyinteger11;
906 unsigned int dummy_integer_array[8][DC__NUM_DPP__MAX];
908 bool dummysinglestring;
909 bool SingleDPPViewportSizeSupportPerPlane[DC__NUM_DPP__MAX];
910 double PlaneRequiredDISPCLKWithODMCombine2To1;
911 double PlaneRequiredDISPCLKWithODMCombine4To1;
912 unsigned int TotalNumberOfSingleDPPPlanes[DC__VOLTAGE_STATES][2];
914 bool ODMCombine4To1SupportCheckOK[DC__VOLTAGE_STATES];
915 enum odm_combine_mode ODMCombineEnableThisState[DC__NUM_DPP__MAX];
916 double SwathWidthCThisState[DC__NUM_DPP__MAX];
917 bool ViewportSizeSupportPerPlane[DC__NUM_DPP__MAX];
918 double AlignedDCCMetaPitchY[DC__NUM_DPP__MAX];
919 double AlignedDCCMetaPitchC[DC__NUM_DPP__MAX];
921 unsigned int NotEnoughUrgentLatencyHiding[DC__VOLTAGE_STATES][2];
922 unsigned int NotEnoughUrgentLatencyHidingPre;
923 int PTEBufferSizeInRequestsForLuma;
924 int PTEBufferSizeInRequestsForChroma;
927 int dpte_group_bytes_chroma;
928 unsigned int vm_group_bytes_chroma;
929 double dst_x_after_scaler;
930 double dst_y_after_scaler;
931 unsigned int VStartupRequiredWhenNotEnoughTimeForDynamicMetadata;
934 double PrefetchBandwidth[DC__NUM_DPP__MAX];
935 double VInitPreFillY[DC__NUM_DPP__MAX];
936 double VInitPreFillC[DC__NUM_DPP__MAX];
937 unsigned int MaxNumSwathY[DC__NUM_DPP__MAX];
938 unsigned int MaxNumSwathC[DC__NUM_DPP__MAX];
939 unsigned int VStartup[DC__NUM_DPP__MAX];
940 double DSTYAfterScaler[DC__NUM_DPP__MAX];
941 double DSTXAfterScaler[DC__NUM_DPP__MAX];
942 bool AllowDRAMClockChangeDuringVBlank[DC__NUM_DPP__MAX];
943 bool AllowDRAMSelfRefreshDuringVBlank[DC__NUM_DPP__MAX];
944 double VRatioPrefetchY[DC__NUM_DPP__MAX];
945 double VRatioPrefetchC[DC__NUM_DPP__MAX];
946 double DestinationLinesForPrefetch[DC__NUM_DPP__MAX];
947 double DestinationLinesToRequestVMInVBlank[DC__NUM_DPP__MAX];
948 double DestinationLinesToRequestRowInVBlank[DC__NUM_DPP__MAX];
949 double MinTTUVBlank[DC__NUM_DPP__MAX];
950 double BytePerPixelDETY[DC__NUM_DPP__MAX];
951 double BytePerPixelDETC[DC__NUM_DPP__MAX];
952 double SwathWidthY[DC__NUM_DPP__MAX];
953 double SwathWidthSingleDPPY[DC__NUM_DPP__MAX];
954 double CursorRequestDeliveryTime[DC__NUM_DPP__MAX];
955 double CursorRequestDeliveryTimePrefetch[DC__NUM_DPP__MAX];
956 double ReadBandwidthPlaneLuma[DC__NUM_DPP__MAX];
957 double ReadBandwidthPlaneChroma[DC__NUM_DPP__MAX];
958 double DisplayPipeLineDeliveryTimeLumaPrefetch[DC__NUM_DPP__MAX];
959 double DisplayPipeLineDeliveryTimeChromaPrefetch[DC__NUM_DPP__MAX];
960 double DisplayPipeRequestDeliveryTimeLumaPrefetch[DC__NUM_DPP__MAX];
961 double DisplayPipeRequestDeliveryTimeChromaPrefetch[DC__NUM_DPP__MAX];
962 double PixelPTEBytesPerRow[DC__NUM_DPP__MAX];
963 double PDEAndMetaPTEBytesFrame[DC__NUM_DPP__MAX];
964 double MetaRowByte[DC__NUM_DPP__MAX];
965 double PrefetchSourceLinesY[DC__NUM_DPP__MAX];
966 double RequiredPrefetchPixDataBWLuma[DC__NUM_DPP__MAX];
967 double RequiredPrefetchPixDataBWChroma[DC__NUM_DPP__MAX];
968 double PrefetchSourceLinesC[DC__NUM_DPP__MAX];
969 double PSCL_THROUGHPUT_LUMA[DC__NUM_DPP__MAX];
970 double PSCL_THROUGHPUT_CHROMA[DC__NUM_DPP__MAX];
971 double DSCCLK_calculated[DC__NUM_DPP__MAX];
972 unsigned int DSCDelay[DC__NUM_DPP__MAX];
973 unsigned int MaxVStartupLines[DC__NUM_DPP__MAX];
974 double DPPCLKUsingSingleDPP[DC__NUM_DPP__MAX];
975 double DPPCLK[DC__NUM_DPP__MAX];
976 unsigned int DCCYMaxUncompressedBlock[DC__NUM_DPP__MAX];
977 unsigned int DCCYMaxCompressedBlock[DC__NUM_DPP__MAX];
978 unsigned int DCCYIndependent64ByteBlock[DC__NUM_DPP__MAX];
979 double MaximumDCCCompressionYSurface[DC__NUM_DPP__MAX];
980 unsigned int BlockHeight256BytesY[DC__NUM_DPP__MAX];
981 unsigned int BlockHeight256BytesC[DC__NUM_DPP__MAX];
982 unsigned int BlockWidth256BytesY[DC__NUM_DPP__MAX];
983 unsigned int BlockWidth256BytesC[DC__NUM_DPP__MAX];
984 double XFCSlaveVUpdateOffset[DC__NUM_DPP__MAX];
985 double XFCSlaveVupdateWidth[DC__NUM_DPP__MAX];
986 double XFCSlaveVReadyOffset[DC__NUM_DPP__MAX];
987 double XFCTransferDelay[DC__NUM_DPP__MAX];
988 double XFCPrechargeDelay[DC__NUM_DPP__MAX];
989 double XFCRemoteSurfaceFlipLatency[DC__NUM_DPP__MAX];
990 double XFCPrefetchMargin[DC__NUM_DPP__MAX];
991 unsigned int dpte_row_width_luma_ub[DC__NUM_DPP__MAX];
992 unsigned int dpte_row_width_chroma_ub[DC__NUM_DPP__MAX];
993 double FullDETBufferingTimeY[DC__NUM_DPP__MAX]; // WM
994 double FullDETBufferingTimeC[DC__NUM_DPP__MAX]; // WM
995 double DST_Y_PER_PTE_ROW_NOM_L[DC__NUM_DPP__MAX];
996 double DST_Y_PER_PTE_ROW_NOM_C[DC__NUM_DPP__MAX];
997 double DST_Y_PER_META_ROW_NOM_L[DC__NUM_DPP__MAX];
998 double TimePerMetaChunkNominal[DC__NUM_DPP__MAX];
999 double TimePerMetaChunkVBlank[DC__NUM_DPP__MAX];
1000 double TimePerMetaChunkFlip[DC__NUM_DPP__MAX];
1001 unsigned int swath_width_luma_ub[DC__NUM_DPP__MAX];
1002 unsigned int swath_width_chroma_ub[DC__NUM_DPP__MAX];
1003 unsigned int PixelPTEReqWidthY[DC__NUM_DPP__MAX];
1004 unsigned int PixelPTEReqHeightY[DC__NUM_DPP__MAX];
1005 unsigned int PTERequestSizeY[DC__NUM_DPP__MAX];
1006 unsigned int PixelPTEReqWidthC[DC__NUM_DPP__MAX];
1007 unsigned int PixelPTEReqHeightC[DC__NUM_DPP__MAX];
1008 unsigned int PTERequestSizeC[DC__NUM_DPP__MAX];
1009 double time_per_pte_group_nom_luma[DC__NUM_DPP__MAX];
1010 double time_per_pte_group_nom_chroma[DC__NUM_DPP__MAX];
1011 double time_per_pte_group_vblank_luma[DC__NUM_DPP__MAX];
1012 double time_per_pte_group_vblank_chroma[DC__NUM_DPP__MAX];
1013 double time_per_pte_group_flip_luma[DC__NUM_DPP__MAX];
1014 double time_per_pte_group_flip_chroma[DC__NUM_DPP__MAX];
1015 double TimePerVMGroupVBlank[DC__NUM_DPP__MAX];
1016 double TimePerVMGroupFlip[DC__NUM_DPP__MAX];
1017 double TimePerVMRequestVBlank[DC__NUM_DPP__MAX];
1018 double TimePerVMRequestFlip[DC__NUM_DPP__MAX];
1019 unsigned int dpde0_bytes_per_frame_ub_l[DC__NUM_DPP__MAX];
1020 unsigned int meta_pte_bytes_per_frame_ub_l[DC__NUM_DPP__MAX];
1021 unsigned int dpde0_bytes_per_frame_ub_c[DC__NUM_DPP__MAX];
1022 unsigned int meta_pte_bytes_per_frame_ub_c[DC__NUM_DPP__MAX];
1023 double LinesToFinishSwathTransferStutterCriticalPlane;
1024 unsigned int BytePerPixelYCriticalPlane;
1025 double SwathWidthYCriticalPlane;
1026 double LinesInDETY[DC__NUM_DPP__MAX];
1027 double LinesInDETYRoundedDownToSwath[DC__NUM_DPP__MAX];
1029 double SwathWidthSingleDPPC[DC__NUM_DPP__MAX];
1030 double SwathWidthC[DC__NUM_DPP__MAX];
1031 unsigned int BytePerPixelY[DC__NUM_DPP__MAX];
1032 unsigned int BytePerPixelC[DC__NUM_DPP__MAX];
1033 unsigned int dummyinteger1;
1034 unsigned int dummyinteger2;
1035 double FinalDRAMClockChangeLatency;
1036 double Tdmdl_vm[DC__NUM_DPP__MAX];
1037 double Tdmdl[DC__NUM_DPP__MAX];
1038 double TSetup[DC__NUM_DPP__MAX];
1039 unsigned int ThisVStartup;
1040 bool WritebackAllowDRAMClockChangeEndPosition[DC__NUM_DPP__MAX];
1041 double DST_Y_PER_META_ROW_NOM_C[DC__NUM_DPP__MAX];
1042 double TimePerChromaMetaChunkNominal[DC__NUM_DPP__MAX];
1043 double TimePerChromaMetaChunkVBlank[DC__NUM_DPP__MAX];
1044 double TimePerChromaMetaChunkFlip[DC__NUM_DPP__MAX];
1045 unsigned int DCCCMaxUncompressedBlock[DC__NUM_DPP__MAX];
1046 unsigned int DCCCMaxCompressedBlock[DC__NUM_DPP__MAX];
1047 double VStartupMargin;
1048 bool NotEnoughTimeForDynamicMetadata[DC__NUM_DPP__MAX];
1050 /* Missing from VBA */
1051 unsigned int MaximumMaxVStartupLines;
1052 double FabricAndDRAMBandwidth;
1053 double LinesInDETLuma;
1054 double LinesInDETChroma;
1055 unsigned int ImmediateFlipBytes[DC__NUM_DPP__MAX];
1056 unsigned int LinesInDETC[DC__NUM_DPP__MAX];
1057 unsigned int LinesInDETCRoundedDownToSwath[DC__NUM_DPP__MAX];
1058 double UrgentLatencySupportUsPerState[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1059 double UrgentLatencySupportUs[DC__NUM_DPP__MAX];
1060 double FabricAndDRAMBandwidthPerState[DC__VOLTAGE_STATES];
1061 bool UrgentLatencySupport[DC__VOLTAGE_STATES][2];
1062 unsigned int SwathWidthYPerState[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1063 unsigned int SwathHeightYPerState[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1064 double qual_row_bw[DC__NUM_DPP__MAX];
1065 double prefetch_row_bw[DC__NUM_DPP__MAX];
1066 double prefetch_vm_bw[DC__NUM_DPP__MAX];
1068 double PTEGroupSize;
1069 unsigned int PDEProcessingBufIn64KBReqs;
1071 double MaxTotalVActiveRDBandwidth;
1072 bool DoUrgentLatencyAdjustment;
1073 double UrgentLatencyAdjustmentFabricClockComponent;
1074 double UrgentLatencyAdjustmentFabricClockReference;
1075 double MinUrgentLatencySupportUs;
1076 double MinFullDETBufferingTime;
1077 double AverageReadBandwidthGBytePerSecond;
1078 bool FirstMainPlane;
1080 unsigned int ViewportWidthChroma[DC__NUM_DPP__MAX];
1081 unsigned int ViewportHeightChroma[DC__NUM_DPP__MAX];
1082 double HRatioChroma[DC__NUM_DPP__MAX];
1083 double VRatioChroma[DC__NUM_DPP__MAX];
1084 int WritebackSourceWidth[DC__NUM_DPP__MAX];
1086 bool ModeIsSupported;
1087 bool ODMCombine4To1Supported;
1089 unsigned int SurfaceWidthY[DC__NUM_DPP__MAX];
1090 unsigned int SurfaceWidthC[DC__NUM_DPP__MAX];
1091 unsigned int SurfaceHeightY[DC__NUM_DPP__MAX];
1092 unsigned int SurfaceHeightC[DC__NUM_DPP__MAX];
1093 unsigned int WritebackHTaps[DC__NUM_DPP__MAX];
1094 unsigned int WritebackVTaps[DC__NUM_DPP__MAX];
1095 bool DSCEnable[DC__NUM_DPP__MAX];
1097 double DRAMClockChangeLatencyOverride;
1099 double GPUVMMinPageSize;
1100 double HostVMMinPageSize;
1102 bool MPCCombineEnable[DC__NUM_DPP__MAX];
1103 unsigned int HostVMMaxNonCachedPageTableLevels;
1104 bool DynamicMetadataVMEnabled;
1105 double WritebackInterfaceBufferSize;
1106 double WritebackLineBufferSize;
1108 double DCCRateLuma[DC__NUM_DPP__MAX];
1109 double DCCRateChroma[DC__NUM_DPP__MAX];
1111 double PHYCLKD18PerState[DC__VOLTAGE_STATES];
1113 bool WritebackSupportInterleaveAndUsingWholeBufferForASingleStream;
1114 bool NumberOfHDMIFRLSupport;
1115 unsigned int MaxNumHDMIFRLOutputs;
1116 int AudioSampleRate[DC__NUM_DPP__MAX];
1117 int AudioSampleLayout[DC__NUM_DPP__MAX];
1119 int PercentMarginOverMinimumRequiredDCFCLK;
1120 bool DynamicMetadataSupported[DC__VOLTAGE_STATES][2];
1121 enum immediate_flip_requirement ImmediateFlipRequirement[DC__NUM_DPP__MAX];
1122 unsigned int DETBufferSizeYThisState[DC__NUM_DPP__MAX];
1123 unsigned int DETBufferSizeCThisState[DC__NUM_DPP__MAX];
1124 bool NoUrgentLatencyHiding[DC__NUM_DPP__MAX];
1125 bool NoUrgentLatencyHidingPre[DC__NUM_DPP__MAX];
1126 int swath_width_luma_ub_this_state[DC__NUM_DPP__MAX];
1127 int swath_width_chroma_ub_this_state[DC__NUM_DPP__MAX];
1128 double UrgLatency[DC__VOLTAGE_STATES];
1129 double VActiveCursorBandwidth[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1130 double VActivePixelBandwidth[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1131 bool NoTimeForPrefetch[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1132 bool NoTimeForDynamicMetadata[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1133 double dpte_row_bandwidth[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1134 double meta_row_bandwidth[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1135 double DETBufferSizeYAllStates[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1136 double DETBufferSizeCAllStates[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1137 unsigned int swath_width_luma_ub_all_states[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1138 unsigned int swath_width_chroma_ub_all_states[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1139 bool NotUrgentLatencyHiding[DC__VOLTAGE_STATES][2];
1140 unsigned int SwathHeightYAllStates[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1141 unsigned int SwathHeightCAllStates[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1142 unsigned int SwathWidthYAllStates[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1143 unsigned int SwathWidthCAllStates[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1144 double TotalDPTERowBandwidth[DC__VOLTAGE_STATES][2];
1145 double TotalMetaRowBandwidth[DC__VOLTAGE_STATES][2];
1146 double TotalVActiveCursorBandwidth[DC__VOLTAGE_STATES][2];
1147 double TotalVActivePixelBandwidth[DC__VOLTAGE_STATES][2];
1148 double WritebackDelayTime[DC__NUM_DPP__MAX];
1149 unsigned int DCCYIndependentBlock[DC__NUM_DPP__MAX];
1150 unsigned int DCCCIndependentBlock[DC__NUM_DPP__MAX];
1151 unsigned int dummyinteger17;
1152 unsigned int dummyinteger18;
1153 unsigned int dummyinteger19;
1154 unsigned int dummyinteger20;
1155 unsigned int dummyinteger21;
1156 unsigned int dummyinteger22;
1157 unsigned int dummyinteger23;
1158 unsigned int dummyinteger24;
1159 unsigned int dummyinteger25;
1160 unsigned int dummyinteger26;
1161 unsigned int dummyinteger27;
1162 unsigned int dummyinteger28;
1163 unsigned int dummyinteger29;
1164 bool dummystring[DC__NUM_DPP__MAX];
1166 enum odm_combine_policy ODMCombinePolicy;
1167 bool UseMinimumRequiredDCFCLK;
1168 bool ClampMinDCFCLK;
1169 bool AllowDramClockChangeOneDisplayVactive;
1171 double MaxAveragePercentOfIdealFabricAndSDPPortBWDisplayCanUseInNormalSystemOperation;
1172 double PercentOfIdealFabricAndSDPPortBWReceivedAfterUrgLatency;
1173 double PercentOfIdealDRAMBWReceivedAfterUrgLatencyPixelMixedWithVMData;
1174 double PercentOfIdealDRAMBWReceivedAfterUrgLatencyVMDataOnly;
1175 double PercentOfIdealDRAMBWReceivedAfterUrgLatencyPixelDataOnly;
1176 double SRExitZ8Time;
1177 double SREnterPlusExitZ8Time;
1178 double Z8StutterExitWatermark;
1179 double Z8StutterEnterPlusExitWatermark;
1180 double Z8StutterEfficiencyNotIncludingVBlank;
1181 double Z8StutterEfficiency;
1182 double DCCFractionOfZeroSizeRequestsLuma[DC__NUM_DPP__MAX];
1183 double DCCFractionOfZeroSizeRequestsChroma[DC__NUM_DPP__MAX];
1184 double UrgBurstFactorCursor[DC__NUM_DPP__MAX];
1185 double UrgBurstFactorLuma[DC__NUM_DPP__MAX];
1186 double UrgBurstFactorChroma[DC__NUM_DPP__MAX];
1187 double UrgBurstFactorCursorPre[DC__NUM_DPP__MAX];
1188 double UrgBurstFactorLumaPre[DC__NUM_DPP__MAX];
1189 double UrgBurstFactorChromaPre[DC__NUM_DPP__MAX];
1190 bool NotUrgentLatencyHidingPre[DC__NUM_DPP__MAX];
1191 bool LinkCapacitySupport[DC__NUM_DPP__MAX];
1192 bool VREADY_AT_OR_AFTER_VSYNC[DC__NUM_DPP__MAX];
1193 unsigned int MIN_DST_Y_NEXT_START[DC__NUM_DPP__MAX];
1194 unsigned int VFrontPorch[DC__NUM_DPP__MAX];
1195 int ConfigReturnBufferSizeInKByte;
1196 enum unbounded_requesting_policy UseUnboundedRequesting;
1197 int CompressedBufferSegmentSizeInkByte;
1198 int CompressedBufferSizeInkByte;
1199 int MetaFIFOSizeInKEntries;
1200 int ZeroSizeBufferEntries;
1201 int COMPBUF_RESERVED_SPACE_64B;
1202 int COMPBUF_RESERVED_SPACE_ZS;
1203 bool UnboundedRequestEnabled;
1204 bool DSC422NativeSupport;
1205 bool NoEnoughUrgentLatencyHiding;
1206 bool NoEnoughUrgentLatencyHidingPre;
1207 int NumberOfStutterBurstsPerFrame;
1208 int Z8NumberOfStutterBurstsPerFrame;
1209 unsigned int MaximumDSCBitsPerComponent;
1210 unsigned int NotEnoughUrgentLatencyHidingA[DC__VOLTAGE_STATES][2];
1211 double ReadBandwidthSurfaceLuma[DC__NUM_DPP__MAX];
1212 double ReadBandwidthSurfaceChroma[DC__NUM_DPP__MAX];
1213 double SurfaceRequiredDISPCLKWithoutODMCombine;
1214 double SurfaceRequiredDISPCLK;
1215 double MinActiveFCLKChangeLatencySupported;
1216 int MinVoltageLevel;
1217 int MaxVoltageLevel;
1218 unsigned int TotalNumberOfSingleDPPSurfaces[DC__VOLTAGE_STATES][2];
1219 unsigned int CompressedBufferSizeInkByteAllStates[DC__VOLTAGE_STATES][2];
1220 unsigned int DETBufferSizeInKByteAllStates[DC__VOLTAGE_STATES][2][DC__NUM_DPP__MAX];
1221 unsigned int DETBufferSizeInKByteThisState[DC__NUM_DPP__MAX];
1222 unsigned int SurfaceSizeInMALL[DC__NUM_DPP__MAX];
1223 bool ExceededMALLSize;
1224 bool PTE_BUFFER_MODE[DC__NUM_DPP__MAX];
1225 unsigned int BIGK_FRAGMENT_SIZE[DC__NUM_DPP__MAX];
1226 unsigned int CompressedBufferSizeInkByteThisState;
1227 enum dm_fclock_change_support FCLKChangeSupport[DC__VOLTAGE_STATES][2];
1228 bool USRRetrainingSupport[DC__VOLTAGE_STATES][2];
1229 enum dm_use_mall_for_pstate_change_mode UsesMALLForPStateChange[DC__NUM_DPP__MAX];
1230 bool UnboundedRequestEnabledAllStates[DC__VOLTAGE_STATES][2];
1231 bool SingleDPPViewportSizeSupportPerSurface[DC__NUM_DPP__MAX];
1232 enum dm_use_mall_for_static_screen_mode UseMALLForStaticScreen[DC__NUM_DPP__MAX];
1233 bool UnboundedRequestEnabledThisState;
1234 bool DRAMClockChangeRequirementFinal;
1235 bool FCLKChangeRequirementFinal;
1236 bool USRRetrainingRequiredFinal;
1237 unsigned int DETSizeOverride[DC__NUM_DPP__MAX];
1238 unsigned int nomDETInKByte;
1239 enum mpc_combine_affinity MPCCombineUse[DC__NUM_DPP__MAX];
1240 bool MPCCombineMethodIncompatible;
1241 unsigned int RequiredSlots[DC__VOLTAGE_STATES][DC__NUM_DPP__MAX];
1242 bool ExceededMultistreamSlots[DC__VOLTAGE_STATES];
1243 enum odm_combine_policy ODMUse[DC__NUM_DPP__MAX];
1244 unsigned int OutputMultistreamId[DC__NUM_DPP__MAX];
1245 bool OutputMultistreamEn[DC__NUM_DPP__MAX];
1246 bool UsesMALLForStaticScreen[DC__NUM_DPP__MAX];
1247 double MaxActiveDRAMClockChangeLatencySupported[DC__NUM_DPP__MAX];
1248 double WritebackAllowFCLKChangeEndPosition[DC__NUM_DPP__MAX];
1249 bool PTEBufferSizeNotExceededPerState[DC__NUM_DPP__MAX]; // new in DML32
1250 bool DCCMetaBufferSizeNotExceededPerState[DC__NUM_DPP__MAX]; // new in DML32
1251 bool NotEnoughDSCSlices[DC__VOLTAGE_STATES];
1252 bool PixelsPerLinePerDSCUnitSupport[DC__VOLTAGE_STATES];
1253 bool DCCMetaBufferSizeNotExceeded[DC__VOLTAGE_STATES][2];
1254 unsigned int dpte_row_height_linear[DC__NUM_DPP__MAX];
1255 unsigned int dpte_row_height_linear_chroma[DC__NUM_DPP__MAX];
1256 unsigned int BlockHeightY[DC__NUM_DPP__MAX];
1257 unsigned int BlockHeightC[DC__NUM_DPP__MAX];
1258 unsigned int BlockWidthY[DC__NUM_DPP__MAX];
1259 unsigned int BlockWidthC[DC__NUM_DPP__MAX];
1260 unsigned int SubViewportLinesNeededInMALL[DC__NUM_DPP__MAX];
1261 bool VActiveBandwithSupport[DC__VOLTAGE_STATES][2];
1262 struct dummy_vars dummy_vars;
1265 bool CalculateMinAndMaxPrefetchMode(
1266 enum self_refresh_affinity AllowDRAMSelfRefreshOrDRAMClockChangeInVblank,
1267 unsigned int *MinPrefetchMode,
1268 unsigned int *MaxPrefetchMode);
1270 double CalculateWriteBackDISPCLK(
1271 enum source_format_class WritebackPixelFormat,
1273 double WritebackHRatio,
1274 double WritebackVRatio,
1275 unsigned int WritebackLumaHTaps,
1276 unsigned int WritebackLumaVTaps,
1277 unsigned int WritebackChromaHTaps,
1278 unsigned int WritebackChromaVTaps,
1279 double WritebackDestinationWidth,
1280 unsigned int HTotal,
1281 unsigned int WritebackChromaLineBufferWidth);
1283 #endif /* _DML2_DISPLAY_MODE_VBA_H_ */