]> git.ipfire.org Git - people/ms/linux.git/blob - drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h
selftests: forwarding: add shebang for sch_red.sh
[people/ms/linux.git] / drivers / gpu / drm / amd / display / dc / dml / display_mode_vba.h
1 /*
2 * Copyright 2017 Advanced Micro Devices, Inc.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 *
22 * Authors: AMD
23 *
24 */
25
26
27 #ifndef __DML2_DISPLAY_MODE_VBA_H__
28 #define __DML2_DISPLAY_MODE_VBA_H__
29
30 struct display_mode_lib;
31
32 void ModeSupportAndSystemConfiguration(struct display_mode_lib *mode_lib);
33
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)
35
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);
74
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)
76
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);
137
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);
146
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);
163
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);
168
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);
174
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);
184
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];
191 bool dummy_boolean;
192 bool dummy_boolean2;
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;
199 DmlPipe myPipe;
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;
206 };
207
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];
222 DmlPipe myPipe;
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;
239 bool NoChroma;
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];
250 };
251
252 struct dummy_vars {
253 struct DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation
254 DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation;
255 struct dml32_ModeSupportAndSystemConfigurationFull dml32_ModeSupportAndSystemConfigurationFull;
256 };
257
258 struct vba_vars_st {
259 ip_params_st ip;
260 soc_bounding_box_st soc;
261
262 int maxMpcComb;
263 bool UseMaximumVStartup;
264
265 double WritebackDISPCLK;
266 double DPPCLKUsingSingleDPPLuma;
267 double DPPCLKUsingSingleDPPChroma;
268 double DISPCLKWithRamping;
269 double DISPCLKWithoutRamping;
270 double GlobalDPPCLK;
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;
287 double VBlankTime;
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;
296
297 bool DummyPStateCheck;
298 bool DRAMClockChangeSupportsVActive;
299 bool PrefetchModeSupported;
300 bool PrefetchAndImmediateFlipSupported;
301 enum self_refresh_affinity AllowDRAMSelfRefreshOrDRAMClockChangeInVblank; // Mode Support only
302 double XFCRemoteSurfaceFlipDelay;
303 double TInitXFill;
304 double TslvChk;
305 double SrcActiveDrainRate;
306 bool ImmediateFlipSupported;
307 enum mpc_combine_affinity WhenToDoMPCCombine; // Mode Support only
308
309 bool PrefetchERROR;
310
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;
322 double TFinalxFill;
323
324 //
325 // SOC Bounding Box Parameters
326 //
327 double SRExitTime;
328 double SREnterPlusExitTime;
329 double UrgentLatencyPixelDataOnly;
330 double UrgentLatencyPixelMixedWithVMData;
331 double UrgentLatencyVMDataOnly;
332 double UrgentLatency; // max of the above three
333 double USRRetrainingLatency;
334 double SMNLatency;
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;
363
364 //
365 // IP Parameters
366 //
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;
373 double ReturnBW;
374 bool GPUVMEnable;
375 bool HostVMEnable;
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;
384 bool ODMCapability;
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;
398 bool XFCSupported;
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
421 int VoltageLevel;
422 double FabricClock;
423 double DRAMSpeed;
424 double DISPCLK;
425 double SOCCLK;
426 double DCFCLK;
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];
444
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;
510
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;
529 double MaxVStartup;
530 bool IgnoreViewportPositioning;
531 bool ErrorResult[DC__NUM_DPP__MAX];
532 //
533 // Calculated dml_ml->vba.Outputs
534 //
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;
557
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];
563
564 bool ImmediateFlipSupportedSurface[DC__NUM_DPP__MAX];
565
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];
571
572 unsigned int TotImmediateFlipBytes;
573 double TCalc;
574
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];
578
579 /* vba mode support */
580 /*inputs*/
581 bool SupportGFX7CompatibleTilingIn32bppAnd64bpp;
582 double MaxHSCLRatio;
583 double MaxVSCLRatio;
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];
599
600 /*outputs*/
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;
618 bool CursorSupport;
619 bool PitchSupport;
620 enum dm_validation_status ValidationStatus[DC__VOLTAGE_STATES];
621
622 /* Mode Support Reason */
623 bool P2IWith420;
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;
633
634 bool ImmediateFlipRequiredButTheRequirementForEachSurfaceIsNotSpecified;
635 bool ImmediateFlipOrHostVMAndPStateWithMALLFullFrameOrPhantomPipe;
636 bool InvalidCombinationOfMALLUseForPStateAndStaticScreen;
637 bool InvalidCombinationOfMALLUseForPState;
638
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];
651
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;
679 unsigned int Mode;
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];
684
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;
697 double FECOverhead;
698 double EffectiveFECOverhead;
699 double Outbpp;
700 unsigned int OutbppDSC;
701 double TotalDSCUnitsRequired;
702 double bpp;
703 unsigned int slices;
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;
717 double ExtraLatency;
718 double TimeCalc;
719 double TWait;
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
726
727 /* ms locals */
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];
844
845
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];
857 double dummy5;
858 double dummy6;
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];
873
874 bool dummysinglestring;
875 bool SingleDPPViewportSizeSupportPerPlane[DC__NUM_DPP__MAX];
876 double PlaneRequiredDISPCLKWithODMCombine2To1;
877 double PlaneRequiredDISPCLKWithODMCombine4To1;
878 unsigned int TotalNumberOfSingleDPPPlanes[DC__VOLTAGE_STATES][2];
879 bool LinkDSCEnable;
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];
886
887 unsigned int NotEnoughUrgentLatencyHiding[DC__VOLTAGE_STATES][2];
888 unsigned int NotEnoughUrgentLatencyHidingPre;
889 int PTEBufferSizeInRequestsForLuma;
890 int PTEBufferSizeInRequestsForChroma;
891
892 // Missing from VBA
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;
898
899 /* perf locals*/
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];
994
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];
1015
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];
1033
1034 double PTEGroupSize;
1035 unsigned int PDEProcessingBufIn64KBReqs;
1036
1037 double MaxTotalVActiveRDBandwidth;
1038 bool DoUrgentLatencyAdjustment;
1039 double UrgentLatencyAdjustmentFabricClockComponent;
1040 double UrgentLatencyAdjustmentFabricClockReference;
1041 double MinUrgentLatencySupportUs;
1042 double MinFullDETBufferingTime;
1043 double AverageReadBandwidthGBytePerSecond;
1044 bool FirstMainPlane;
1045
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];
1051
1052 bool ModeIsSupported;
1053 bool ODMCombine4To1Supported;
1054
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];
1062
1063 double DRAMClockChangeLatencyOverride;
1064
1065 double GPUVMMinPageSize;
1066 double HostVMMinPageSize;
1067
1068 bool MPCCombineEnable[DC__NUM_DPP__MAX];
1069 unsigned int HostVMMaxNonCachedPageTableLevels;
1070 bool DynamicMetadataVMEnabled;
1071 double WritebackInterfaceBufferSize;
1072 double WritebackLineBufferSize;
1073
1074 double DCCRateLuma[DC__NUM_DPP__MAX];
1075 double DCCRateChroma[DC__NUM_DPP__MAX];
1076
1077 double PHYCLKD18PerState[DC__VOLTAGE_STATES];
1078
1079 bool WritebackSupportInterleaveAndUsingWholeBufferForASingleStream;
1080 bool NumberOfHDMIFRLSupport;
1081 unsigned int MaxNumHDMIFRLOutputs;
1082 int AudioSampleRate[DC__NUM_DPP__MAX];
1083 int AudioSampleLayout[DC__NUM_DPP__MAX];
1084
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];
1131 double BPP;
1132 enum odm_combine_policy ODMCombinePolicy;
1133 bool UseMinimumRequiredDCFCLK;
1134 bool ClampMinDCFCLK;
1135 bool AllowDramClockChangeOneDisplayVactive;
1136
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;
1229 };
1230
1231 bool CalculateMinAndMaxPrefetchMode(
1232 enum self_refresh_affinity AllowDRAMSelfRefreshOrDRAMClockChangeInVblank,
1233 unsigned int *MinPrefetchMode,
1234 unsigned int *MaxPrefetchMode);
1235
1236 double CalculateWriteBackDISPCLK(
1237 enum source_format_class WritebackPixelFormat,
1238 double PixelClock,
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);
1248
1249 #endif /* _DML2_DISPLAY_MODE_VBA_H_ */