From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2290A2C9C for ; Tue, 18 Jan 2022 03:44:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1642477443; x=1674013443; h=date:from:to:cc:subject:message-id:mime-version; bh=JIZt+BBPCrKRvIyvCxVNyN5k2B+dinlbHL5UaLyC6RQ=; b=GZYelPLm/LjweIkKcBl6Sz1zccWM0i0vuHHSbVzd3NdkS7g6WvMZFcPd obMlZVhBa7gGWXU00NxLuPnKPlkogoqTftDN1eSeempF1crBRzxW4Dn7H /A5qG1qyCQH5X/LhBh5ZUcbKMPBd/7fY34nm2uHzF2rbUhu1XZ9JWmM0N kupRaaV+3KiC2J45t5HvN20ONbKqecZuwXgEyhh37CLxoG4EqyKa81t3m uYe1+VwWd4VFOvVbd2d9XsJP+1FvDEv/QJwYoNzD+FnJgmgZN5KjxTx91 US4OiPB8+OyQAwBDW6wmF+euQ1t17+78ieMEZ9fLfahd7VhHpbengR0j5 w==; X-IronPort-AV: E=McAfee;i="6200,9189,10230"; a="305464789" X-IronPort-AV: E=Sophos;i="5.88,296,1635231600"; d="scan'208";a="305464789" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jan 2022 19:44:02 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,296,1635231600"; d="scan'208";a="517611852" Received: from lkp-server01.sh.intel.com (HELO 276f1b88eecb) ([10.239.97.150]) by orsmga007.jf.intel.com with ESMTP; 17 Jan 2022 19:44:00 -0800 Received: from kbuild by 276f1b88eecb with local (Exim 4.92) (envelope-from ) id 1n9fPb-000C7i-Ng; Tue, 18 Jan 2022 03:43:59 +0000 Date: Tue, 18 Jan 2022 11:43:14 +0800 From: kernel test robot To: Alex Deucher Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org, linux-kernel@vger.kernel.org, Nicholas Kazlauskas 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' Message-ID: <202201181113.zMONHfro-lkp@intel.com> Precedence: bulk X-Mailing-List: llvm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) 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 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 :::::: CC: Alex Deucher --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============7020012558235711649==" MIME-Version: 1.0 From: kernel test robot 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 Message-ID: <202201181113.zMONHfro-lkp@intel.com> List-Id: --===============7020012558235711649== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Alex, First bad commit (maybe !=3D root cause): tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git = master head: 0c947b893d69231a9add855939da7c66237ab44f commit: 8fe44c080a53ac0ccbe88053a2e40f9acca33091 drm/amdgpu/display: fold D= RM_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/ar= chive/20220118/202201181113.zMONHfro-lkp(a)intel.com/config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project c63a31= 75c2947e8c1a2d3bbe16a8586600705c54) reproduce (this is a W=3D1 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.gi= t/commit/?id=3D8fe44c080a53ac0ccbe88053a2e40f9acca33091 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/gi= t/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=3D$HOME/0day COMPILER=3Dclang make.cross W=3D= 1 O=3Dbuild_dir ARCH=3Dx86_64 SHELL=3D/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot 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 'DISPCLK= DPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation'= [-Wframe-larger-than] static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndP= erformanceCalculation(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_Mo= deSupportAndSystemConfigurationFull' [-Wframe-larger-than] void dml31_ModeSupportAndSystemConfigurationFull(struct display_mode_lib= *mode_lib) ^ 2 warnings generated. vim +/DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanc= eCalculation +2106 drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/displ= ay_mode_vba_31.c 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2105 = 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 @2106 static void DISPCLKDPP= CLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation(str= uct display_mode_lib *mode_lib) 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2107 { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2108 struct vba_vars_st *v= =3D &mode_lib->vba; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2109 unsigned int j, k; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2110 double HostVMIneffici= encyFactor =3D 1.0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2111 bool NoChromaPlanes = =3D true; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2112 int ReorderBytes; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2113 double VMDataOnlyRetu= rnBW; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2114 double MaxTotalRDBand= width =3D 0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2115 int PrefetchMode =3D = v->PrefetchModePerState[v->VoltageLevel][v->maxMpcComb]; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2116 = 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2117 v->WritebackDISPCLK = =3D 0.0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2118 v->DISPCLKWithRamping= =3D 0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2119 v->DISPCLKWithoutRamp= ing =3D 0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2120 v->GlobalDPPCLK =3D 0= .0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2121 /* DAL custom code: n= eed to update ReturnBW in case min dcfclk is overriden */ 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2122 { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2123 double IdealFabricAnd= SDPPortBandwidthPerState =3D 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->FabricClockPerSt= ate[v->VoltageLevel] * v->FabricDatapathToDCNDataReturn); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2126 double IdealDRAMBandw= idthPerState =3D v->DRAMSpeedPerState[v->VoltageLevel] * v->NumberOfChannel= s * v->DRAMChannelWidth; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2127 if (v->HostVMEnable != =3D true) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2128 v->ReturnBW =3D dml_= min( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2129 IdealFabricAndSDPP= ortBandwidthPerState * v->PercentOfIdealFabricAndSDPPortBWReceivedAfterUrgL= atency / 100.0, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2130 IdealDRAMBandwidth= PerState * v->PercentOfIdealDRAMBWReceivedAfterUrgLatencyPixelDataOnly / 10= 0.0); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2131 } else { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2132 v->ReturnBW =3D dml_= min( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2133 IdealFabricAndSDPP= ortBandwidthPerState * v->PercentOfIdealFabricAndSDPPortBWReceivedAfterUrgL= atency / 100.0, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2134 IdealDRAMBandwidth= PerState * v->PercentOfIdealDRAMBWReceivedAfterUrgLatencyPixelMixedWithVMDa= ta / 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 cod= e */ 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 =3D 0; k < v->= NumberOfActivePlanes; ++k) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2142 if (v->WritebackEnab= le[k]) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2143 v->WritebackDISPCLK= =3D dml_max( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2144 v->WritebackDISPC= LK, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2145 dml31_CalculateWr= iteBackDISPCLK( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2146 v->WritebackPix= elFormat[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2147 v->PixelClock[k= ], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2148 v->WritebackHRa= tio[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2149 v->WritebackVRa= tio[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2150 v->WritebackHTa= ps[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2151 v->WritebackVTa= ps[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2152 v->WritebackSou= rceWidth[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2153 v->WritebackDes= tinationWidth[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2154 v->HTotal[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2155 v->WritebackLin= eBufferSize)); 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 =3D 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] =3D dml_min( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2162 v->MaxDCHUBToPSCL= Throughput, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2163 v->MaxPSCLToLBThr= oughput * 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] =3D 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->DPPCLKUsingSingle= DPPLuma =3D 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->HRati= o[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->DPPCLKUsingSingl= eDPPLuma =3D 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->SourcePixelF= ormat[k] !=3D dm_420_8 && v->SourcePixelFormat[k] !=3D dm_420_10 && v->Sour= cePixelFormat[k] !=3D dm_420_12 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2178 && v->SourcePixelF= ormat[k] !=3D dm_rgbe_alpha)) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2179 v->PSCL_THROUGHPUT_= CHROMA[k] =3D 0.0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2180 v->DPPCLKUsingSingl= eDPP[k] =3D 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] =3D dml_min( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2184 v->MaxDCHUBToPSC= LThroughput, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2185 v->MaxPSCLToLBTh= roughput * 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] =3D dml_min(v->MaxDCHUBToPSCLThroughput, v->MaxPSCLToLBThroughpu= t); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2188 } 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2189 v->DPPCLKUsingSingl= eDPPChroma =3D 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->DPPCLKUsingSing= leDPPChroma =3D 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->DPPCLKUsingSingl= eDPP[k] =3D dml_max(v->DPPCLKUsingSingleDPPLuma, v->DPPCLKUsingSingleDPPChr= oma); 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 =3D 0; k < v->= NumberOfActivePlanes; ++k) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2204 if (v->BlendingAndTi= ming[k] !=3D k) 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2205 continue; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2206 if (v->ODMCombineEna= bled[k] =3D=3D dm_odm_combine_mode_4to1) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2207 v->DISPCLKWithRampi= ng =3D dml_max( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2208 v->DISPCLKWithRam= ping, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2209 v->PixelClock[k] = / 4 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100) 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2210 * (1 + v->DISPC= LKRampingMargin / 100)); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2211 v->DISPCLKWithoutRa= mping =3D dml_max( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2212 v->DISPCLKWithout= Ramping, 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->ODMCom= bineEnabled[k] =3D=3D dm_odm_combine_mode_2to1) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2215 v->DISPCLKWithRampi= ng =3D dml_max( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2216 v->DISPCLKWithRam= ping, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2217 v->PixelClock[k] = / 2 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100) 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2218 * (1 + v->DISPC= LKRampingMargin / 100)); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2219 v->DISPCLKWithoutRa= mping =3D dml_max( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2220 v->DISPCLKWithout= Ramping, 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->DISPCLKWithRampi= ng =3D dml_max( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2224 v->DISPCLKWithRam= ping, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2225 v->PixelClock[k] = * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100) * (1 + v->DISPCLKRampingM= argin / 100)); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2226 v->DISPCLKWithoutRa= mping =3D dml_max( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2227 v->DISPCLKWithout= Ramping, 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= =3D dml_max(v->DISPCLKWithRamping, v->WritebackDISPCLK); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2233 v->DISPCLKWithoutRamp= ing =3D dml_max(v->DISPCLKWithoutRamping, v->WritebackDISPCLK); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2234 = 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2235 ASSERT(v->DISPCLKDPPC= LKVCOSpeed !=3D 0); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2236 v->DISPCLKWithRamping= RoundedToDFSGranularity =3D RoundToDFSGranularityUp(v->DISPCLKWithRamping, = v->DISPCLKDPPCLKVCOSpeed); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2237 v->DISPCLKWithoutRamp= ingRoundedToDFSGranularity =3D RoundToDFSGranularityUp(v->DISPCLKWithoutRam= ping, v->DISPCLKDPPCLKVCOSpeed); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2238 v->MaxDispclkRoundedT= oDFSGranularity =3D 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->DISPCLKDPPCLKVCO= Speed); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2241 if (v->DISPCLKWithout= RampingRoundedToDFSGranularity > v->MaxDispclkRoundedToDFSGranularity) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2242 v->DISPCLK_calculate= d =3D v->DISPCLKWithoutRampingRoundedToDFSGranularity; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2243 } else if (v->DISPCLK= WithRampingRoundedToDFSGranularity > v->MaxDispclkRoundedToDFSGranularity) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2244 v->DISPCLK_calculate= d =3D v->MaxDispclkRoundedToDFSGranularity; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2245 } else { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2246 v->DISPCLK_calculate= d =3D v->DISPCLKWithRampingRoundedToDFSGranularity; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2247 } 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2248 v->DISPCLK =3D v->DIS= PCLK_calculated; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2249 DTRACE(" dispclk_mh= z (calculated) =3D %f", v->DISPCLK_calculated); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2250 = 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2251 for (k =3D 0; k < v->= NumberOfActivePlanes; ++k) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2252 v->DPPCLK_calculated= [k] =3D v->DPPCLKUsingSingleDPP[k] / v->DPPPerPlane[k] * (1 + v->DISPCLKDPP= CLKDSCCLKDownSpreading / 100); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2253 v->GlobalDPPCLK =3D = dml_max(v->GlobalDPPCLK, v->DPPCLK_calculated[k]); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2254 } 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2255 v->GlobalDPPCLK =3D R= oundToDFSGranularityUp(v->GlobalDPPCLK, v->DISPCLKDPPCLKVCOSpeed); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2256 for (k =3D 0; k < v->= NumberOfActivePlanes; ++k) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2257 v->DPPCLK_calculated= [k] =3D v->GlobalDPPCLK / 255 * dml_ceil(v->DPPCLK_calculated[k] * 255.0 / = v->GlobalDPPCLK, 1); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2258 DTRACE(" dppclk_mh= z[%i] (calculated) =3D %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 =3D 0; k < v->= NumberOfActivePlanes; ++k) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2262 v->DPPCLK[k] =3D 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-Sta= te/DRAM Clock Change Watermark 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2266 DTRACE(" dcfclk_mhz= =3D %f", v->DCFCLK); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2267 DTRACE(" return_bus= _bw =3D %f", v->ReturnBW); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2268 = 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2269 for (k =3D 0; k < v->= NumberOfActivePlanes; ++k) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2270 CalculateBytePerPixe= lAnd256BBlockSizes( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2271 v->SourcePixelForm= at[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->BytePerPixelDE= TY[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2276 &v->BytePerPixelDE= TC[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2277 &v->BlockHeight256= BytesY[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2278 &v->BlockHeight256= BytesC[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2279 &v->BlockWidth256B= ytesY[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2280 &v->BlockWidth256B= ytesC[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->NumberOfActivePl= anes, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2286 v->SourcePixelForma= t, 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->ODMCombineEnable= d, 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->BlockHeight256By= tesY, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2298 v->BlockHeight256By= tesC, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2299 v->BlockWidth256Byt= esY, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2300 v->BlockWidth256Byt= esC, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2301 v->BlendingAndTimin= g, 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->SwathWidthSingle= DPPY, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2306 v->SwathWidthSingle= DPPC, 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_chro= ma_ub); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2313 = 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2314 for (k =3D 0; k < v->= NumberOfActivePlanes; ++k) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2315 v->ReadBandwidthPlan= eLuma[k] =3D 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->ReadBandwidthPlan= eChroma[k] =3D v->SwathWidthSingleDPPC[k] * v->BytePerPixelC[k] / (v->HTota= l[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] =3D %fBps", k, v->ReadBandwidthPlaneLuma[k] + v->ReadBandwidthPlaneChrom= a[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 CalculateDCFCLKDeepSl= eep( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2324 mode_lib, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2325 v->NumberOfActivePl= anes, 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->ReadBandwidthPla= neLuma, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2340 v->ReadBandwidthPla= neChroma, 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 =3D 0; k < v->= NumberOfActivePlanes; ++k) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2346 if ((v->BlendingAndT= iming[k] !=3D k) || !v->DSCEnabled[k]) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2347 v->DSCCLK_calculate= d[k] =3D 0.0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2348 } else { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2349 if (v->OutputFormat= [k] =3D=3D dm_420) 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2350 v->DSCFormatFactor= =3D 2; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2351 else if (v->OutputF= ormat[k] =3D=3D dm_444) 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2352 v->DSCFormatFactor= =3D 1; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2353 else if (v->OutputF= ormat[k] =3D=3D dm_n422) 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2354 v->DSCFormatFactor= =3D 2; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2355 else 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2356 v->DSCFormatFactor= =3D 1; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2357 if (v->ODMCombineEn= abled[k] =3D=3D dm_odm_combine_mode_4to1) 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2358 v->DSCCLK_calculat= ed[k] =3D v->PixelClockBackEnd[k] / 12 / v->DSCFormatFactor 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2359 / (1 - v->DISPCL= KDPPCLKDSCCLKDownSpreading / 100); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2360 else if (v->ODMComb= ineEnabled[k] =3D=3D dm_odm_combine_mode_2to1) 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2361 v->DSCCLK_calculat= ed[k] =3D v->PixelClockBackEnd[k] / 6 / v->DSCFormatFactor 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2362 / (1 - v->DISPCL= KDPPCLKDSCCLKDownSpreading / 100); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2363 else 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2364 v->DSCCLK_calculat= ed[k] =3D v->PixelClockBackEnd[k] / 3 / v->DSCFormatFactor 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2365 / (1 - v->DISPCL= KDPPCLKDSCCLKDownSpreading / 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 =3D 0; k < v->= NumberOfActivePlanes; ++k) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2371 double BPP =3D v->Ou= tputBpp[k]; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2372 = 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2373 if (v->DSCEnabled[k]= && BPP !=3D 0) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2374 if (v->ODMCombineEn= abled[k] =3D=3D dm_odm_combine_mode_disabled) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2375 v->DSCDelay[k] =3D= dscceComputeDelay( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2376 v->DSCInputBitPe= rComponent[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->NumberOfDSCSl= ices[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->ODMCo= mbineEnabled[k] =3D=3D dm_odm_combine_mode_2to1) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2383 v->DSCDelay[k] =3D= 2 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2384 * (dscceComputeD= elay( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2385 v->DSCInputBit= PerComponent[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2386 BPP, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2387 dml_ceil((doub= le) v->HActive[k] / v->NumberOfDSCSlices[k], 1), 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2388 v->NumberOfDSC= Slices[k] / 2.0, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2389 v->OutputForma= t[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] =3D= 4 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2393 * (dscceComputeD= elay( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2394 v->DSCInputBit= PerComponent[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2395 BPP, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2396 dml_ceil((doub= le) v->HActive[k] / v->NumberOfDSCSlices[k], 1), 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2397 v->NumberOfDSC= Slices[k] / 4.0, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2398 v->OutputForma= t[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] =3D = 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] =3D = 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 =3D 0; k < v->= NumberOfActivePlanes; ++k) 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2408 for (j =3D 0; j < v-= >NumberOfActivePlanes; ++j) // NumberOfPlanes 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2409 if (j !=3D k && v->= BlendingAndTiming[k] =3D=3D j && v->DSCEnabled[j]) 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2410 v->DSCDelay[k] =3D= 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 =3D 0; k < v->= NumberOfActivePlanes; ++k) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2414 unsigned int PDEAndM= etaPTEBytesFrameY; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2415 unsigned int PixelPT= EBytesPerRowY; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2416 unsigned int MetaRow= ByteY; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2417 unsigned int MetaRow= ByteC; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2418 unsigned int PDEAndM= etaPTEBytesFrameC; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2419 unsigned int PixelPT= EBytesPerRowC; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2420 bool PTEBufferSizeNo= tExceededY; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2421 bool PTEBufferSizeNo= tExceededC; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2422 = 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2423 if (v->SourcePixelFo= rmat[k] =3D=3D dm_420_8 || v->SourcePixelFormat[k] =3D=3D dm_420_10 || v->S= ourcePixelFormat[k] =3D=3D dm_420_12 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2424 || v->SourcePixelF= ormat[k] =3D=3D dm_rgbe_alpha) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2425 if ((v->SourcePixel= Format[k] =3D=3D dm_420_10 || v->SourcePixelFormat[k] =3D=3D dm_420_12) && = v->SourceScan[k] !=3D dm_vert) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2426 v->PTEBufferSizeIn= RequestsForLuma =3D (v->PTEBufferSizeInRequestsLuma + v->PTEBufferSizeInReq= uestsChroma) / 2; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2427 v->PTEBufferSizeIn= RequestsForChroma =3D v->PTEBufferSizeInRequestsForLuma; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2428 } else { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2429 v->PTEBufferSizeIn= RequestsForLuma =3D v->PTEBufferSizeInRequestsLuma; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2430 v->PTEBufferSizeIn= RequestsForChroma =3D v->PTEBufferSizeInRequestsChroma; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2431 } 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2432 = 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2433 PDEAndMetaPTEBytesF= rameC =3D 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->BlockHeight256= BytesC[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2437 v->BlockWidth256B= ytesC[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2438 v->SourcePixelFor= mat[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->ViewportHeight= Chroma[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->HostVMMaxNonCa= chedPageTableLevels, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2447 v->GPUVMMinPageSi= ze, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2448 v->HostVMMinPageS= ize, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2449 v->PTEBufferSizeI= nRequestsForChroma, 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->MacroTileWidt= hC[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2453 &MetaRowByteC, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2454 &PixelPTEBytesPer= RowC, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2455 &PTEBufferSizeNot= ExceededC, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2456 &v->dpte_row_widt= h_chroma_ub[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2457 &v->dpte_row_heig= ht_chroma[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2458 &v->meta_req_widt= h_chroma[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2459 &v->meta_req_heig= ht_chroma[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2460 &v->meta_row_widt= h_chroma[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2461 &v->meta_row_heig= ht_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->PixelPTEReqWi= dthC[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2465 &v->PixelPTEReqHe= ightC[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2466 &v->PTERequestSiz= eC[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2467 &v->dpde0_bytes_p= er_frame_ub_c[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2468 &v->meta_pte_byte= s_per_frame_ub_c[k]); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2469 = 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2470 v->PrefetchSourceLi= nesC[k] =3D 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->ProgressiveToI= nterlaceUnitInOPP, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2476 v->SwathHeightC[k= ], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2477 v->ViewportYStart= C[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->PTEBufferSizeInR= equestsForLuma =3D v->PTEBufferSizeInRequestsLuma + v->PTEBufferSizeInReque= stsChroma; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2482 v->PTEBufferSizeInR= equestsForChroma =3D 0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2483 PixelPTEBytesPerRow= C =3D 0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2484 PDEAndMetaPTEBytesF= rameC =3D 0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2485 MetaRowByteC =3D 0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2486 v->MaxNumSwathC[k] = =3D 0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2487 v->PrefetchSourceLi= nesC[k] =3D 0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2488 } 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2489 = 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2490 PDEAndMetaPTEBytesFr= ameY =3D 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->BlockHeight256B= ytesY[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2494 v->BlockWidth256By= tesY[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2495 v->SourcePixelForm= at[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->HostVMMaxNonCac= hedPageTableLevels, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2504 v->GPUVMMinPageSiz= e, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2505 v->HostVMMinPageSi= ze, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2506 v->PTEBufferSizeIn= RequestsForLuma, 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->MacroTileWidth= Y[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2510 &MetaRowByteY, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2511 &PixelPTEBytesPerR= owY, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2512 &PTEBufferSizeNotE= xceededY, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2513 &v->dpte_row_width= _luma_ub[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2514 &v->dpte_row_heigh= t[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2515 &v->meta_req_width= [k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2516 &v->meta_req_heigh= t[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2517 &v->meta_row_width= [k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2518 &v->meta_row_heigh= t[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2519 &v->vm_group_bytes= [k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2520 &v->dpte_group_byt= es[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2521 &v->PixelPTEReqWid= thY[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2522 &v->PixelPTEReqHei= ghtY[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2523 &v->PTERequestSize= Y[k], 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2524 &v->dpde0_bytes_pe= r_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->PrefetchSourceLin= esY[k] =3D 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->ProgressiveToIn= terlaceUnitInOPP, 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->PixelPTEBytesPerR= ow[k] =3D PixelPTEBytesPerRowY + PixelPTEBytesPerRowC; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2538 v->PDEAndMetaPTEByte= sFrame[k] =3D PDEAndMetaPTEBytesFrameY + PDEAndMetaPTEBytesFrameC; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2539 v->MetaRowByte[k] = =3D MetaRowByteY + MetaRowByteC; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2540 = 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2541 CalculateRowBandwidt= h( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2542 v->GPUVMEnable, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2543 v->SourcePixelForm= at[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 PixelPTEBytesPerRo= wY, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2553 PixelPTEBytesPerRo= wC, 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 = =3D 0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2561 v->TotalActiveDPP =3D= 0; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2562 for (k =3D 0; k < v->= NumberOfActivePlanes; ++k) { 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2563 v->TotalActiveDPP = =3D v->TotalActiveDPP + v->DPPPerPlane[k]; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2564 if (v->DCCEnable[k]) 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2565 v->TotalDCCActiveDP= P =3D v->TotalDCCActiveDPP + v->DPPPerPlane[k]; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2566 if (v->SourcePixelFo= rmat[k] =3D=3D dm_420_8 || v->SourcePixelFormat[k] =3D=3D dm_420_10 || v->S= ourcePixelFormat[k] =3D=3D dm_420_12 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2567 || v->SourcePixelF= ormat[k] =3D=3D dm_rgbe_alpha) 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2568 NoChromaPlanes =3D = false; 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2569 } 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2570 = 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2571 ReorderBytes =3D v->N= umberOfChannels 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2572 * dml_max3( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2573 v->UrgentOutOfOrd= erReturnPerChannelPixelDataOnly, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2574 v->UrgentOutOfOrd= erReturnPerChannelPixelMixedWithVMData, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2575 v->UrgentOutOfOrd= erReturnPerChannelVMDataOnly); 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2576 = 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2577 VMDataOnlyReturnBW = =3D dml_min( 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2578 dml_min(v->ReturnBu= sWidth * v->DCFCLK, v->FabricClock * v->FabricDatapathToDCNDataReturn) 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2579 * v->PercentOfIde= alFabricAndSDPPortBWReceivedAfterUrgLatency / 100.0, 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2580 v->DRAMSpeed * v->N= umberOfChannels * v->DRAMChannelWidth 74458c081fcfb0 Nicholas Kazlauskas 2021-05-19 2581 * v->PercentOfIde= alDRAMBWReceivedAfterUrgLatencyVMDataOnly / 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 :::::: CC: Alex Deucher --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============7020012558235711649==--