All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Alex Deucher <alexander.deucher@amd.com>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
	linux-kernel@vger.kernel.org,
	Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Subject: drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_mode_vba_31.c:2106:13: warning: stack frame size (2136) exceeds limit (2048) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation'
Date: Tue, 18 Jan 2022 11:43:14 +0800	[thread overview]
Message-ID: <202201181113.zMONHfro-lkp@intel.com> (raw)

Hi Alex,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   0c947b893d69231a9add855939da7c66237ab44f
commit: 8fe44c080a53ac0ccbe88053a2e40f9acca33091 drm/amdgpu/display: fold DRM_AMD_DC_DCN3_1 into DRM_AMD_DC_DCN
date:   7 months ago
config: x86_64-randconfig-r004-20220117 (https://download.01.org/0day-ci/archive/20220118/202201181113.zMONHfro-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project c63a3175c2947e8c1a2d3bbe16a8586600705c54)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8fe44c080a53ac0ccbe88053a2e40f9acca33091
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 8fe44c080a53ac0ccbe88053a2e40f9acca33091
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_mode_vba_31.c:2106:13: warning: stack frame size (2136) exceeds limit (2048) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation' [-Wframe-larger-than]
   static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation(struct display_mode_lib *mode_lib)
               ^
   drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_mode_vba_31.c:3957:6: warning: stack frame size (3384) exceeds limit (2048) in 'dml31_ModeSupportAndSystemConfigurationFull' [-Wframe-larger-than]
   void dml31_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
        ^
   2 warnings generated.


vim +/DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation +2106 drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_mode_vba_31.c

74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2105  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 @2106  static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation(struct display_mode_lib *mode_lib)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2107  {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2108  	struct vba_vars_st *v = &mode_lib->vba;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2109  	unsigned int j, k;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2110  	double HostVMInefficiencyFactor = 1.0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2111  	bool NoChromaPlanes = true;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2112  	int ReorderBytes;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2113  	double VMDataOnlyReturnBW;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2114  	double MaxTotalRDBandwidth = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2115  	int PrefetchMode = v->PrefetchModePerState[v->VoltageLevel][v->maxMpcComb];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2116  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2117  	v->WritebackDISPCLK = 0.0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2118  	v->DISPCLKWithRamping = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2119  	v->DISPCLKWithoutRamping = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2120  	v->GlobalDPPCLK = 0.0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2121  	/* DAL custom code: need to update ReturnBW in case min dcfclk is overriden */
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2122  	{
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2123  	double IdealFabricAndSDPPortBandwidthPerState = dml_min(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2124  			v->ReturnBusWidth * v->DCFCLKState[v->VoltageLevel][v->maxMpcComb],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2125  			v->FabricClockPerState[v->VoltageLevel] * v->FabricDatapathToDCNDataReturn);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2126  	double IdealDRAMBandwidthPerState = v->DRAMSpeedPerState[v->VoltageLevel] * v->NumberOfChannels * v->DRAMChannelWidth;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2127  	if (v->HostVMEnable != true) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2128  		v->ReturnBW = dml_min(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2129  				IdealFabricAndSDPPortBandwidthPerState * v->PercentOfIdealFabricAndSDPPortBWReceivedAfterUrgLatency / 100.0,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2130  				IdealDRAMBandwidthPerState * v->PercentOfIdealDRAMBWReceivedAfterUrgLatencyPixelDataOnly / 100.0);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2131  	} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2132  		v->ReturnBW = dml_min(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2133  				IdealFabricAndSDPPortBandwidthPerState * v->PercentOfIdealFabricAndSDPPortBWReceivedAfterUrgLatency / 100.0,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2134  				IdealDRAMBandwidthPerState * v->PercentOfIdealDRAMBWReceivedAfterUrgLatencyPixelMixedWithVMData / 100.0);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2135  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2136  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2137  	/* End DAL custom code */
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2138  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2139  	// DISPCLK and DPPCLK Calculation
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2140  	//
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2141  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2142  		if (v->WritebackEnable[k]) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2143  			v->WritebackDISPCLK = dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2144  					v->WritebackDISPCLK,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2145  					dml31_CalculateWriteBackDISPCLK(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2146  							v->WritebackPixelFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2147  							v->PixelClock[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2148  							v->WritebackHRatio[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2149  							v->WritebackVRatio[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2150  							v->WritebackHTaps[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2151  							v->WritebackVTaps[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2152  							v->WritebackSourceWidth[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2153  							v->WritebackDestinationWidth[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2154  							v->HTotal[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2155  							v->WritebackLineBufferSize));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2156  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2157  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2158  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2159  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2160  		if (v->HRatio[k] > 1) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2161  			v->PSCL_THROUGHPUT_LUMA[k] = dml_min(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2162  					v->MaxDCHUBToPSCLThroughput,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2163  					v->MaxPSCLToLBThroughput * v->HRatio[k] / dml_ceil(v->htaps[k] / 6.0, 1));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2164  		} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2165  			v->PSCL_THROUGHPUT_LUMA[k] = dml_min(v->MaxDCHUBToPSCLThroughput, v->MaxPSCLToLBThroughput);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2166  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2167  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2168  		v->DPPCLKUsingSingleDPPLuma = v->PixelClock[k]
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2169  				* dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2170  						v->vtaps[k] / 6.0 * dml_min(1.0, v->HRatio[k]),
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2171  						dml_max(v->HRatio[k] * v->VRatio[k] / v->PSCL_THROUGHPUT_LUMA[k], 1.0));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2172  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2173  		if ((v->htaps[k] > 6 || v->vtaps[k] > 6) && v->DPPCLKUsingSingleDPPLuma < 2 * v->PixelClock[k]) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2174  			v->DPPCLKUsingSingleDPPLuma = 2 * v->PixelClock[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2175  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2176  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2177  		if ((v->SourcePixelFormat[k] != dm_420_8 && v->SourcePixelFormat[k] != dm_420_10 && v->SourcePixelFormat[k] != dm_420_12
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2178  				&& v->SourcePixelFormat[k] != dm_rgbe_alpha)) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2179  			v->PSCL_THROUGHPUT_CHROMA[k] = 0.0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2180  			v->DPPCLKUsingSingleDPP[k] = v->DPPCLKUsingSingleDPPLuma;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2181  		} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2182  			if (v->HRatioChroma[k] > 1) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2183  				v->PSCL_THROUGHPUT_CHROMA[k] = dml_min(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2184  						v->MaxDCHUBToPSCLThroughput,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2185  						v->MaxPSCLToLBThroughput * v->HRatioChroma[k] / dml_ceil(v->HTAPsChroma[k] / 6.0, 1.0));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2186  			} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2187  				v->PSCL_THROUGHPUT_CHROMA[k] = dml_min(v->MaxDCHUBToPSCLThroughput, v->MaxPSCLToLBThroughput);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2188  			}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2189  			v->DPPCLKUsingSingleDPPChroma = v->PixelClock[k]
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2190  					* dml_max3(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2191  							v->VTAPsChroma[k] / 6.0 * dml_min(1.0, v->HRatioChroma[k]),
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2192  							v->HRatioChroma[k] * v->VRatioChroma[k] / v->PSCL_THROUGHPUT_CHROMA[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2193  							1.0);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2194  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2195  			if ((v->HTAPsChroma[k] > 6 || v->VTAPsChroma[k] > 6) && v->DPPCLKUsingSingleDPPChroma < 2 * v->PixelClock[k]) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2196  				v->DPPCLKUsingSingleDPPChroma = 2 * v->PixelClock[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2197  			}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2198  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2199  			v->DPPCLKUsingSingleDPP[k] = dml_max(v->DPPCLKUsingSingleDPPLuma, v->DPPCLKUsingSingleDPPChroma);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2200  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2201  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2202  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2203  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2204  		if (v->BlendingAndTiming[k] != k)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2205  			continue;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2206  		if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_4to1) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2207  			v->DISPCLKWithRamping = dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2208  					v->DISPCLKWithRamping,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2209  					v->PixelClock[k] / 4 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2210  							* (1 + v->DISPCLKRampingMargin / 100));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2211  			v->DISPCLKWithoutRamping = dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2212  					v->DISPCLKWithoutRamping,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2213  					v->PixelClock[k] / 4 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2214  		} else if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_2to1) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2215  			v->DISPCLKWithRamping = dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2216  					v->DISPCLKWithRamping,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2217  					v->PixelClock[k] / 2 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2218  							* (1 + v->DISPCLKRampingMargin / 100));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2219  			v->DISPCLKWithoutRamping = dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2220  					v->DISPCLKWithoutRamping,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2221  					v->PixelClock[k] / 2 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2222  		} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2223  			v->DISPCLKWithRamping = dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2224  					v->DISPCLKWithRamping,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2225  					v->PixelClock[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100) * (1 + v->DISPCLKRampingMargin / 100));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2226  			v->DISPCLKWithoutRamping = dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2227  					v->DISPCLKWithoutRamping,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2228  					v->PixelClock[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2229  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2230  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2231  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2232  	v->DISPCLKWithRamping = dml_max(v->DISPCLKWithRamping, v->WritebackDISPCLK);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2233  	v->DISPCLKWithoutRamping = dml_max(v->DISPCLKWithoutRamping, v->WritebackDISPCLK);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2234  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2235  	ASSERT(v->DISPCLKDPPCLKVCOSpeed != 0);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2236  	v->DISPCLKWithRampingRoundedToDFSGranularity = RoundToDFSGranularityUp(v->DISPCLKWithRamping, v->DISPCLKDPPCLKVCOSpeed);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2237  	v->DISPCLKWithoutRampingRoundedToDFSGranularity = RoundToDFSGranularityUp(v->DISPCLKWithoutRamping, v->DISPCLKDPPCLKVCOSpeed);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2238  	v->MaxDispclkRoundedToDFSGranularity = RoundToDFSGranularityDown(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2239  			v->soc.clock_limits[v->soc.num_states - 1].dispclk_mhz,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2240  			v->DISPCLKDPPCLKVCOSpeed);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2241  	if (v->DISPCLKWithoutRampingRoundedToDFSGranularity > v->MaxDispclkRoundedToDFSGranularity) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2242  		v->DISPCLK_calculated = v->DISPCLKWithoutRampingRoundedToDFSGranularity;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2243  	} else if (v->DISPCLKWithRampingRoundedToDFSGranularity > v->MaxDispclkRoundedToDFSGranularity) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2244  		v->DISPCLK_calculated = v->MaxDispclkRoundedToDFSGranularity;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2245  	} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2246  		v->DISPCLK_calculated = v->DISPCLKWithRampingRoundedToDFSGranularity;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2247  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2248  	v->DISPCLK = v->DISPCLK_calculated;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2249  	DTRACE("   dispclk_mhz (calculated) = %f", v->DISPCLK_calculated);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2250  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2251  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2252  		v->DPPCLK_calculated[k] = v->DPPCLKUsingSingleDPP[k] / v->DPPPerPlane[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2253  		v->GlobalDPPCLK = dml_max(v->GlobalDPPCLK, v->DPPCLK_calculated[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2254  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2255  	v->GlobalDPPCLK = RoundToDFSGranularityUp(v->GlobalDPPCLK, v->DISPCLKDPPCLKVCOSpeed);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2256  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2257  		v->DPPCLK_calculated[k] = v->GlobalDPPCLK / 255 * dml_ceil(v->DPPCLK_calculated[k] * 255.0 / v->GlobalDPPCLK, 1);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2258  		DTRACE("   dppclk_mhz[%i] (calculated) = %f", k, v->DPPCLK_calculated[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2259  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2260  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2261  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2262  		v->DPPCLK[k] = v->DPPCLK_calculated[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2263  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2264  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2265  	// Urgent and B P-State/DRAM Clock Change Watermark
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2266  	DTRACE("   dcfclk_mhz         = %f", v->DCFCLK);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2267  	DTRACE("   return_bus_bw      = %f", v->ReturnBW);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2268  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2269  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2270  		CalculateBytePerPixelAnd256BBlockSizes(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2271  				v->SourcePixelFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2272  				v->SurfaceTiling[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2273  				&v->BytePerPixelY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2274  				&v->BytePerPixelC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2275  				&v->BytePerPixelDETY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2276  				&v->BytePerPixelDETC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2277  				&v->BlockHeight256BytesY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2278  				&v->BlockHeight256BytesC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2279  				&v->BlockWidth256BytesY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2280  				&v->BlockWidth256BytesC[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2281  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2282  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2283  	CalculateSwathWidth(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2284  			false,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2285  			v->NumberOfActivePlanes,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2286  			v->SourcePixelFormat,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2287  			v->SourceScan,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2288  			v->ViewportWidth,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2289  			v->ViewportHeight,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2290  			v->SurfaceWidthY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2291  			v->SurfaceWidthC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2292  			v->SurfaceHeightY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2293  			v->SurfaceHeightC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2294  			v->ODMCombineEnabled,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2295  			v->BytePerPixelY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2296  			v->BytePerPixelC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2297  			v->BlockHeight256BytesY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2298  			v->BlockHeight256BytesC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2299  			v->BlockWidth256BytesY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2300  			v->BlockWidth256BytesC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2301  			v->BlendingAndTiming,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2302  			v->HActive,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2303  			v->HRatio,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2304  			v->DPPPerPlane,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2305  			v->SwathWidthSingleDPPY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2306  			v->SwathWidthSingleDPPC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2307  			v->SwathWidthY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2308  			v->SwathWidthC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2309  			v->dummyinteger3,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2310  			v->dummyinteger4,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2311  			v->swath_width_luma_ub,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2312  			v->swath_width_chroma_ub);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2313  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2314  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2315  		v->ReadBandwidthPlaneLuma[k] = v->SwathWidthSingleDPPY[k] * v->BytePerPixelY[k] / (v->HTotal[k] / v->PixelClock[k])
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2316  				* v->VRatio[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2317  		v->ReadBandwidthPlaneChroma[k] = v->SwathWidthSingleDPPC[k] * v->BytePerPixelC[k] / (v->HTotal[k] / v->PixelClock[k])
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2318  				* v->VRatioChroma[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2319  		DTRACE("   read_bw[%i] = %fBps", k, v->ReadBandwidthPlaneLuma[k] + v->ReadBandwidthPlaneChroma[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2320  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2321  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2322  	// DCFCLK Deep Sleep
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2323  	CalculateDCFCLKDeepSleep(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2324  			mode_lib,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2325  			v->NumberOfActivePlanes,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2326  			v->BytePerPixelY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2327  			v->BytePerPixelC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2328  			v->VRatio,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2329  			v->VRatioChroma,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2330  			v->SwathWidthY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2331  			v->SwathWidthC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2332  			v->DPPPerPlane,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2333  			v->HRatio,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2334  			v->HRatioChroma,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2335  			v->PixelClock,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2336  			v->PSCL_THROUGHPUT_LUMA,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2337  			v->PSCL_THROUGHPUT_CHROMA,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2338  			v->DPPCLK,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2339  			v->ReadBandwidthPlaneLuma,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2340  			v->ReadBandwidthPlaneChroma,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2341  			v->ReturnBusWidth,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2342  			&v->DCFCLKDeepSleep);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2343  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2344  	// DSCCLK
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2345  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2346  		if ((v->BlendingAndTiming[k] != k) || !v->DSCEnabled[k]) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2347  			v->DSCCLK_calculated[k] = 0.0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2348  		} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2349  			if (v->OutputFormat[k] == dm_420)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2350  				v->DSCFormatFactor = 2;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2351  			else if (v->OutputFormat[k] == dm_444)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2352  				v->DSCFormatFactor = 1;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2353  			else if (v->OutputFormat[k] == dm_n422)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2354  				v->DSCFormatFactor = 2;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2355  			else
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2356  				v->DSCFormatFactor = 1;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2357  			if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_4to1)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2358  				v->DSCCLK_calculated[k] = v->PixelClockBackEnd[k] / 12 / v->DSCFormatFactor
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2359  						/ (1 - v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2360  			else if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_2to1)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2361  				v->DSCCLK_calculated[k] = v->PixelClockBackEnd[k] / 6 / v->DSCFormatFactor
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2362  						/ (1 - v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2363  			else
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2364  				v->DSCCLK_calculated[k] = v->PixelClockBackEnd[k] / 3 / v->DSCFormatFactor
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2365  						/ (1 - v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2366  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2367  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2368  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2369  	// DSC Delay
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2370  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2371  		double BPP = v->OutputBpp[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2372  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2373  		if (v->DSCEnabled[k] && BPP != 0) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2374  			if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_disabled) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2375  				v->DSCDelay[k] = dscceComputeDelay(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2376  						v->DSCInputBitPerComponent[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2377  						BPP,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2378  						dml_ceil((double) v->HActive[k] / v->NumberOfDSCSlices[k], 1),
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2379  						v->NumberOfDSCSlices[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2380  						v->OutputFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2381  						v->Output[k]) + dscComputeDelay(v->OutputFormat[k], v->Output[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2382  			} else if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_2to1) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2383  				v->DSCDelay[k] = 2
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2384  						* (dscceComputeDelay(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2385  								v->DSCInputBitPerComponent[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2386  								BPP,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2387  								dml_ceil((double) v->HActive[k] / v->NumberOfDSCSlices[k], 1),
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2388  								v->NumberOfDSCSlices[k] / 2.0,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2389  								v->OutputFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2390  								v->Output[k]) + dscComputeDelay(v->OutputFormat[k], v->Output[k]));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2391  			} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2392  				v->DSCDelay[k] = 4
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2393  						* (dscceComputeDelay(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2394  								v->DSCInputBitPerComponent[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2395  								BPP,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2396  								dml_ceil((double) v->HActive[k] / v->NumberOfDSCSlices[k], 1),
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2397  								v->NumberOfDSCSlices[k] / 4.0,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2398  								v->OutputFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2399  								v->Output[k]) + dscComputeDelay(v->OutputFormat[k], v->Output[k]));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2400  			}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2401  			v->DSCDelay[k] = v->DSCDelay[k] * v->PixelClock[k] / v->PixelClockBackEnd[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2402  		} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2403  			v->DSCDelay[k] = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2404  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2405  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2406  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2407  	for (k = 0; k < v->NumberOfActivePlanes; ++k)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2408  		for (j = 0; j < v->NumberOfActivePlanes; ++j) // NumberOfPlanes
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2409  			if (j != k && v->BlendingAndTiming[k] == j && v->DSCEnabled[j])
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2410  				v->DSCDelay[k] = v->DSCDelay[j];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2411  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2412  	// Prefetch
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2413  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2414  		unsigned int PDEAndMetaPTEBytesFrameY;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2415  		unsigned int PixelPTEBytesPerRowY;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2416  		unsigned int MetaRowByteY;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2417  		unsigned int MetaRowByteC;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2418  		unsigned int PDEAndMetaPTEBytesFrameC;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2419  		unsigned int PixelPTEBytesPerRowC;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2420  		bool PTEBufferSizeNotExceededY;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2421  		bool PTEBufferSizeNotExceededC;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2422  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2423  		if (v->SourcePixelFormat[k] == dm_420_8 || v->SourcePixelFormat[k] == dm_420_10 || v->SourcePixelFormat[k] == dm_420_12
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2424  				|| v->SourcePixelFormat[k] == dm_rgbe_alpha) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2425  			if ((v->SourcePixelFormat[k] == dm_420_10 || v->SourcePixelFormat[k] == dm_420_12) && v->SourceScan[k] != dm_vert) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2426  				v->PTEBufferSizeInRequestsForLuma = (v->PTEBufferSizeInRequestsLuma + v->PTEBufferSizeInRequestsChroma) / 2;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2427  				v->PTEBufferSizeInRequestsForChroma = v->PTEBufferSizeInRequestsForLuma;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2428  			} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2429  				v->PTEBufferSizeInRequestsForLuma = v->PTEBufferSizeInRequestsLuma;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2430  				v->PTEBufferSizeInRequestsForChroma = v->PTEBufferSizeInRequestsChroma;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2431  			}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2432  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2433  			PDEAndMetaPTEBytesFrameC = CalculateVMAndRowBytes(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2434  					mode_lib,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2435  					v->DCCEnable[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2436  					v->BlockHeight256BytesC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2437  					v->BlockWidth256BytesC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2438  					v->SourcePixelFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2439  					v->SurfaceTiling[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2440  					v->BytePerPixelC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2441  					v->SourceScan[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2442  					v->SwathWidthC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2443  					v->ViewportHeightChroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2444  					v->GPUVMEnable,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2445  					v->HostVMEnable,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2446  					v->HostVMMaxNonCachedPageTableLevels,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2447  					v->GPUVMMinPageSize,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2448  					v->HostVMMinPageSize,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2449  					v->PTEBufferSizeInRequestsForChroma,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2450  					v->PitchC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2451  					v->DCCMetaPitchC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2452  					&v->MacroTileWidthC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2453  					&MetaRowByteC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2454  					&PixelPTEBytesPerRowC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2455  					&PTEBufferSizeNotExceededC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2456  					&v->dpte_row_width_chroma_ub[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2457  					&v->dpte_row_height_chroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2458  					&v->meta_req_width_chroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2459  					&v->meta_req_height_chroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2460  					&v->meta_row_width_chroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2461  					&v->meta_row_height_chroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2462  					&v->dummyinteger1,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2463  					&v->dummyinteger2,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2464  					&v->PixelPTEReqWidthC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2465  					&v->PixelPTEReqHeightC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2466  					&v->PTERequestSizeC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2467  					&v->dpde0_bytes_per_frame_ub_c[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2468  					&v->meta_pte_bytes_per_frame_ub_c[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2469  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2470  			v->PrefetchSourceLinesC[k] = CalculatePrefetchSourceLines(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2471  					mode_lib,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2472  					v->VRatioChroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2473  					v->VTAPsChroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2474  					v->Interlace[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2475  					v->ProgressiveToInterlaceUnitInOPP,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2476  					v->SwathHeightC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2477  					v->ViewportYStartC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2478  					&v->VInitPreFillC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2479  					&v->MaxNumSwathC[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2480  		} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2481  			v->PTEBufferSizeInRequestsForLuma = v->PTEBufferSizeInRequestsLuma + v->PTEBufferSizeInRequestsChroma;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2482  			v->PTEBufferSizeInRequestsForChroma = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2483  			PixelPTEBytesPerRowC = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2484  			PDEAndMetaPTEBytesFrameC = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2485  			MetaRowByteC = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2486  			v->MaxNumSwathC[k] = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2487  			v->PrefetchSourceLinesC[k] = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2488  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2489  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2490  		PDEAndMetaPTEBytesFrameY = CalculateVMAndRowBytes(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2491  				mode_lib,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2492  				v->DCCEnable[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2493  				v->BlockHeight256BytesY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2494  				v->BlockWidth256BytesY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2495  				v->SourcePixelFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2496  				v->SurfaceTiling[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2497  				v->BytePerPixelY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2498  				v->SourceScan[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2499  				v->SwathWidthY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2500  				v->ViewportHeight[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2501  				v->GPUVMEnable,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2502  				v->HostVMEnable,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2503  				v->HostVMMaxNonCachedPageTableLevels,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2504  				v->GPUVMMinPageSize,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2505  				v->HostVMMinPageSize,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2506  				v->PTEBufferSizeInRequestsForLuma,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2507  				v->PitchY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2508  				v->DCCMetaPitchY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2509  				&v->MacroTileWidthY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2510  				&MetaRowByteY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2511  				&PixelPTEBytesPerRowY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2512  				&PTEBufferSizeNotExceededY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2513  				&v->dpte_row_width_luma_ub[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2514  				&v->dpte_row_height[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2515  				&v->meta_req_width[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2516  				&v->meta_req_height[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2517  				&v->meta_row_width[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2518  				&v->meta_row_height[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2519  				&v->vm_group_bytes[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2520  				&v->dpte_group_bytes[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2521  				&v->PixelPTEReqWidthY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2522  				&v->PixelPTEReqHeightY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2523  				&v->PTERequestSizeY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2524  				&v->dpde0_bytes_per_frame_ub_l[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2525  				&v->meta_pte_bytes_per_frame_ub_l[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2526  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2527  		v->PrefetchSourceLinesY[k] = CalculatePrefetchSourceLines(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2528  				mode_lib,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2529  				v->VRatio[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2530  				v->vtaps[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2531  				v->Interlace[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2532  				v->ProgressiveToInterlaceUnitInOPP,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2533  				v->SwathHeightY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2534  				v->ViewportYStartY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2535  				&v->VInitPreFillY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2536  				&v->MaxNumSwathY[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2537  		v->PixelPTEBytesPerRow[k] = PixelPTEBytesPerRowY + PixelPTEBytesPerRowC;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2538  		v->PDEAndMetaPTEBytesFrame[k] = PDEAndMetaPTEBytesFrameY + PDEAndMetaPTEBytesFrameC;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2539  		v->MetaRowByte[k] = MetaRowByteY + MetaRowByteC;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2540  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2541  		CalculateRowBandwidth(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2542  				v->GPUVMEnable,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2543  				v->SourcePixelFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2544  				v->VRatio[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2545  				v->VRatioChroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2546  				v->DCCEnable[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2547  				v->HTotal[k] / v->PixelClock[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2548  				MetaRowByteY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2549  				MetaRowByteC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2550  				v->meta_row_height[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2551  				v->meta_row_height_chroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2552  				PixelPTEBytesPerRowY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2553  				PixelPTEBytesPerRowC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2554  				v->dpte_row_height[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2555  				v->dpte_row_height_chroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2556  				&v->meta_row_bw[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2557  				&v->dpte_row_bw[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2558  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2559  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2560  	v->TotalDCCActiveDPP = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2561  	v->TotalActiveDPP = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2562  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2563  		v->TotalActiveDPP = v->TotalActiveDPP + v->DPPPerPlane[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2564  		if (v->DCCEnable[k])
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2565  			v->TotalDCCActiveDPP = v->TotalDCCActiveDPP + v->DPPPerPlane[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2566  		if (v->SourcePixelFormat[k] == dm_420_8 || v->SourcePixelFormat[k] == dm_420_10 || v->SourcePixelFormat[k] == dm_420_12
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2567  				|| v->SourcePixelFormat[k] == dm_rgbe_alpha)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2568  			NoChromaPlanes = false;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2569  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2570  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2571  	ReorderBytes = v->NumberOfChannels
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2572  			* dml_max3(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2573  					v->UrgentOutOfOrderReturnPerChannelPixelDataOnly,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2574  					v->UrgentOutOfOrderReturnPerChannelPixelMixedWithVMData,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2575  					v->UrgentOutOfOrderReturnPerChannelVMDataOnly);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2576  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2577  	VMDataOnlyReturnBW = dml_min(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2578  			dml_min(v->ReturnBusWidth * v->DCFCLK, v->FabricClock * v->FabricDatapathToDCNDataReturn)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2579  					* v->PercentOfIdealFabricAndSDPPortBWReceivedAfterUrgLatency / 100.0,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2580  			v->DRAMSpeed * v->NumberOfChannels * v->DRAMChannelWidth
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2581  					* v->PercentOfIdealDRAMBWReceivedAfterUrgLatencyVMDataOnly / 100.0);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2582  

:::::: The code at line 2106 was first introduced by commit
:::::: 74458c081fcfb0423877e630de2746daefdb16e4 drm/amd/display: Add DCN3.1 DML calculation support

:::::: TO: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
:::::: CC: Alex Deucher <alexander.deucher@amd.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_mode_vba_31.c:2106:13: warning: stack frame size (2136) exceeds limit (2048) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation'
Date: Tue, 18 Jan 2022 11:43:14 +0800	[thread overview]
Message-ID: <202201181113.zMONHfro-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 45742 bytes --]

Hi Alex,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   0c947b893d69231a9add855939da7c66237ab44f
commit: 8fe44c080a53ac0ccbe88053a2e40f9acca33091 drm/amdgpu/display: fold DRM_AMD_DC_DCN3_1 into DRM_AMD_DC_DCN
date:   7 months ago
config: x86_64-randconfig-r004-20220117 (https://download.01.org/0day-ci/archive/20220118/202201181113.zMONHfro-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project c63a3175c2947e8c1a2d3bbe16a8586600705c54)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8fe44c080a53ac0ccbe88053a2e40f9acca33091
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 8fe44c080a53ac0ccbe88053a2e40f9acca33091
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_mode_vba_31.c:2106:13: warning: stack frame size (2136) exceeds limit (2048) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation' [-Wframe-larger-than]
   static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation(struct display_mode_lib *mode_lib)
               ^
   drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_mode_vba_31.c:3957:6: warning: stack frame size (3384) exceeds limit (2048) in 'dml31_ModeSupportAndSystemConfigurationFull' [-Wframe-larger-than]
   void dml31_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
        ^
   2 warnings generated.


vim +/DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation +2106 drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_mode_vba_31.c

74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2105  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 @2106  static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation(struct display_mode_lib *mode_lib)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2107  {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2108  	struct vba_vars_st *v = &mode_lib->vba;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2109  	unsigned int j, k;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2110  	double HostVMInefficiencyFactor = 1.0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2111  	bool NoChromaPlanes = true;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2112  	int ReorderBytes;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2113  	double VMDataOnlyReturnBW;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2114  	double MaxTotalRDBandwidth = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2115  	int PrefetchMode = v->PrefetchModePerState[v->VoltageLevel][v->maxMpcComb];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2116  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2117  	v->WritebackDISPCLK = 0.0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2118  	v->DISPCLKWithRamping = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2119  	v->DISPCLKWithoutRamping = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2120  	v->GlobalDPPCLK = 0.0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2121  	/* DAL custom code: need to update ReturnBW in case min dcfclk is overriden */
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2122  	{
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2123  	double IdealFabricAndSDPPortBandwidthPerState = dml_min(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2124  			v->ReturnBusWidth * v->DCFCLKState[v->VoltageLevel][v->maxMpcComb],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2125  			v->FabricClockPerState[v->VoltageLevel] * v->FabricDatapathToDCNDataReturn);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2126  	double IdealDRAMBandwidthPerState = v->DRAMSpeedPerState[v->VoltageLevel] * v->NumberOfChannels * v->DRAMChannelWidth;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2127  	if (v->HostVMEnable != true) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2128  		v->ReturnBW = dml_min(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2129  				IdealFabricAndSDPPortBandwidthPerState * v->PercentOfIdealFabricAndSDPPortBWReceivedAfterUrgLatency / 100.0,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2130  				IdealDRAMBandwidthPerState * v->PercentOfIdealDRAMBWReceivedAfterUrgLatencyPixelDataOnly / 100.0);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2131  	} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2132  		v->ReturnBW = dml_min(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2133  				IdealFabricAndSDPPortBandwidthPerState * v->PercentOfIdealFabricAndSDPPortBWReceivedAfterUrgLatency / 100.0,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2134  				IdealDRAMBandwidthPerState * v->PercentOfIdealDRAMBWReceivedAfterUrgLatencyPixelMixedWithVMData / 100.0);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2135  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2136  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2137  	/* End DAL custom code */
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2138  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2139  	// DISPCLK and DPPCLK Calculation
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2140  	//
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2141  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2142  		if (v->WritebackEnable[k]) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2143  			v->WritebackDISPCLK = dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2144  					v->WritebackDISPCLK,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2145  					dml31_CalculateWriteBackDISPCLK(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2146  							v->WritebackPixelFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2147  							v->PixelClock[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2148  							v->WritebackHRatio[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2149  							v->WritebackVRatio[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2150  							v->WritebackHTaps[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2151  							v->WritebackVTaps[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2152  							v->WritebackSourceWidth[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2153  							v->WritebackDestinationWidth[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2154  							v->HTotal[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2155  							v->WritebackLineBufferSize));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2156  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2157  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2158  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2159  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2160  		if (v->HRatio[k] > 1) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2161  			v->PSCL_THROUGHPUT_LUMA[k] = dml_min(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2162  					v->MaxDCHUBToPSCLThroughput,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2163  					v->MaxPSCLToLBThroughput * v->HRatio[k] / dml_ceil(v->htaps[k] / 6.0, 1));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2164  		} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2165  			v->PSCL_THROUGHPUT_LUMA[k] = dml_min(v->MaxDCHUBToPSCLThroughput, v->MaxPSCLToLBThroughput);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2166  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2167  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2168  		v->DPPCLKUsingSingleDPPLuma = v->PixelClock[k]
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2169  				* dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2170  						v->vtaps[k] / 6.0 * dml_min(1.0, v->HRatio[k]),
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2171  						dml_max(v->HRatio[k] * v->VRatio[k] / v->PSCL_THROUGHPUT_LUMA[k], 1.0));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2172  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2173  		if ((v->htaps[k] > 6 || v->vtaps[k] > 6) && v->DPPCLKUsingSingleDPPLuma < 2 * v->PixelClock[k]) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2174  			v->DPPCLKUsingSingleDPPLuma = 2 * v->PixelClock[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2175  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2176  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2177  		if ((v->SourcePixelFormat[k] != dm_420_8 && v->SourcePixelFormat[k] != dm_420_10 && v->SourcePixelFormat[k] != dm_420_12
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2178  				&& v->SourcePixelFormat[k] != dm_rgbe_alpha)) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2179  			v->PSCL_THROUGHPUT_CHROMA[k] = 0.0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2180  			v->DPPCLKUsingSingleDPP[k] = v->DPPCLKUsingSingleDPPLuma;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2181  		} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2182  			if (v->HRatioChroma[k] > 1) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2183  				v->PSCL_THROUGHPUT_CHROMA[k] = dml_min(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2184  						v->MaxDCHUBToPSCLThroughput,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2185  						v->MaxPSCLToLBThroughput * v->HRatioChroma[k] / dml_ceil(v->HTAPsChroma[k] / 6.0, 1.0));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2186  			} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2187  				v->PSCL_THROUGHPUT_CHROMA[k] = dml_min(v->MaxDCHUBToPSCLThroughput, v->MaxPSCLToLBThroughput);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2188  			}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2189  			v->DPPCLKUsingSingleDPPChroma = v->PixelClock[k]
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2190  					* dml_max3(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2191  							v->VTAPsChroma[k] / 6.0 * dml_min(1.0, v->HRatioChroma[k]),
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2192  							v->HRatioChroma[k] * v->VRatioChroma[k] / v->PSCL_THROUGHPUT_CHROMA[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2193  							1.0);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2194  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2195  			if ((v->HTAPsChroma[k] > 6 || v->VTAPsChroma[k] > 6) && v->DPPCLKUsingSingleDPPChroma < 2 * v->PixelClock[k]) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2196  				v->DPPCLKUsingSingleDPPChroma = 2 * v->PixelClock[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2197  			}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2198  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2199  			v->DPPCLKUsingSingleDPP[k] = dml_max(v->DPPCLKUsingSingleDPPLuma, v->DPPCLKUsingSingleDPPChroma);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2200  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2201  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2202  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2203  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2204  		if (v->BlendingAndTiming[k] != k)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2205  			continue;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2206  		if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_4to1) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2207  			v->DISPCLKWithRamping = dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2208  					v->DISPCLKWithRamping,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2209  					v->PixelClock[k] / 4 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2210  							* (1 + v->DISPCLKRampingMargin / 100));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2211  			v->DISPCLKWithoutRamping = dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2212  					v->DISPCLKWithoutRamping,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2213  					v->PixelClock[k] / 4 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2214  		} else if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_2to1) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2215  			v->DISPCLKWithRamping = dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2216  					v->DISPCLKWithRamping,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2217  					v->PixelClock[k] / 2 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2218  							* (1 + v->DISPCLKRampingMargin / 100));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2219  			v->DISPCLKWithoutRamping = dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2220  					v->DISPCLKWithoutRamping,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2221  					v->PixelClock[k] / 2 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2222  		} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2223  			v->DISPCLKWithRamping = dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2224  					v->DISPCLKWithRamping,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2225  					v->PixelClock[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100) * (1 + v->DISPCLKRampingMargin / 100));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2226  			v->DISPCLKWithoutRamping = dml_max(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2227  					v->DISPCLKWithoutRamping,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2228  					v->PixelClock[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2229  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2230  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2231  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2232  	v->DISPCLKWithRamping = dml_max(v->DISPCLKWithRamping, v->WritebackDISPCLK);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2233  	v->DISPCLKWithoutRamping = dml_max(v->DISPCLKWithoutRamping, v->WritebackDISPCLK);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2234  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2235  	ASSERT(v->DISPCLKDPPCLKVCOSpeed != 0);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2236  	v->DISPCLKWithRampingRoundedToDFSGranularity = RoundToDFSGranularityUp(v->DISPCLKWithRamping, v->DISPCLKDPPCLKVCOSpeed);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2237  	v->DISPCLKWithoutRampingRoundedToDFSGranularity = RoundToDFSGranularityUp(v->DISPCLKWithoutRamping, v->DISPCLKDPPCLKVCOSpeed);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2238  	v->MaxDispclkRoundedToDFSGranularity = RoundToDFSGranularityDown(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2239  			v->soc.clock_limits[v->soc.num_states - 1].dispclk_mhz,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2240  			v->DISPCLKDPPCLKVCOSpeed);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2241  	if (v->DISPCLKWithoutRampingRoundedToDFSGranularity > v->MaxDispclkRoundedToDFSGranularity) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2242  		v->DISPCLK_calculated = v->DISPCLKWithoutRampingRoundedToDFSGranularity;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2243  	} else if (v->DISPCLKWithRampingRoundedToDFSGranularity > v->MaxDispclkRoundedToDFSGranularity) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2244  		v->DISPCLK_calculated = v->MaxDispclkRoundedToDFSGranularity;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2245  	} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2246  		v->DISPCLK_calculated = v->DISPCLKWithRampingRoundedToDFSGranularity;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2247  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2248  	v->DISPCLK = v->DISPCLK_calculated;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2249  	DTRACE("   dispclk_mhz (calculated) = %f", v->DISPCLK_calculated);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2250  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2251  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2252  		v->DPPCLK_calculated[k] = v->DPPCLKUsingSingleDPP[k] / v->DPPPerPlane[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2253  		v->GlobalDPPCLK = dml_max(v->GlobalDPPCLK, v->DPPCLK_calculated[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2254  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2255  	v->GlobalDPPCLK = RoundToDFSGranularityUp(v->GlobalDPPCLK, v->DISPCLKDPPCLKVCOSpeed);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2256  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2257  		v->DPPCLK_calculated[k] = v->GlobalDPPCLK / 255 * dml_ceil(v->DPPCLK_calculated[k] * 255.0 / v->GlobalDPPCLK, 1);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2258  		DTRACE("   dppclk_mhz[%i] (calculated) = %f", k, v->DPPCLK_calculated[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2259  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2260  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2261  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2262  		v->DPPCLK[k] = v->DPPCLK_calculated[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2263  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2264  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2265  	// Urgent and B P-State/DRAM Clock Change Watermark
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2266  	DTRACE("   dcfclk_mhz         = %f", v->DCFCLK);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2267  	DTRACE("   return_bus_bw      = %f", v->ReturnBW);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2268  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2269  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2270  		CalculateBytePerPixelAnd256BBlockSizes(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2271  				v->SourcePixelFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2272  				v->SurfaceTiling[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2273  				&v->BytePerPixelY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2274  				&v->BytePerPixelC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2275  				&v->BytePerPixelDETY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2276  				&v->BytePerPixelDETC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2277  				&v->BlockHeight256BytesY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2278  				&v->BlockHeight256BytesC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2279  				&v->BlockWidth256BytesY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2280  				&v->BlockWidth256BytesC[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2281  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2282  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2283  	CalculateSwathWidth(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2284  			false,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2285  			v->NumberOfActivePlanes,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2286  			v->SourcePixelFormat,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2287  			v->SourceScan,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2288  			v->ViewportWidth,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2289  			v->ViewportHeight,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2290  			v->SurfaceWidthY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2291  			v->SurfaceWidthC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2292  			v->SurfaceHeightY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2293  			v->SurfaceHeightC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2294  			v->ODMCombineEnabled,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2295  			v->BytePerPixelY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2296  			v->BytePerPixelC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2297  			v->BlockHeight256BytesY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2298  			v->BlockHeight256BytesC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2299  			v->BlockWidth256BytesY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2300  			v->BlockWidth256BytesC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2301  			v->BlendingAndTiming,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2302  			v->HActive,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2303  			v->HRatio,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2304  			v->DPPPerPlane,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2305  			v->SwathWidthSingleDPPY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2306  			v->SwathWidthSingleDPPC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2307  			v->SwathWidthY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2308  			v->SwathWidthC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2309  			v->dummyinteger3,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2310  			v->dummyinteger4,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2311  			v->swath_width_luma_ub,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2312  			v->swath_width_chroma_ub);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2313  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2314  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2315  		v->ReadBandwidthPlaneLuma[k] = v->SwathWidthSingleDPPY[k] * v->BytePerPixelY[k] / (v->HTotal[k] / v->PixelClock[k])
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2316  				* v->VRatio[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2317  		v->ReadBandwidthPlaneChroma[k] = v->SwathWidthSingleDPPC[k] * v->BytePerPixelC[k] / (v->HTotal[k] / v->PixelClock[k])
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2318  				* v->VRatioChroma[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2319  		DTRACE("   read_bw[%i] = %fBps", k, v->ReadBandwidthPlaneLuma[k] + v->ReadBandwidthPlaneChroma[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2320  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2321  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2322  	// DCFCLK Deep Sleep
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2323  	CalculateDCFCLKDeepSleep(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2324  			mode_lib,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2325  			v->NumberOfActivePlanes,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2326  			v->BytePerPixelY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2327  			v->BytePerPixelC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2328  			v->VRatio,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2329  			v->VRatioChroma,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2330  			v->SwathWidthY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2331  			v->SwathWidthC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2332  			v->DPPPerPlane,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2333  			v->HRatio,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2334  			v->HRatioChroma,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2335  			v->PixelClock,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2336  			v->PSCL_THROUGHPUT_LUMA,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2337  			v->PSCL_THROUGHPUT_CHROMA,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2338  			v->DPPCLK,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2339  			v->ReadBandwidthPlaneLuma,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2340  			v->ReadBandwidthPlaneChroma,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2341  			v->ReturnBusWidth,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2342  			&v->DCFCLKDeepSleep);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2343  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2344  	// DSCCLK
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2345  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2346  		if ((v->BlendingAndTiming[k] != k) || !v->DSCEnabled[k]) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2347  			v->DSCCLK_calculated[k] = 0.0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2348  		} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2349  			if (v->OutputFormat[k] == dm_420)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2350  				v->DSCFormatFactor = 2;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2351  			else if (v->OutputFormat[k] == dm_444)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2352  				v->DSCFormatFactor = 1;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2353  			else if (v->OutputFormat[k] == dm_n422)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2354  				v->DSCFormatFactor = 2;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2355  			else
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2356  				v->DSCFormatFactor = 1;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2357  			if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_4to1)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2358  				v->DSCCLK_calculated[k] = v->PixelClockBackEnd[k] / 12 / v->DSCFormatFactor
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2359  						/ (1 - v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2360  			else if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_2to1)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2361  				v->DSCCLK_calculated[k] = v->PixelClockBackEnd[k] / 6 / v->DSCFormatFactor
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2362  						/ (1 - v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2363  			else
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2364  				v->DSCCLK_calculated[k] = v->PixelClockBackEnd[k] / 3 / v->DSCFormatFactor
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2365  						/ (1 - v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2366  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2367  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2368  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2369  	// DSC Delay
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2370  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2371  		double BPP = v->OutputBpp[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2372  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2373  		if (v->DSCEnabled[k] && BPP != 0) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2374  			if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_disabled) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2375  				v->DSCDelay[k] = dscceComputeDelay(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2376  						v->DSCInputBitPerComponent[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2377  						BPP,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2378  						dml_ceil((double) v->HActive[k] / v->NumberOfDSCSlices[k], 1),
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2379  						v->NumberOfDSCSlices[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2380  						v->OutputFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2381  						v->Output[k]) + dscComputeDelay(v->OutputFormat[k], v->Output[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2382  			} else if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_2to1) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2383  				v->DSCDelay[k] = 2
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2384  						* (dscceComputeDelay(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2385  								v->DSCInputBitPerComponent[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2386  								BPP,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2387  								dml_ceil((double) v->HActive[k] / v->NumberOfDSCSlices[k], 1),
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2388  								v->NumberOfDSCSlices[k] / 2.0,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2389  								v->OutputFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2390  								v->Output[k]) + dscComputeDelay(v->OutputFormat[k], v->Output[k]));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2391  			} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2392  				v->DSCDelay[k] = 4
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2393  						* (dscceComputeDelay(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2394  								v->DSCInputBitPerComponent[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2395  								BPP,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2396  								dml_ceil((double) v->HActive[k] / v->NumberOfDSCSlices[k], 1),
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2397  								v->NumberOfDSCSlices[k] / 4.0,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2398  								v->OutputFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2399  								v->Output[k]) + dscComputeDelay(v->OutputFormat[k], v->Output[k]));
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2400  			}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2401  			v->DSCDelay[k] = v->DSCDelay[k] * v->PixelClock[k] / v->PixelClockBackEnd[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2402  		} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2403  			v->DSCDelay[k] = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2404  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2405  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2406  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2407  	for (k = 0; k < v->NumberOfActivePlanes; ++k)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2408  		for (j = 0; j < v->NumberOfActivePlanes; ++j) // NumberOfPlanes
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2409  			if (j != k && v->BlendingAndTiming[k] == j && v->DSCEnabled[j])
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2410  				v->DSCDelay[k] = v->DSCDelay[j];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2411  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2412  	// Prefetch
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2413  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2414  		unsigned int PDEAndMetaPTEBytesFrameY;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2415  		unsigned int PixelPTEBytesPerRowY;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2416  		unsigned int MetaRowByteY;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2417  		unsigned int MetaRowByteC;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2418  		unsigned int PDEAndMetaPTEBytesFrameC;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2419  		unsigned int PixelPTEBytesPerRowC;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2420  		bool PTEBufferSizeNotExceededY;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2421  		bool PTEBufferSizeNotExceededC;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2422  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2423  		if (v->SourcePixelFormat[k] == dm_420_8 || v->SourcePixelFormat[k] == dm_420_10 || v->SourcePixelFormat[k] == dm_420_12
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2424  				|| v->SourcePixelFormat[k] == dm_rgbe_alpha) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2425  			if ((v->SourcePixelFormat[k] == dm_420_10 || v->SourcePixelFormat[k] == dm_420_12) && v->SourceScan[k] != dm_vert) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2426  				v->PTEBufferSizeInRequestsForLuma = (v->PTEBufferSizeInRequestsLuma + v->PTEBufferSizeInRequestsChroma) / 2;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2427  				v->PTEBufferSizeInRequestsForChroma = v->PTEBufferSizeInRequestsForLuma;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2428  			} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2429  				v->PTEBufferSizeInRequestsForLuma = v->PTEBufferSizeInRequestsLuma;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2430  				v->PTEBufferSizeInRequestsForChroma = v->PTEBufferSizeInRequestsChroma;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2431  			}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2432  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2433  			PDEAndMetaPTEBytesFrameC = CalculateVMAndRowBytes(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2434  					mode_lib,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2435  					v->DCCEnable[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2436  					v->BlockHeight256BytesC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2437  					v->BlockWidth256BytesC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2438  					v->SourcePixelFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2439  					v->SurfaceTiling[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2440  					v->BytePerPixelC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2441  					v->SourceScan[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2442  					v->SwathWidthC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2443  					v->ViewportHeightChroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2444  					v->GPUVMEnable,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2445  					v->HostVMEnable,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2446  					v->HostVMMaxNonCachedPageTableLevels,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2447  					v->GPUVMMinPageSize,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2448  					v->HostVMMinPageSize,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2449  					v->PTEBufferSizeInRequestsForChroma,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2450  					v->PitchC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2451  					v->DCCMetaPitchC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2452  					&v->MacroTileWidthC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2453  					&MetaRowByteC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2454  					&PixelPTEBytesPerRowC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2455  					&PTEBufferSizeNotExceededC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2456  					&v->dpte_row_width_chroma_ub[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2457  					&v->dpte_row_height_chroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2458  					&v->meta_req_width_chroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2459  					&v->meta_req_height_chroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2460  					&v->meta_row_width_chroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2461  					&v->meta_row_height_chroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2462  					&v->dummyinteger1,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2463  					&v->dummyinteger2,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2464  					&v->PixelPTEReqWidthC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2465  					&v->PixelPTEReqHeightC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2466  					&v->PTERequestSizeC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2467  					&v->dpde0_bytes_per_frame_ub_c[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2468  					&v->meta_pte_bytes_per_frame_ub_c[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2469  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2470  			v->PrefetchSourceLinesC[k] = CalculatePrefetchSourceLines(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2471  					mode_lib,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2472  					v->VRatioChroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2473  					v->VTAPsChroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2474  					v->Interlace[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2475  					v->ProgressiveToInterlaceUnitInOPP,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2476  					v->SwathHeightC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2477  					v->ViewportYStartC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2478  					&v->VInitPreFillC[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2479  					&v->MaxNumSwathC[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2480  		} else {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2481  			v->PTEBufferSizeInRequestsForLuma = v->PTEBufferSizeInRequestsLuma + v->PTEBufferSizeInRequestsChroma;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2482  			v->PTEBufferSizeInRequestsForChroma = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2483  			PixelPTEBytesPerRowC = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2484  			PDEAndMetaPTEBytesFrameC = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2485  			MetaRowByteC = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2486  			v->MaxNumSwathC[k] = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2487  			v->PrefetchSourceLinesC[k] = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2488  		}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2489  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2490  		PDEAndMetaPTEBytesFrameY = CalculateVMAndRowBytes(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2491  				mode_lib,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2492  				v->DCCEnable[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2493  				v->BlockHeight256BytesY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2494  				v->BlockWidth256BytesY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2495  				v->SourcePixelFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2496  				v->SurfaceTiling[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2497  				v->BytePerPixelY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2498  				v->SourceScan[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2499  				v->SwathWidthY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2500  				v->ViewportHeight[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2501  				v->GPUVMEnable,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2502  				v->HostVMEnable,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2503  				v->HostVMMaxNonCachedPageTableLevels,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2504  				v->GPUVMMinPageSize,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2505  				v->HostVMMinPageSize,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2506  				v->PTEBufferSizeInRequestsForLuma,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2507  				v->PitchY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2508  				v->DCCMetaPitchY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2509  				&v->MacroTileWidthY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2510  				&MetaRowByteY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2511  				&PixelPTEBytesPerRowY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2512  				&PTEBufferSizeNotExceededY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2513  				&v->dpte_row_width_luma_ub[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2514  				&v->dpte_row_height[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2515  				&v->meta_req_width[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2516  				&v->meta_req_height[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2517  				&v->meta_row_width[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2518  				&v->meta_row_height[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2519  				&v->vm_group_bytes[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2520  				&v->dpte_group_bytes[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2521  				&v->PixelPTEReqWidthY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2522  				&v->PixelPTEReqHeightY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2523  				&v->PTERequestSizeY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2524  				&v->dpde0_bytes_per_frame_ub_l[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2525  				&v->meta_pte_bytes_per_frame_ub_l[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2526  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2527  		v->PrefetchSourceLinesY[k] = CalculatePrefetchSourceLines(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2528  				mode_lib,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2529  				v->VRatio[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2530  				v->vtaps[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2531  				v->Interlace[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2532  				v->ProgressiveToInterlaceUnitInOPP,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2533  				v->SwathHeightY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2534  				v->ViewportYStartY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2535  				&v->VInitPreFillY[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2536  				&v->MaxNumSwathY[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2537  		v->PixelPTEBytesPerRow[k] = PixelPTEBytesPerRowY + PixelPTEBytesPerRowC;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2538  		v->PDEAndMetaPTEBytesFrame[k] = PDEAndMetaPTEBytesFrameY + PDEAndMetaPTEBytesFrameC;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2539  		v->MetaRowByte[k] = MetaRowByteY + MetaRowByteC;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2540  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2541  		CalculateRowBandwidth(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2542  				v->GPUVMEnable,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2543  				v->SourcePixelFormat[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2544  				v->VRatio[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2545  				v->VRatioChroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2546  				v->DCCEnable[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2547  				v->HTotal[k] / v->PixelClock[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2548  				MetaRowByteY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2549  				MetaRowByteC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2550  				v->meta_row_height[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2551  				v->meta_row_height_chroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2552  				PixelPTEBytesPerRowY,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2553  				PixelPTEBytesPerRowC,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2554  				v->dpte_row_height[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2555  				v->dpte_row_height_chroma[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2556  				&v->meta_row_bw[k],
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2557  				&v->dpte_row_bw[k]);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2558  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2559  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2560  	v->TotalDCCActiveDPP = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2561  	v->TotalActiveDPP = 0;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2562  	for (k = 0; k < v->NumberOfActivePlanes; ++k) {
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2563  		v->TotalActiveDPP = v->TotalActiveDPP + v->DPPPerPlane[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2564  		if (v->DCCEnable[k])
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2565  			v->TotalDCCActiveDPP = v->TotalDCCActiveDPP + v->DPPPerPlane[k];
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2566  		if (v->SourcePixelFormat[k] == dm_420_8 || v->SourcePixelFormat[k] == dm_420_10 || v->SourcePixelFormat[k] == dm_420_12
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2567  				|| v->SourcePixelFormat[k] == dm_rgbe_alpha)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2568  			NoChromaPlanes = false;
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2569  	}
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2570  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2571  	ReorderBytes = v->NumberOfChannels
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2572  			* dml_max3(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2573  					v->UrgentOutOfOrderReturnPerChannelPixelDataOnly,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2574  					v->UrgentOutOfOrderReturnPerChannelPixelMixedWithVMData,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2575  					v->UrgentOutOfOrderReturnPerChannelVMDataOnly);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2576  
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2577  	VMDataOnlyReturnBW = dml_min(
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2578  			dml_min(v->ReturnBusWidth * v->DCFCLK, v->FabricClock * v->FabricDatapathToDCNDataReturn)
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2579  					* v->PercentOfIdealFabricAndSDPPortBWReceivedAfterUrgLatency / 100.0,
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2580  			v->DRAMSpeed * v->NumberOfChannels * v->DRAMChannelWidth
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2581  					* v->PercentOfIdealDRAMBWReceivedAfterUrgLatencyVMDataOnly / 100.0);
74458c081fcfb0 Nicholas Kazlauskas 2021-05-19  2582  

:::::: The code at line 2106 was first introduced by commit
:::::: 74458c081fcfb0423877e630de2746daefdb16e4 drm/amd/display: Add DCN3.1 DML calculation support

:::::: TO: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
:::::: CC: Alex Deucher <alexander.deucher@amd.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

             reply	other threads:[~2022-01-18  3:44 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-18  3:43 kernel test robot [this message]
2022-01-18  3:43 ` drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_mode_vba_31.c:2106:13: warning: stack frame size (2136) exceeds limit (2048) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation' kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202201181113.zMONHfro-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=alexander.deucher@amd.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=nicholas.kazlauskas@amd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.