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