From: kernel test robot <lkp@intel.com>
To: Walter Wu <walter-zh.wu@mediatek.com>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
linux-kernel@vger.kernel.org,
Nathan Chancellor <natechancellor@gmail.com>,
Andrey Konovalov <andreyknvl@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Linux Memory Management List <linux-mm@kvack.org>
Subject: drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.c:1917:13: warning: stack frame size (2296) exceeds limit (2048) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation'
Date: Mon, 27 Dec 2021 22:51:36 +0800 [thread overview]
Message-ID: <202112272211.3wi11WNb-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: fc74e0a40e4f9fd0468e34045b0c45bba11dcbb2
commit: 02c587733c8161355a43e6e110c2e29bd0acff72 kasan: remove redundant config option
date: 9 months ago
config: x86_64-randconfig-a004-20211227 (https://download.01.org/0day-ci/archive/20211227/202112272211.3wi11WNb-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 511726c64d3b6cca66f7c54d457d586aa3129f67)
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=02c587733c8161355a43e6e110c2e29bd0acff72
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 02c587733c8161355a43e6e110c2e29bd0acff72
# 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/dcn30/display_mode_vba_30.c:3052:10: warning: variable 'MaxUsedBW' set but not used [-Wunused-but-set-variable]
double MaxUsedBW = 0;
^
>> drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.c:1917:13: warning: stack frame size (2296) exceeds limit (2048) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation' [-Wframe-larger-than]
static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation(
^
drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.c:3641:6: warning: stack frame size (2840) exceeds limit (2048) in 'dml30_ModeSupportAndSystemConfigurationFull' [-Wframe-larger-than]
void dml30_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
^
3 warnings generated.
vim +/DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation +1917 drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.c
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1916
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 @1917 static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1918 struct display_mode_lib *mode_lib)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1919 {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1920 struct vba_vars_st *v = &mode_lib->vba;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1921 unsigned int j, k;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1922 long ReorderBytes = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1923 unsigned int PrefetchMode = v->PrefetchModePerState[v->VoltageLevel][v->maxMpcComb];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1924 double MaxTotalRDBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1925 double MaxTotalRDBandwidthNoUrgentBurst = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1926 bool DestinationLineTimesForPrefetchLessThan2 = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1927 bool VRatioPrefetchMoreThan4 = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1928 double TWait;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1929
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1930 v->WritebackDISPCLK = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1931 v->DISPCLKWithRamping = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1932 v->DISPCLKWithoutRamping = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1933 v->GlobalDPPCLK = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1934 /* DAL custom code: need to update ReturnBW in case min dcfclk is overriden */
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1935 v->IdealSDPPortBandwidthPerState[v->VoltageLevel][v->maxMpcComb] = dml_min3(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1936 v->ReturnBusWidth * v->DCFCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1937 v->DRAMSpeedPerState[v->VoltageLevel] * v->NumberOfChannels * v->DRAMChannelWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1938 v->FabricClockPerState[v->VoltageLevel] * v->FabricDatapathToDCNDataReturn);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1939 if (v->HostVMEnable != true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1940 v->ReturnBW = v->IdealSDPPortBandwidthPerState[v->VoltageLevel][v->maxMpcComb] * v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelDataOnly / 100;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1941 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1942 v->ReturnBW = v->IdealSDPPortBandwidthPerState[v->VoltageLevel][v->maxMpcComb] * v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData / 100;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1943 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1944 /* End DAL custom code */
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1945
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1946 // DISPCLK and DPPCLK Calculation
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1947 //
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1948 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1949 if (v->WritebackEnable[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1950 v->WritebackDISPCLK = dml_max(v->WritebackDISPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1951 dml30_CalculateWriteBackDISPCLK(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1952 v->WritebackPixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1953 v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1954 v->WritebackHRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1955 v->WritebackVRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1956 v->WritebackHTaps[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1957 v->WritebackVTaps[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1958 v->WritebackSourceWidth[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1959 v->WritebackDestinationWidth[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1960 v->HTotal[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1961 v->WritebackLineBufferSize));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1962 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1963 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1964
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1965 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1966 if (v->HRatio[k] > 1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1967 v->PSCL_THROUGHPUT_LUMA[k] = dml_min(v->MaxDCHUBToPSCLThroughput,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1968 v->MaxPSCLToLBThroughput * v->HRatio[k] / dml_ceil(v->htaps[k] / 6.0, 1));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1969 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1970 v->PSCL_THROUGHPUT_LUMA[k] = dml_min(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1971 v->MaxDCHUBToPSCLThroughput,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1972 v->MaxPSCLToLBThroughput);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1973 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1974
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1975 v->DPPCLKUsingSingleDPPLuma = v->PixelClock[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1976 * dml_max(v->vtaps[k] / 6.0 * dml_min(1.0, v->HRatio[k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1977 dml_max(v->HRatio[k] * v->VRatio[k] / v->PSCL_THROUGHPUT_LUMA[k], 1.0));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1978
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1979 if ((v->htaps[k] > 6 || v->vtaps[k] > 6)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1980 && v->DPPCLKUsingSingleDPPLuma < 2 * v->PixelClock[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1981 v->DPPCLKUsingSingleDPPLuma = 2 * v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1982 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1983
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1984 if ((v->SourcePixelFormat[k] != dm_420_8
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1985 && v->SourcePixelFormat[k] != dm_420_10
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1986 && v->SourcePixelFormat[k] != dm_420_12
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1987 && v->SourcePixelFormat[k] != dm_rgbe_alpha)) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1988 v->PSCL_THROUGHPUT_CHROMA[k] = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1989 v->DPPCLKUsingSingleDPP[k] = v->DPPCLKUsingSingleDPPLuma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1990 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1991 if (v->HRatioChroma[k] > 1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1992 v->PSCL_THROUGHPUT_CHROMA[k] = dml_min(v->MaxDCHUBToPSCLThroughput,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1993 v->MaxPSCLToLBThroughput * v->HRatioChroma[k] / dml_ceil(v->HTAPsChroma[k] / 6.0, 1.0));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1994 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1995 v->PSCL_THROUGHPUT_CHROMA[k] = dml_min(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1996 v->MaxDCHUBToPSCLThroughput,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1997 v->MaxPSCLToLBThroughput);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1998 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1999 v->DPPCLKUsingSingleDPPChroma = v->PixelClock[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2000 * dml_max3(v->VTAPsChroma[k] / 6.0 * dml_min(1.0, v->HRatioChroma[k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2001 v->HRatioChroma[k] * v->VRatioChroma[k] / v->PSCL_THROUGHPUT_CHROMA[k], 1.0);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2002
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2003 if ((v->HTAPsChroma[k] > 6 || v->VTAPsChroma[k] > 6)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2004 && v->DPPCLKUsingSingleDPPChroma
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2005 < 2 * v->PixelClock[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2006 v->DPPCLKUsingSingleDPPChroma = 2
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2007 * v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2008 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2009
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2010 v->DPPCLKUsingSingleDPP[k] = dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2011 v->DPPCLKUsingSingleDPPLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2012 v->DPPCLKUsingSingleDPPChroma);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2013 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2014 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2015
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2016 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2017 if (v->BlendingAndTiming[k] != k)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2018 continue;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2019 if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_4to1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2020 v->DISPCLKWithRamping = dml_max(v->DISPCLKWithRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2021 v->PixelClock[k] / 4 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2022 * (1 + v->DISPCLKRampingMargin / 100));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2023 v->DISPCLKWithoutRamping = dml_max(v->DISPCLKWithoutRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2024 v->PixelClock[k] / 4 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2025 } else if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_2to1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2026 v->DISPCLKWithRamping = dml_max(v->DISPCLKWithRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2027 v->PixelClock[k] / 2 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2028 * (1 + v->DISPCLKRampingMargin / 100));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2029 v->DISPCLKWithoutRamping = dml_max(v->DISPCLKWithoutRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2030 v->PixelClock[k] / 2 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2031 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2032 v->DISPCLKWithRamping = dml_max(v->DISPCLKWithRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2033 v->PixelClock[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2034 * (1 + v->DISPCLKRampingMargin / 100));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2035 v->DISPCLKWithoutRamping = dml_max(v->DISPCLKWithoutRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2036 v->PixelClock[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2037 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2038 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2039
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2040 v->DISPCLKWithRamping = dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2041 v->DISPCLKWithRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2042 v->WritebackDISPCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2043 v->DISPCLKWithoutRamping = dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2044 v->DISPCLKWithoutRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2045 v->WritebackDISPCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2046
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2047 ASSERT(v->DISPCLKDPPCLKVCOSpeed != 0);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2048 v->DISPCLKWithRampingRoundedToDFSGranularity = RoundToDFSGranularityUp(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2049 v->DISPCLKWithRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2050 v->DISPCLKDPPCLKVCOSpeed);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2051 v->DISPCLKWithoutRampingRoundedToDFSGranularity = RoundToDFSGranularityUp(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2052 v->DISPCLKWithoutRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2053 v->DISPCLKDPPCLKVCOSpeed);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2054 v->MaxDispclkRoundedToDFSGranularity = RoundToDFSGranularityDown(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2055 v->soc.clock_limits[mode_lib->soc.num_states].dispclk_mhz,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2056 v->DISPCLKDPPCLKVCOSpeed);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2057 if (v->DISPCLKWithoutRampingRoundedToDFSGranularity
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2058 > v->MaxDispclkRoundedToDFSGranularity) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2059 v->DISPCLK_calculated =
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2060 v->DISPCLKWithoutRampingRoundedToDFSGranularity;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2061 } else if (v->DISPCLKWithRampingRoundedToDFSGranularity
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2062 > v->MaxDispclkRoundedToDFSGranularity) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2063 v->DISPCLK_calculated = v->MaxDispclkRoundedToDFSGranularity;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2064 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2065 v->DISPCLK_calculated =
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2066 v->DISPCLKWithRampingRoundedToDFSGranularity;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2067 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2068 v->DISPCLK = v->DISPCLK_calculated;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2069 DTRACE(" dispclk_mhz (calculated) = %f", v->DISPCLK_calculated);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2070
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2071 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2072 v->DPPCLK_calculated[k] = v->DPPCLKUsingSingleDPP[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2073 / v->DPPPerPlane[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2074 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2075 v->GlobalDPPCLK = dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2076 v->GlobalDPPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2077 v->DPPCLK_calculated[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2078 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2079 v->GlobalDPPCLK = RoundToDFSGranularityUp(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2080 v->GlobalDPPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2081 v->DISPCLKDPPCLKVCOSpeed);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2082 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2083 v->DPPCLK_calculated[k] = v->GlobalDPPCLK / 255
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2084 * dml_ceil(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2085 v->DPPCLK_calculated[k] * 255.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2086 / v->GlobalDPPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2087 1);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2088 DTRACE(" dppclk_mhz[%i] (calculated) = %f", k, v->DPPCLK_calculated[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2089 v->DPPCLK[k] = v->DPPCLK_calculated[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2090 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2091
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2092 // Urgent and B P-State/DRAM Clock Change Watermark
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2093 DTRACE(" dcfclk_mhz = %f", v->DCFCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2094 DTRACE(" return_bus_bw = %f", v->ReturnBW);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2095
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2096 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2097 CalculateBytePerPixelAnd256BBlockSizes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2098 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2099 v->SurfaceTiling[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2100 &v->BytePerPixelY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2101 &v->BytePerPixelC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2102 &v->BytePerPixelDETY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2103 &v->BytePerPixelDETC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2104 &v->BlockHeight256BytesY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2105 &v->BlockHeight256BytesC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2106 &v->BlockWidth256BytesY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2107 &v->BlockWidth256BytesC[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2108 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2109
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2110 CalculateSwathWidth(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2111 false,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2112 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2113 v->SourcePixelFormat,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2114 v->SourceScan,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2115 v->ViewportWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2116 v->ViewportHeight,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2117 v->SurfaceWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2118 v->SurfaceWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2119 v->SurfaceHeightY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2120 v->SurfaceHeightC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2121 v->ODMCombineEnabled,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2122 v->BytePerPixelY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2123 v->BytePerPixelC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2124 v->BlockHeight256BytesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2125 v->BlockHeight256BytesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2126 v->BlockWidth256BytesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2127 v->BlockWidth256BytesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2128 v->BlendingAndTiming,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2129 v->HActive,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2130 v->HRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2131 v->DPPPerPlane,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2132 v->SwathWidthSingleDPPY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2133 v->SwathWidthSingleDPPC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2134 v->SwathWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2135 v->SwathWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2136 v->dummyinteger3,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2137 v->dummyinteger4,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2138 v->swath_width_luma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2139 v->swath_width_chroma_ub);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2140
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2141
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2142 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2143 v->ReadBandwidthPlaneLuma[k] = v->SwathWidthSingleDPPY[k] * v->BytePerPixelY[k] / (v->HTotal[k] / v->PixelClock[k]) * v->VRatio[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2144 v->ReadBandwidthPlaneChroma[k] = v->SwathWidthSingleDPPC[k] * v->BytePerPixelC[k] / (v->HTotal[k] / v->PixelClock[k]) * v->VRatioChroma[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2145 DTRACE("read_bw[%i] = %fBps", k, v->ReadBandwidthPlaneLuma[k] + v->ReadBandwidthPlaneChroma[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2146 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2147
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2148
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2149 // DCFCLK Deep Sleep
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2150 CalculateDCFCLKDeepSleep(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2151 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2152 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2153 v->BytePerPixelY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2154 v->BytePerPixelC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2155 v->VRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2156 v->VRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2157 v->SwathWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2158 v->SwathWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2159 v->DPPPerPlane,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2160 v->HRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2161 v->HRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2162 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2163 v->PSCL_THROUGHPUT_LUMA,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2164 v->PSCL_THROUGHPUT_CHROMA,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2165 v->DPPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2166 v->ReadBandwidthPlaneLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2167 v->ReadBandwidthPlaneChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2168 v->ReturnBusWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2169 &v->DCFCLKDeepSleep);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2170
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2171 // DSCCLK
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2172 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2173 if ((v->BlendingAndTiming[k] != k) || !v->DSCEnabled[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2174 v->DSCCLK_calculated[k] = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2175 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2176 if (v->OutputFormat[k] == dm_420)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2177 v->DSCFormatFactor = 2;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2178 else if (v->OutputFormat[k] == dm_444)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2179 v->DSCFormatFactor = 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2180 else if (v->OutputFormat[k] == dm_n422)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2181 v->DSCFormatFactor = 2;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2182 else
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2183 v->DSCFormatFactor = 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2184 if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_4to1)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2185 v->DSCCLK_calculated[k] = v->PixelClockBackEnd[k] / 12
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2186 / v->DSCFormatFactor / (1 - v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2187 else if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_2to1)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2188 v->DSCCLK_calculated[k] = v->PixelClockBackEnd[k] / 6
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2189 / v->DSCFormatFactor / (1 - v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2190 else
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2191 v->DSCCLK_calculated[k] = v->PixelClockBackEnd[k] / 3
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2192 / v->DSCFormatFactor / (1 - v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2193 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2194 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2195
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2196 // DSC Delay
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2197 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2198 double BPP = v->OutputBppPerState[k][v->VoltageLevel];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2199
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2200 if (v->DSCEnabled[k] && BPP != 0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2201 if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_disabled) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2202 v->DSCDelay[k] = dscceComputeDelay(v->DSCInputBitPerComponent[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2203 BPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2204 dml_ceil((double) v->HActive[k] / v->NumberOfDSCSlices[k], 1),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2205 v->NumberOfDSCSlices[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2206 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2207 v->Output[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2208 + dscComputeDelay(v->OutputFormat[k], v->Output[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2209 } else if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_2to1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2210 v->DSCDelay[k] = 2 * dscceComputeDelay(v->DSCInputBitPerComponent[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2211 BPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2212 dml_ceil((double) v->HActive[k] / v->NumberOfDSCSlices[k], 1),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2213 v->NumberOfDSCSlices[k] / 2.0,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2214 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2215 v->Output[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2216 + dscComputeDelay(v->OutputFormat[k], v->Output[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2217 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2218 v->DSCDelay[k] = 4 * dscceComputeDelay(v->DSCInputBitPerComponent[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2219 BPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2220 dml_ceil((double) v->HActive[k] / v->NumberOfDSCSlices[k], 1),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2221 v->NumberOfDSCSlices[k] / 4.0,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2222 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2223 v->Output[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2224 + dscComputeDelay(v->OutputFormat[k], v->Output[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2225 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2226 v->DSCDelay[k] = v->DSCDelay[k] * v->PixelClock[k] / v->PixelClockBackEnd[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2227 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2228 v->DSCDelay[k] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2229 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2230 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2231
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2232 for (k = 0; k < v->NumberOfActivePlanes; ++k)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2233 for (j = 0; j < v->NumberOfActivePlanes; ++j) // NumberOfPlanes
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2234 if (j != k && v->BlendingAndTiming[k] == j
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2235 && v->DSCEnabled[j])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2236 v->DSCDelay[k] = v->DSCDelay[j];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2237
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2238 // Prefetch
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2239 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2240 unsigned int PDEAndMetaPTEBytesFrameY = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2241 unsigned int PixelPTEBytesPerRowY = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2242 unsigned int MetaRowByteY = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2243 unsigned int MetaRowByteC = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2244 unsigned int PDEAndMetaPTEBytesFrameC = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2245 unsigned int PixelPTEBytesPerRowC = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2246 bool PTEBufferSizeNotExceededY = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2247 bool PTEBufferSizeNotExceededC = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2248
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2249
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2250 if (v->SourcePixelFormat[k] == dm_420_8 || v->SourcePixelFormat[k] == dm_420_10 || v->SourcePixelFormat[k] == dm_420_12 || v->SourcePixelFormat[k] == dm_rgbe_alpha) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2251 if ((v->SourcePixelFormat[k] == dm_420_10 || v->SourcePixelFormat[k] == dm_420_12) && v->SourceScan[k] != dm_vert) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2252 v->PTEBufferSizeInRequestsForLuma = (v->PTEBufferSizeInRequestsLuma + v->PTEBufferSizeInRequestsChroma) / 2;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2253 v->PTEBufferSizeInRequestsForChroma = v->PTEBufferSizeInRequestsForLuma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2254 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2255 v->PTEBufferSizeInRequestsForLuma = v->PTEBufferSizeInRequestsLuma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2256 v->PTEBufferSizeInRequestsForChroma = v->PTEBufferSizeInRequestsChroma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2257
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2258 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2259 PDEAndMetaPTEBytesFrameC = CalculateVMAndRowBytes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2260 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2261 v->DCCEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2262 v->BlockHeight256BytesC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2263 v->BlockWidth256BytesC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2264 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2265 v->SurfaceTiling[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2266 v->BytePerPixelC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2267 v->SourceScan[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2268 v->SwathWidthC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2269 v->ViewportHeightChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2270 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2271 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2272 v->HostVMMaxNonCachedPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2273 v->GPUVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2274 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2275 v->PTEBufferSizeInRequestsForChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2276 v->PitchC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2277 v->DCCMetaPitchC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2278 &v->MacroTileWidthC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2279 &MetaRowByteC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2280 &PixelPTEBytesPerRowC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2281 &PTEBufferSizeNotExceededC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2282 &v->dpte_row_width_chroma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2283 &v->dpte_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2284 &v->meta_req_width_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2285 &v->meta_req_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2286 &v->meta_row_width_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2287 &v->meta_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2288 &v->dummyinteger1,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2289 &v->dummyinteger2,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2290 &v->PixelPTEReqWidthC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2291 &v->PixelPTEReqHeightC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2292 &v->PTERequestSizeC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2293 &v->dpde0_bytes_per_frame_ub_c[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2294 &v->meta_pte_bytes_per_frame_ub_c[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2295
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2296 v->PrefetchSourceLinesC[k] = CalculatePrefetchSourceLines(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2297 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2298 v->VRatioChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2299 v->VTAPsChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2300 v->Interlace[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2301 v->ProgressiveToInterlaceUnitInOPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2302 v->SwathHeightC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2303 v->ViewportYStartC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2304 &v->VInitPreFillC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2305 &v->MaxNumSwathC[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2306 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2307 v->PTEBufferSizeInRequestsForLuma = v->PTEBufferSizeInRequestsLuma + v->PTEBufferSizeInRequestsChroma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2308 v->PTEBufferSizeInRequestsForChroma = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2309 PixelPTEBytesPerRowC = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2310 PDEAndMetaPTEBytesFrameC = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2311 MetaRowByteC = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2312 v->MaxNumSwathC[k] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2313 v->PrefetchSourceLinesC[k] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2314 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2315
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2316 PDEAndMetaPTEBytesFrameY = CalculateVMAndRowBytes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2317 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2318 v->DCCEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2319 v->BlockHeight256BytesY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2320 v->BlockWidth256BytesY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2321 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2322 v->SurfaceTiling[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2323 v->BytePerPixelY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2324 v->SourceScan[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2325 v->SwathWidthY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2326 v->ViewportHeight[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2327 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2328 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2329 v->HostVMMaxNonCachedPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2330 v->GPUVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2331 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2332 v->PTEBufferSizeInRequestsForLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2333 v->PitchY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2334 v->DCCMetaPitchY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2335 &v->MacroTileWidthY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2336 &MetaRowByteY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2337 &PixelPTEBytesPerRowY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2338 &PTEBufferSizeNotExceededY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2339 &v->dpte_row_width_luma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2340 &v->dpte_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2341 &v->meta_req_width[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2342 &v->meta_req_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2343 &v->meta_row_width[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2344 &v->meta_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2345 &v->vm_group_bytes[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2346 &v->dpte_group_bytes[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2347 &v->PixelPTEReqWidthY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2348 &v->PixelPTEReqHeightY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2349 &v->PTERequestSizeY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2350 &v->dpde0_bytes_per_frame_ub_l[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2351 &v->meta_pte_bytes_per_frame_ub_l[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2352
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2353 v->PrefetchSourceLinesY[k] = CalculatePrefetchSourceLines(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2354 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2355 v->VRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2356 v->vtaps[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2357 v->Interlace[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2358 v->ProgressiveToInterlaceUnitInOPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2359 v->SwathHeightY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2360 v->ViewportYStartY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2361 &v->VInitPreFillY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2362 &v->MaxNumSwathY[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2363 v->PixelPTEBytesPerRow[k] = PixelPTEBytesPerRowY + PixelPTEBytesPerRowC;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2364 v->PDEAndMetaPTEBytesFrame[k] = PDEAndMetaPTEBytesFrameY
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2365 + PDEAndMetaPTEBytesFrameC;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2366 v->MetaRowByte[k] = MetaRowByteY + MetaRowByteC;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2367
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2368 CalculateRowBandwidth(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2369 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2370 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2371 v->VRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2372 v->VRatioChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2373 v->DCCEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2374 v->HTotal[k] / v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2375 MetaRowByteY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2376 MetaRowByteC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2377 v->meta_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2378 v->meta_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2379 PixelPTEBytesPerRowY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2380 PixelPTEBytesPerRowC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2381 v->dpte_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2382 v->dpte_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2383 &v->meta_row_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2384 &v->dpte_row_bw[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2385 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2386
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2387 v->TotalDCCActiveDPP = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2388 v->TotalActiveDPP = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2389 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2390 v->TotalActiveDPP = v->TotalActiveDPP
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2391 + v->DPPPerPlane[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2392 if (v->DCCEnable[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2393 v->TotalDCCActiveDPP = v->TotalDCCActiveDPP
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2394 + v->DPPPerPlane[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2395 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2396
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2397
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2398 ReorderBytes = v->NumberOfChannels * dml_max3(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2399 v->UrgentOutOfOrderReturnPerChannelPixelDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2400 v->UrgentOutOfOrderReturnPerChannelPixelMixedWithVMData,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2401 v->UrgentOutOfOrderReturnPerChannelVMDataOnly);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2402
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2403 v->UrgentExtraLatency = CalculateExtraLatency(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2404 v->RoundTripPingLatencyCycles,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2405 ReorderBytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2406 v->DCFCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2407 v->TotalActiveDPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2408 v->PixelChunkSizeInKByte,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2409 v->TotalDCCActiveDPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2410 v->MetaChunkSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2411 v->ReturnBW,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2412 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2413 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2414 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2415 v->DPPPerPlane,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2416 v->dpte_group_bytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2417 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2418 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyVMDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2419 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2420 v->HostVMMaxNonCachedPageTableLevels);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2421
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2422 v->TCalc = 24.0 / v->DCFCLKDeepSleep;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2423
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2424 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2425 if (v->BlendingAndTiming[k] == k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2426 if (v->WritebackEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2427 v->WritebackDelay[v->VoltageLevel][k] = v->WritebackLatency +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2428 CalculateWriteBackDelay(v->WritebackPixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2429 v->WritebackHRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2430 v->WritebackVRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2431 v->WritebackVTaps[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2432 v->WritebackDestinationWidth[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2433 v->WritebackDestinationHeight[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2434 v->WritebackSourceHeight[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2435 v->HTotal[k]) / v->DISPCLK;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2436 } else
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2437 v->WritebackDelay[v->VoltageLevel][k] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2438 for (j = 0; j < v->NumberOfActivePlanes; ++j) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2439 if (v->BlendingAndTiming[j] == k
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2440 && v->WritebackEnable[j] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2441 v->WritebackDelay[v->VoltageLevel][k] = dml_max(v->WritebackDelay[v->VoltageLevel][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2442 v->WritebackLatency + CalculateWriteBackDelay(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2443 v->WritebackPixelFormat[j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2444 v->WritebackHRatio[j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2445 v->WritebackVRatio[j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2446 v->WritebackVTaps[j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2447 v->WritebackDestinationWidth[j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2448 v->WritebackDestinationHeight[j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2449 v->WritebackSourceHeight[j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2450 v->HTotal[k]) / v->DISPCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2451 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2452 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2453 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2454 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2455
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2456 for (k = 0; k < v->NumberOfActivePlanes; ++k)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2457 for (j = 0; j < v->NumberOfActivePlanes; ++j)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2458 if (v->BlendingAndTiming[k] == j)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2459 v->WritebackDelay[v->VoltageLevel][k] = v->WritebackDelay[v->VoltageLevel][j];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2460
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2461 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2462 v->MaxVStartupLines[k] = v->VTotal[k] - v->VActive[k] - dml_max(1.0, dml_ceil((double) v->WritebackDelay[v->VoltageLevel][k] / (v->HTotal[k] / v->PixelClock[k]), 1));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2463 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2464
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2465 v->MaximumMaxVStartupLines = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2466 for (k = 0; k < v->NumberOfActivePlanes; ++k)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2467 v->MaximumMaxVStartupLines = dml_max(v->MaximumMaxVStartupLines, v->MaxVStartupLines[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2468
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2469 if (v->DRAMClockChangeLatencyOverride > 0.0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2470 v->FinalDRAMClockChangeLatency = v->DRAMClockChangeLatencyOverride;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2471 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2472 v->FinalDRAMClockChangeLatency = v->DRAMClockChangeLatency;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2473 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2474 v->UrgentLatency = CalculateUrgentLatency(v->UrgentLatencyPixelDataOnly, v->UrgentLatencyPixelMixedWithVMData, v->UrgentLatencyVMDataOnly, v->DoUrgentLatencyAdjustment, v->UrgentLatencyAdjustmentFabricClockComponent, v->UrgentLatencyAdjustmentFabricClockReference, v->FabricClock);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2475
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2476
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2477 v->FractionOfUrgentBandwidth = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2478 v->FractionOfUrgentBandwidthImmediateFlip = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2479
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2480 v->VStartupLines = 13;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2481
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2482 do {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2483 MaxTotalRDBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2484 MaxTotalRDBandwidthNoUrgentBurst = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2485 DestinationLineTimesForPrefetchLessThan2 = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2486 VRatioPrefetchMoreThan4 = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2487 TWait = CalculateTWait(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2488 PrefetchMode,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2489 v->FinalDRAMClockChangeLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2490 v->UrgentLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2491 v->SREnterPlusExitTime);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2492
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2493 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2494 Pipe myPipe = { 0 };
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2495
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2496 myPipe.DPPCLK = v->DPPCLK[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2497 myPipe.DISPCLK = v->DISPCLK;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2498 myPipe.PixelClock = v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2499 myPipe.DCFCLKDeepSleep = v->DCFCLKDeepSleep;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2500 myPipe.DPPPerPlane = v->DPPPerPlane[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2501 myPipe.ScalerEnabled = v->ScalerEnabled[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2502 myPipe.SourceScan = v->SourceScan[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2503 myPipe.BlockWidth256BytesY = v->BlockWidth256BytesY[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2504 myPipe.BlockHeight256BytesY = v->BlockHeight256BytesY[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2505 myPipe.BlockWidth256BytesC = v->BlockWidth256BytesC[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2506 myPipe.BlockHeight256BytesC = v->BlockHeight256BytesC[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2507 myPipe.InterlaceEnable = v->Interlace[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2508 myPipe.NumberOfCursors = v->NumberOfCursors[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2509 myPipe.VBlank = v->VTotal[k] - v->VActive[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2510 myPipe.HTotal = v->HTotal[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2511 myPipe.DCCEnable = v->DCCEnable[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2512 myPipe.ODMCombineEnabled = !!v->ODMCombineEnabled[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2513
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2514 v->ErrorResult[k] = CalculatePrefetchSchedule(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2515 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2516 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2517 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyVMDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2518 &myPipe,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2519 v->DSCDelay[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2520 v->DPPCLKDelaySubtotal
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2521 + v->DPPCLKDelayCNVCFormater,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2522 v->DPPCLKDelaySCL,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2523 v->DPPCLKDelaySCLLBOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2524 v->DPPCLKDelayCNVCCursor,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2525 v->DISPCLKDelaySubtotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2526 (unsigned int) (v->SwathWidthY[k] / v->HRatio[k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2527 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2528 v->MaxInterDCNTileRepeaters,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2529 dml_min(v->VStartupLines, v->MaxVStartupLines[k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2530 v->MaxVStartupLines[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2531 v->GPUVMMaxPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2532 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2533 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2534 v->HostVMMaxNonCachedPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2535 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2536 v->DynamicMetadataEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2537 v->DynamicMetadataVMEnabled,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2538 v->DynamicMetadataLinesBeforeActiveRequired[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2539 v->DynamicMetadataTransmittedBytes[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2540 v->UrgentLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2541 v->UrgentExtraLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2542 v->TCalc,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2543 v->PDEAndMetaPTEBytesFrame[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2544 v->MetaRowByte[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2545 v->PixelPTEBytesPerRow[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2546 v->PrefetchSourceLinesY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2547 v->SwathWidthY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2548 v->BytePerPixelY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2549 v->VInitPreFillY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2550 v->MaxNumSwathY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2551 v->PrefetchSourceLinesC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2552 v->SwathWidthC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2553 v->BytePerPixelC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2554 v->VInitPreFillC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2555 v->MaxNumSwathC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2556 v->swath_width_luma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2557 v->swath_width_chroma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2558 v->SwathHeightY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2559 v->SwathHeightC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2560 TWait,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2561 v->ProgressiveToInterlaceUnitInOPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2562 &v->DSTXAfterScaler[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2563 &v->DSTYAfterScaler[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2564 &v->DestinationLinesForPrefetch[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2565 &v->PrefetchBandwidth[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2566 &v->DestinationLinesToRequestVMInVBlank[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2567 &v->DestinationLinesToRequestRowInVBlank[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2568 &v->VRatioPrefetchY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2569 &v->VRatioPrefetchC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2570 &v->RequiredPrefetchPixDataBWLuma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2571 &v->RequiredPrefetchPixDataBWChroma[k],
eaa483642f63cf Dmytro Laktyushkin 2020-06-15 2572 &v->NotEnoughTimeForDynamicMetadata[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2573 &v->Tno_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2574 &v->prefetch_vmrow_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2575 &v->Tdmdl_vm[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2576 &v->Tdmdl[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2577 &v->VUpdateOffsetPix[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2578 &v->VUpdateWidthPix[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2579 &v->VReadyOffsetPix[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2580 if (v->BlendingAndTiming[k] == k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2581 double TotalRepeaterDelayTime = v->MaxInterDCNTileRepeaters * (2 / v->DPPCLK[k] + 3 / v->DISPCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2582 v->VUpdateWidthPix[k] = (14 / v->DCFCLKDeepSleep + 12 / v->DPPCLK[k] + TotalRepeaterDelayTime) * v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2583 v->VReadyOffsetPix[k] = dml_max(150.0 / v->DPPCLK[k], TotalRepeaterDelayTime + 20 / v->DCFCLKDeepSleep + 10 / v->DPPCLK[k]) * v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2584 v->VUpdateOffsetPix[k] = dml_ceil(v->HTotal[k] / 4.0, 1);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2585 v->VStartup[k] = dml_min(v->VStartupLines, v->MaxVStartupLines[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2586 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2587 int x = v->BlendingAndTiming[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2588 double TotalRepeaterDelayTime = v->MaxInterDCNTileRepeaters * (2 / v->DPPCLK[k] + 3 / v->DISPCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2589 v->VUpdateWidthPix[k] = (14 / v->DCFCLKDeepSleep + 12 / v->DPPCLK[k] + TotalRepeaterDelayTime) * v->PixelClock[x];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2590 v->VReadyOffsetPix[k] = dml_max(150.0 / v->DPPCLK[k], TotalRepeaterDelayTime + 20 / v->DCFCLKDeepSleep + 10 / v->DPPCLK[k]) * v->PixelClock[x];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2591 v->VUpdateOffsetPix[k] = dml_ceil(v->HTotal[x] / 4.0, 1);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2592 if (!v->MaxVStartupLines[x])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2593 v->MaxVStartupLines[x] = v->MaxVStartupLines[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2594 v->VStartup[k] = dml_min(v->VStartupLines, v->MaxVStartupLines[x]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2595 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2596 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2597
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2598 v->NotEnoughUrgentLatencyHiding = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2599 v->NotEnoughUrgentLatencyHidingPre = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2600
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2601 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2602 v->cursor_bw[k] = v->NumberOfCursors[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2603 * v->CursorWidth[k][0] * v->CursorBPP[k][0]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2604 / 8.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2605 / (v->HTotal[k] / v->PixelClock[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2606 * v->VRatio[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2607 v->cursor_bw_pre[k] = v->NumberOfCursors[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2608 * v->CursorWidth[k][0] * v->CursorBPP[k][0]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2609 / 8.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2610 / (v->HTotal[k] / v->PixelClock[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2611 * v->VRatioPrefetchY[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2612
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2613 CalculateUrgentBurstFactor(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2614 v->swath_width_luma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2615 v->swath_width_chroma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2616 v->DETBufferSizeInKByte,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2617 v->SwathHeightY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2618 v->SwathHeightC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2619 v->HTotal[k] / v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2620 v->UrgentLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2621 v->CursorBufferSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2622 v->CursorWidth[k][0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2623 v->CursorBPP[k][0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2624 v->VRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2625 v->VRatioChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2626 v->BytePerPixelDETY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2627 v->BytePerPixelDETC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2628 v->DETBufferSizeY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2629 v->DETBufferSizeC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2630 &v->UrgentBurstFactorCursor[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2631 &v->UrgentBurstFactorLuma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2632 &v->UrgentBurstFactorChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2633 &v->NoUrgentLatencyHiding[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2634
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2635 CalculateUrgentBurstFactor(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2636 v->swath_width_luma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2637 v->swath_width_chroma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2638 v->DETBufferSizeInKByte,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2639 v->SwathHeightY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2640 v->SwathHeightC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2641 v->HTotal[k] / v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2642 v->UrgentLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2643 v->CursorBufferSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2644 v->CursorWidth[k][0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2645 v->CursorBPP[k][0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2646 v->VRatioPrefetchY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2647 v->VRatioPrefetchC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2648 v->BytePerPixelDETY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2649 v->BytePerPixelDETC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2650 v->DETBufferSizeY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2651 v->DETBufferSizeC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2652 &v->UrgentBurstFactorCursorPre[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2653 &v->UrgentBurstFactorLumaPre[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2654 &v->UrgentBurstFactorChromaPre[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2655 &v->NoUrgentLatencyHidingPre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2656
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2657 MaxTotalRDBandwidth = MaxTotalRDBandwidth +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2658 dml_max3(v->DPPPerPlane[k] * v->prefetch_vmrow_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2659 v->ReadBandwidthPlaneLuma[k] *
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2660 v->UrgentBurstFactorLuma[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2661 v->ReadBandwidthPlaneChroma[k] *
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2662 v->UrgentBurstFactorChroma[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2663 v->cursor_bw[k] *
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2664 v->UrgentBurstFactorCursor[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2665 v->DPPPerPlane[k] * (v->meta_row_bw[k] + v->dpte_row_bw[k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2666 v->DPPPerPlane[k] * (v->RequiredPrefetchPixDataBWLuma[k] * v->UrgentBurstFactorLumaPre[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2667 v->RequiredPrefetchPixDataBWChroma[k] * v->UrgentBurstFactorChromaPre[k]) + v->cursor_bw_pre[k] *
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2668 v->UrgentBurstFactorCursorPre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2669
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2670 MaxTotalRDBandwidthNoUrgentBurst = MaxTotalRDBandwidthNoUrgentBurst +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2671 dml_max3(v->DPPPerPlane[k] * v->prefetch_vmrow_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2672 v->ReadBandwidthPlaneLuma[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2673 v->ReadBandwidthPlaneChroma[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2674 v->cursor_bw[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2675 v->DPPPerPlane[k] * (v->meta_row_bw[k] + v->dpte_row_bw[k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2676 v->DPPPerPlane[k] * (v->RequiredPrefetchPixDataBWLuma[k] + v->RequiredPrefetchPixDataBWChroma[k]) + v->cursor_bw_pre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2677
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2678 if (v->DestinationLinesForPrefetch[k] < 2)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2679 DestinationLineTimesForPrefetchLessThan2 = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2680 if (v->VRatioPrefetchY[k] > 4 || v->VRatioPrefetchC[k] > 4)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2681 VRatioPrefetchMoreThan4 = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2682 if (v->NoUrgentLatencyHiding[k] == true)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2683 v->NotEnoughUrgentLatencyHiding = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2684
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2685 if (v->NoUrgentLatencyHidingPre[k] == true)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2686 v->NotEnoughUrgentLatencyHidingPre = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2687 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2688 v->FractionOfUrgentBandwidth = MaxTotalRDBandwidthNoUrgentBurst / v->ReturnBW;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2689
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2690
eaa483642f63cf Dmytro Laktyushkin 2020-06-15 2691 if (MaxTotalRDBandwidth <= v->ReturnBW && v->NotEnoughUrgentLatencyHiding == 0 && v->NotEnoughUrgentLatencyHidingPre == 0 && !VRatioPrefetchMoreThan4
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2692 && !DestinationLineTimesForPrefetchLessThan2)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2693 v->PrefetchModeSupported = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2694 else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2695 v->PrefetchModeSupported = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2696 dml_print("DML: CalculatePrefetchSchedule ***failed***. Bandwidth violation. Results are NOT valid\n");
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2697 dml_print("DML: MaxTotalRDBandwidth:%f AvailReturnBandwidth:%f\n", MaxTotalRDBandwidth, v->ReturnBW);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2698 dml_print("DML: VRatioPrefetch %s more than 4\n", (VRatioPrefetchMoreThan4) ? "is" : "is not");
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2699 dml_print("DML: DestinationLines for Prefetch %s less than 2\n", (DestinationLineTimesForPrefetchLessThan2) ? "is" : "is not");
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2700 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2701
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2702 if (v->PrefetchModeSupported == true && v->ImmediateFlipSupport == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2703 v->BandwidthAvailableForImmediateFlip = v->ReturnBW;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2704 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2705 v->BandwidthAvailableForImmediateFlip =
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2706 v->BandwidthAvailableForImmediateFlip
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2707 - dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2708 v->ReadBandwidthPlaneLuma[k] * v->UrgentBurstFactorLuma[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2709 + v->ReadBandwidthPlaneChroma[k] * v->UrgentBurstFactorChroma[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2710 + v->cursor_bw[k] * v->UrgentBurstFactorCursor[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2711 v->DPPPerPlane[k] * (v->RequiredPrefetchPixDataBWLuma[k] * v->UrgentBurstFactorLumaPre[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2712 v->RequiredPrefetchPixDataBWChroma[k] * v->UrgentBurstFactorChromaPre[k]) +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2713 v->cursor_bw_pre[k] * v->UrgentBurstFactorCursorPre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2714 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2715
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2716 v->TotImmediateFlipBytes = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2717 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2718 v->TotImmediateFlipBytes = v->TotImmediateFlipBytes + v->DPPPerPlane[k] * (v->PDEAndMetaPTEBytesFrame[k] + v->MetaRowByte[k] + v->PixelPTEBytesPerRow[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2719 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2720 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2721 CalculateFlipSchedule(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2722 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2723 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2724 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyVMDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2725 v->UrgentExtraLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2726 v->UrgentLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2727 v->GPUVMMaxPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2728 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2729 v->HostVMMaxNonCachedPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2730 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2731 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2732 v->PDEAndMetaPTEBytesFrame[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2733 v->MetaRowByte[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2734 v->PixelPTEBytesPerRow[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2735 v->BandwidthAvailableForImmediateFlip,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2736 v->TotImmediateFlipBytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2737 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2738 v->HTotal[k] / v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2739 v->VRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2740 v->VRatioChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2741 v->Tno_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2742 v->DCCEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2743 v->dpte_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2744 v->meta_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2745 v->dpte_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2746 v->meta_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2747 &v->DestinationLinesToRequestVMInImmediateFlip[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2748 &v->DestinationLinesToRequestRowInImmediateFlip[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2749 &v->final_flip_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2750 &v->ImmediateFlipSupportedForPipe[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2751 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2752 v->total_dcn_read_bw_with_flip = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2753 v->total_dcn_read_bw_with_flip_no_urgent_burst = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2754 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2755 v->total_dcn_read_bw_with_flip = v->total_dcn_read_bw_with_flip + dml_max3(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2756 v->DPPPerPlane[k] * v->prefetch_vmrow_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2757 v->DPPPerPlane[k] * v->final_flip_bw[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2758 v->ReadBandwidthLuma[k] * v->UrgentBurstFactorLuma[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2759 v->ReadBandwidthChroma[k] * v->UrgentBurstFactorChroma[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2760 v->cursor_bw[k] * v->UrgentBurstFactorCursor[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2761 v->DPPPerPlane[k] * (v->final_flip_bw[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2762 v->RequiredPrefetchPixDataBWLuma[k] * v->UrgentBurstFactorLumaPre[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2763 v->RequiredPrefetchPixDataBWChroma[k] * v->UrgentBurstFactorChromaPre[k]) +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2764 v->cursor_bw_pre[k] * v->UrgentBurstFactorCursorPre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2765 v->total_dcn_read_bw_with_flip_no_urgent_burst =
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2766 v->total_dcn_read_bw_with_flip_no_urgent_burst +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2767 dml_max3(v->DPPPerPlane[k] * v->prefetch_vmrow_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2768 v->DPPPerPlane[k] * v->final_flip_bw[k] + v->ReadBandwidthPlaneLuma[k] + v->ReadBandwidthPlaneChroma[k] + v->cursor_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2769 v->DPPPerPlane[k] * (v->final_flip_bw[k] + v->RequiredPrefetchPixDataBWLuma[k] + v->RequiredPrefetchPixDataBWChroma[k]) + v->cursor_bw_pre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2770
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2771 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2772 v->FractionOfUrgentBandwidthImmediateFlip = v->total_dcn_read_bw_with_flip_no_urgent_burst / v->ReturnBW;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2773
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2774 v->ImmediateFlipSupported = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2775 if (v->total_dcn_read_bw_with_flip > v->ReturnBW) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2776 v->ImmediateFlipSupported = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2777 v->total_dcn_read_bw_with_flip = MaxTotalRDBandwidth;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2778 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2779 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2780 if (v->ImmediateFlipSupportedForPipe[k] == false) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2781 v->ImmediateFlipSupported = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2782 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2783 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2784 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2785 v->ImmediateFlipSupported = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2786 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2787
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2788 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
eaa483642f63cf Dmytro Laktyushkin 2020-06-15 2789 if (v->ErrorResult[k] || v->NotEnoughTimeForDynamicMetadata[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2790 v->PrefetchModeSupported = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2791 dml_print("DML: CalculatePrefetchSchedule ***failed***. Prefetch schedule violation. Results are NOT valid\n");
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2792 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2793 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2794
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2795 v->VStartupLines = v->VStartupLines + 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2796 v->PrefetchAndImmediateFlipSupported = (v->PrefetchModeSupported == true && ((!v->ImmediateFlipSupport && !v->HostVMEnable && v->ImmediateFlipRequirement != dm_immediate_flip_required) || v->ImmediateFlipSupported)) ? true : false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2797
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2798 } while (!v->PrefetchModeSupported && v->VStartupLines <= v->MaximumMaxVStartupLines);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2799 ASSERT(v->PrefetchModeSupported);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2800
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2801 //Watermarks and NB P-State/DRAM Clock Change Support
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2802 {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2803 enum clock_change_support DRAMClockChangeSupport = 0; // dummy
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2804 CalculateWatermarksAndDRAMSpeedChangeSupport(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2805 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2806 PrefetchMode,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2807 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2808 v->MaxLineBufferLines,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2809 v->LineBufferSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2810 v->DPPOutputBufferPixels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2811 v->DETBufferSizeInKByte,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2812 v->WritebackInterfaceBufferSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2813 v->DCFCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2814 v->ReturnBW,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2815 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2816 v->dpte_group_bytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2817 v->MetaChunkSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2818 v->UrgentLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2819 v->UrgentExtraLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2820 v->WritebackLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2821 v->WritebackChunkSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2822 v->SOCCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2823 v->FinalDRAMClockChangeLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2824 v->SRExitTime,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2825 v->SREnterPlusExitTime,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2826 v->DCFCLKDeepSleep,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2827 v->DPPPerPlane,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2828 v->DCCEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2829 v->DPPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2830 v->DETBufferSizeY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2831 v->DETBufferSizeC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2832 v->SwathHeightY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2833 v->SwathHeightC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2834 v->LBBitPerPixel,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2835 v->SwathWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2836 v->SwathWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2837 v->HRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2838 v->HRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2839 v->vtaps,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2840 v->VTAPsChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2841 v->VRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2842 v->VRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2843 v->HTotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2844 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2845 v->BlendingAndTiming,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2846 v->BytePerPixelDETY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2847 v->BytePerPixelDETC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2848 v->DSTXAfterScaler,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2849 v->DSTYAfterScaler,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2850 v->WritebackEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2851 v->WritebackPixelFormat,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2852 v->WritebackDestinationWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2853 v->WritebackDestinationHeight,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2854 v->WritebackSourceHeight,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2855 &DRAMClockChangeSupport,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2856 &v->UrgentWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2857 &v->WritebackUrgentWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2858 &v->DRAMClockChangeWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2859 &v->WritebackDRAMClockChangeWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2860 &v->StutterExitWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2861 &v->StutterEnterPlusExitWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2862 &v->MinActiveDRAMClockChangeLatencySupported);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2863
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2864 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2865 if (v->WritebackEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2866 if (v->BlendingAndTiming[k] == k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2867 v->ThisVStartup = v->VStartup[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2868 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2869 for (j = 0; j < v->NumberOfActivePlanes; ++j) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2870 if (v->BlendingAndTiming[k] == j) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2871 v->ThisVStartup = v->VStartup[j];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2872 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2873 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2874 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2875 v->WritebackAllowDRAMClockChangeEndPosition[k] = dml_max(0,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2876 v->ThisVStartup * v->HTotal[k] / v->PixelClock[k] - v->WritebackDRAMClockChangeWatermark);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2877 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2878 v->WritebackAllowDRAMClockChangeEndPosition[k] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2879 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2880 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2881
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2882 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2883
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2884
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2885 //Display Pipeline Delivery Time in Prefetch, Groups
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2886 CalculatePixelDeliveryTimes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2887 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2888 v->VRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2889 v->VRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2890 v->VRatioPrefetchY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2891 v->VRatioPrefetchC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2892 v->swath_width_luma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2893 v->swath_width_chroma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2894 v->DPPPerPlane,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2895 v->HRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2896 v->HRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2897 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2898 v->PSCL_THROUGHPUT_LUMA,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2899 v->PSCL_THROUGHPUT_CHROMA,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2900 v->DPPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2901 v->BytePerPixelC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2902 v->SourceScan,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2903 v->NumberOfCursors,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2904 v->CursorWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2905 v->CursorBPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2906 v->BlockWidth256BytesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2907 v->BlockHeight256BytesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2908 v->BlockWidth256BytesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2909 v->BlockHeight256BytesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2910 v->DisplayPipeLineDeliveryTimeLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2911 v->DisplayPipeLineDeliveryTimeChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2912 v->DisplayPipeLineDeliveryTimeLumaPrefetch,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2913 v->DisplayPipeLineDeliveryTimeChromaPrefetch,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2914 v->DisplayPipeRequestDeliveryTimeLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2915 v->DisplayPipeRequestDeliveryTimeChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2916 v->DisplayPipeRequestDeliveryTimeLumaPrefetch,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2917 v->DisplayPipeRequestDeliveryTimeChromaPrefetch,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2918 v->CursorRequestDeliveryTime,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2919 v->CursorRequestDeliveryTimePrefetch);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2920
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2921 CalculateMetaAndPTETimes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2922 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2923 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2924 v->MetaChunkSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2925 v->MinMetaChunkSizeBytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2926 v->HTotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2927 v->VRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2928 v->VRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2929 v->DestinationLinesToRequestRowInVBlank,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2930 v->DestinationLinesToRequestRowInImmediateFlip,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2931 v->DCCEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2932 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2933 v->BytePerPixelY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2934 v->BytePerPixelC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2935 v->SourceScan,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2936 v->dpte_row_height,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2937 v->dpte_row_height_chroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2938 v->meta_row_width,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2939 v->meta_row_width_chroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2940 v->meta_row_height,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2941 v->meta_row_height_chroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2942 v->meta_req_width,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2943 v->meta_req_width_chroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2944 v->meta_req_height,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2945 v->meta_req_height_chroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2946 v->dpte_group_bytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2947 v->PTERequestSizeY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2948 v->PTERequestSizeC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2949 v->PixelPTEReqWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2950 v->PixelPTEReqHeightY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2951 v->PixelPTEReqWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2952 v->PixelPTEReqHeightC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2953 v->dpte_row_width_luma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2954 v->dpte_row_width_chroma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2955 v->DST_Y_PER_PTE_ROW_NOM_L,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2956 v->DST_Y_PER_PTE_ROW_NOM_C,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2957 v->DST_Y_PER_META_ROW_NOM_L,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2958 v->DST_Y_PER_META_ROW_NOM_C,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2959 v->TimePerMetaChunkNominal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2960 v->TimePerChromaMetaChunkNominal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2961 v->TimePerMetaChunkVBlank,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2962 v->TimePerChromaMetaChunkVBlank,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2963 v->TimePerMetaChunkFlip,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2964 v->TimePerChromaMetaChunkFlip,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2965 v->time_per_pte_group_nom_luma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2966 v->time_per_pte_group_vblank_luma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2967 v->time_per_pte_group_flip_luma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2968 v->time_per_pte_group_nom_chroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2969 v->time_per_pte_group_vblank_chroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2970 v->time_per_pte_group_flip_chroma);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2971
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2972 CalculateVMGroupAndRequestTimes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2973 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2974 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2975 v->GPUVMMaxPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2976 v->HTotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2977 v->BytePerPixelC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2978 v->DestinationLinesToRequestVMInVBlank,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2979 v->DestinationLinesToRequestVMInImmediateFlip,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2980 v->DCCEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2981 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2982 v->dpte_row_width_luma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2983 v->dpte_row_width_chroma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2984 v->vm_group_bytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2985 v->dpde0_bytes_per_frame_ub_l,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2986 v->dpde0_bytes_per_frame_ub_c,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2987 v->meta_pte_bytes_per_frame_ub_l,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2988 v->meta_pte_bytes_per_frame_ub_c,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2989 v->TimePerVMGroupVBlank,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2990 v->TimePerVMGroupFlip,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2991 v->TimePerVMRequestVBlank,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2992 v->TimePerVMRequestFlip);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2993
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2994
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2995 // Min TTUVBlank
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2996 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2997 if (PrefetchMode == 0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2998 v->AllowDRAMClockChangeDuringVBlank[k] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2999 v->AllowDRAMSelfRefreshDuringVBlank[k] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3000 v->MinTTUVBlank[k] = dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3001 v->DRAMClockChangeWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3002 dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3003 v->StutterEnterPlusExitWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3004 v->UrgentWatermark));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3005 } else if (PrefetchMode == 1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3006 v->AllowDRAMClockChangeDuringVBlank[k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3007 v->AllowDRAMSelfRefreshDuringVBlank[k] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3008 v->MinTTUVBlank[k] = dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3009 v->StutterEnterPlusExitWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3010 v->UrgentWatermark);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3011 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3012 v->AllowDRAMClockChangeDuringVBlank[k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3013 v->AllowDRAMSelfRefreshDuringVBlank[k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3014 v->MinTTUVBlank[k] = v->UrgentWatermark;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3015 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3016 if (!v->DynamicMetadataEnable[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3017 v->MinTTUVBlank[k] = v->TCalc
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3018 + v->MinTTUVBlank[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3019 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3020
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3021 // DCC Configuration
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3022 v->ActiveDPPs = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3023 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3024 CalculateDCCConfiguration(v->DCCEnable[k], false, // We should always know the direction DCCProgrammingAssumesScanDirectionUnknown,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3025 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3026 v->SurfaceWidthY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3027 v->SurfaceWidthC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3028 v->SurfaceHeightY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3029 v->SurfaceHeightC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3030 v->DETBufferSizeInKByte * 1024,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3031 v->BlockHeight256BytesY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3032 v->BlockHeight256BytesC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3033 v->SurfaceTiling[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3034 v->BytePerPixelY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3035 v->BytePerPixelC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3036 v->BytePerPixelDETY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3037 v->BytePerPixelDETC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3038 v->SourceScan[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3039 &v->DCCYMaxUncompressedBlock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3040 &v->DCCCMaxUncompressedBlock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3041 &v->DCCYMaxCompressedBlock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3042 &v->DCCCMaxCompressedBlock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3043 &v->DCCYIndependentBlock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3044 &v->DCCCIndependentBlock[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3045 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3046
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3047 {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3048 //Maximum Bandwidth Used
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3049 double TotalWRBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3050 double MaxPerPlaneVActiveWRBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3051 double WRBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3052 double MaxUsedBW = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3053 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3054 if (v->WritebackEnable[k] == true
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3055 && v->WritebackPixelFormat[k] == dm_444_32) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3056 WRBandwidth = v->WritebackDestinationWidth[k] * v->WritebackDestinationHeight[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3057 / (v->HTotal[k] * v->WritebackSourceHeight[k] / v->PixelClock[k]) * 4;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3058 } else if (v->WritebackEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3059 WRBandwidth = v->WritebackDestinationWidth[k] * v->WritebackDestinationHeight[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3060 / (v->HTotal[k] * v->WritebackSourceHeight[k] / v->PixelClock[k]) * 8;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3061 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3062 TotalWRBandwidth = TotalWRBandwidth + WRBandwidth;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3063 MaxPerPlaneVActiveWRBandwidth = dml_max(MaxPerPlaneVActiveWRBandwidth, WRBandwidth);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3064 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3065
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3066 v->TotalDataReadBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3067 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3068 v->TotalDataReadBandwidth = v->TotalDataReadBandwidth
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3069 + v->ReadBandwidthPlaneLuma[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3070 + v->ReadBandwidthPlaneChroma[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3071 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3072
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3073 {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3074 double MaxPerPlaneVActiveRDBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3075 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3076 MaxPerPlaneVActiveRDBandwidth = dml_max(MaxPerPlaneVActiveRDBandwidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3077 v->ReadBandwidthPlaneLuma[k] + v->ReadBandwidthPlaneChroma[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3078
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3079 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3080 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3081
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3082 MaxUsedBW = MaxTotalRDBandwidth + TotalWRBandwidth;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3083 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3084
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3085 // VStartup Margin
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3086 v->VStartupMargin = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3087 v->FirstMainPlane = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3088 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3089 if (v->BlendingAndTiming[k] == k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3090 double margin = (v->MaxVStartupLines[k] - v->VStartup[k]) * v->HTotal[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3091 / v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3092 if (v->FirstMainPlane == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3093 v->VStartupMargin = margin;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3094 v->FirstMainPlane = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3095 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3096 v->VStartupMargin = dml_min(v->VStartupMargin, margin);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3097 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3098 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3099 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3100
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3101 // Stutter Efficiency
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3102 CalculateStutterEfficiency(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3103 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3104 v->ROBBufferSizeInKByte,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3105 v->TotalDataReadBandwidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3106 v->DCFCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3107 v->ReturnBW,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3108 v->SRExitTime,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3109 v->SynchronizedVBlank,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3110 v->DPPPerPlane,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3111 v->DETBufferSizeY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3112 v->BytePerPixelY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3113 v->BytePerPixelDETY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3114 v->SwathWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3115 v->SwathHeightY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3116 v->SwathHeightC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3117 v->DCCRateLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3118 v->DCCRateChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3119 v->HTotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3120 v->VTotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3121 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3122 v->VRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3123 v->SourceScan,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3124 v->BlockHeight256BytesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3125 v->BlockWidth256BytesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3126 v->BlockHeight256BytesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3127 v->BlockWidth256BytesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3128 v->DCCYMaxUncompressedBlock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3129 v->DCCCMaxUncompressedBlock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3130 v->VActive,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3131 v->DCCEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3132 v->WritebackEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3133 v->ReadBandwidthPlaneLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3134 v->ReadBandwidthPlaneChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3135 v->meta_row_bw,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3136 v->dpte_row_bw,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3137 &v->StutterEfficiencyNotIncludingVBlank,
6b85151f6bcdb7 Martin Leung 2020-08-28 3138 &v->StutterEfficiency,
6b85151f6bcdb7 Martin Leung 2020-08-28 3139 &v->StutterPeriod);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3140 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3141
:::::: The code at line 1917 was first introduced by commit
:::::: 6725a88f88a7e922e91c45bf83d320487810c192 drm/amd/display: Add DCN3 DML
:::::: TO: Bhawanpreet Lakha <Bhawanpreet.Lakha@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/dcn30/display_mode_vba_30.c:1917:13: warning: stack frame size (2296) exceeds limit (2048) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation'
Date: Mon, 27 Dec 2021 22:51:36 +0800 [thread overview]
Message-ID: <202112272211.3wi11WNb-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 109930 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: fc74e0a40e4f9fd0468e34045b0c45bba11dcbb2
commit: 02c587733c8161355a43e6e110c2e29bd0acff72 kasan: remove redundant config option
date: 9 months ago
config: x86_64-randconfig-a004-20211227 (https://download.01.org/0day-ci/archive/20211227/202112272211.3wi11WNb-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 511726c64d3b6cca66f7c54d457d586aa3129f67)
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=02c587733c8161355a43e6e110c2e29bd0acff72
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 02c587733c8161355a43e6e110c2e29bd0acff72
# 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/dcn30/display_mode_vba_30.c:3052:10: warning: variable 'MaxUsedBW' set but not used [-Wunused-but-set-variable]
double MaxUsedBW = 0;
^
>> drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.c:1917:13: warning: stack frame size (2296) exceeds limit (2048) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation' [-Wframe-larger-than]
static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation(
^
drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.c:3641:6: warning: stack frame size (2840) exceeds limit (2048) in 'dml30_ModeSupportAndSystemConfigurationFull' [-Wframe-larger-than]
void dml30_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
^
3 warnings generated.
vim +/DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation +1917 drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.c
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1916
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 @1917 static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1918 struct display_mode_lib *mode_lib)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1919 {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1920 struct vba_vars_st *v = &mode_lib->vba;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1921 unsigned int j, k;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1922 long ReorderBytes = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1923 unsigned int PrefetchMode = v->PrefetchModePerState[v->VoltageLevel][v->maxMpcComb];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1924 double MaxTotalRDBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1925 double MaxTotalRDBandwidthNoUrgentBurst = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1926 bool DestinationLineTimesForPrefetchLessThan2 = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1927 bool VRatioPrefetchMoreThan4 = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1928 double TWait;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1929
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1930 v->WritebackDISPCLK = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1931 v->DISPCLKWithRamping = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1932 v->DISPCLKWithoutRamping = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1933 v->GlobalDPPCLK = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1934 /* DAL custom code: need to update ReturnBW in case min dcfclk is overriden */
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1935 v->IdealSDPPortBandwidthPerState[v->VoltageLevel][v->maxMpcComb] = dml_min3(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1936 v->ReturnBusWidth * v->DCFCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1937 v->DRAMSpeedPerState[v->VoltageLevel] * v->NumberOfChannels * v->DRAMChannelWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1938 v->FabricClockPerState[v->VoltageLevel] * v->FabricDatapathToDCNDataReturn);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1939 if (v->HostVMEnable != true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1940 v->ReturnBW = v->IdealSDPPortBandwidthPerState[v->VoltageLevel][v->maxMpcComb] * v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelDataOnly / 100;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1941 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1942 v->ReturnBW = v->IdealSDPPortBandwidthPerState[v->VoltageLevel][v->maxMpcComb] * v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData / 100;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1943 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1944 /* End DAL custom code */
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1945
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1946 // DISPCLK and DPPCLK Calculation
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1947 //
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1948 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1949 if (v->WritebackEnable[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1950 v->WritebackDISPCLK = dml_max(v->WritebackDISPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1951 dml30_CalculateWriteBackDISPCLK(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1952 v->WritebackPixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1953 v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1954 v->WritebackHRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1955 v->WritebackVRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1956 v->WritebackHTaps[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1957 v->WritebackVTaps[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1958 v->WritebackSourceWidth[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1959 v->WritebackDestinationWidth[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1960 v->HTotal[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1961 v->WritebackLineBufferSize));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1962 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1963 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1964
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1965 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1966 if (v->HRatio[k] > 1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1967 v->PSCL_THROUGHPUT_LUMA[k] = dml_min(v->MaxDCHUBToPSCLThroughput,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1968 v->MaxPSCLToLBThroughput * v->HRatio[k] / dml_ceil(v->htaps[k] / 6.0, 1));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1969 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1970 v->PSCL_THROUGHPUT_LUMA[k] = dml_min(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1971 v->MaxDCHUBToPSCLThroughput,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1972 v->MaxPSCLToLBThroughput);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1973 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1974
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1975 v->DPPCLKUsingSingleDPPLuma = v->PixelClock[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1976 * dml_max(v->vtaps[k] / 6.0 * dml_min(1.0, v->HRatio[k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1977 dml_max(v->HRatio[k] * v->VRatio[k] / v->PSCL_THROUGHPUT_LUMA[k], 1.0));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1978
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1979 if ((v->htaps[k] > 6 || v->vtaps[k] > 6)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1980 && v->DPPCLKUsingSingleDPPLuma < 2 * v->PixelClock[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1981 v->DPPCLKUsingSingleDPPLuma = 2 * v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1982 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1983
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1984 if ((v->SourcePixelFormat[k] != dm_420_8
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1985 && v->SourcePixelFormat[k] != dm_420_10
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1986 && v->SourcePixelFormat[k] != dm_420_12
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1987 && v->SourcePixelFormat[k] != dm_rgbe_alpha)) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1988 v->PSCL_THROUGHPUT_CHROMA[k] = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1989 v->DPPCLKUsingSingleDPP[k] = v->DPPCLKUsingSingleDPPLuma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1990 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1991 if (v->HRatioChroma[k] > 1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1992 v->PSCL_THROUGHPUT_CHROMA[k] = dml_min(v->MaxDCHUBToPSCLThroughput,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1993 v->MaxPSCLToLBThroughput * v->HRatioChroma[k] / dml_ceil(v->HTAPsChroma[k] / 6.0, 1.0));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1994 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1995 v->PSCL_THROUGHPUT_CHROMA[k] = dml_min(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1996 v->MaxDCHUBToPSCLThroughput,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1997 v->MaxPSCLToLBThroughput);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1998 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 1999 v->DPPCLKUsingSingleDPPChroma = v->PixelClock[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2000 * dml_max3(v->VTAPsChroma[k] / 6.0 * dml_min(1.0, v->HRatioChroma[k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2001 v->HRatioChroma[k] * v->VRatioChroma[k] / v->PSCL_THROUGHPUT_CHROMA[k], 1.0);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2002
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2003 if ((v->HTAPsChroma[k] > 6 || v->VTAPsChroma[k] > 6)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2004 && v->DPPCLKUsingSingleDPPChroma
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2005 < 2 * v->PixelClock[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2006 v->DPPCLKUsingSingleDPPChroma = 2
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2007 * v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2008 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2009
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2010 v->DPPCLKUsingSingleDPP[k] = dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2011 v->DPPCLKUsingSingleDPPLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2012 v->DPPCLKUsingSingleDPPChroma);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2013 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2014 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2015
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2016 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2017 if (v->BlendingAndTiming[k] != k)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2018 continue;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2019 if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_4to1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2020 v->DISPCLKWithRamping = dml_max(v->DISPCLKWithRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2021 v->PixelClock[k] / 4 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2022 * (1 + v->DISPCLKRampingMargin / 100));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2023 v->DISPCLKWithoutRamping = dml_max(v->DISPCLKWithoutRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2024 v->PixelClock[k] / 4 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2025 } else if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_2to1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2026 v->DISPCLKWithRamping = dml_max(v->DISPCLKWithRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2027 v->PixelClock[k] / 2 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2028 * (1 + v->DISPCLKRampingMargin / 100));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2029 v->DISPCLKWithoutRamping = dml_max(v->DISPCLKWithoutRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2030 v->PixelClock[k] / 2 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2031 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2032 v->DISPCLKWithRamping = dml_max(v->DISPCLKWithRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2033 v->PixelClock[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2034 * (1 + v->DISPCLKRampingMargin / 100));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2035 v->DISPCLKWithoutRamping = dml_max(v->DISPCLKWithoutRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2036 v->PixelClock[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2037 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2038 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2039
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2040 v->DISPCLKWithRamping = dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2041 v->DISPCLKWithRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2042 v->WritebackDISPCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2043 v->DISPCLKWithoutRamping = dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2044 v->DISPCLKWithoutRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2045 v->WritebackDISPCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2046
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2047 ASSERT(v->DISPCLKDPPCLKVCOSpeed != 0);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2048 v->DISPCLKWithRampingRoundedToDFSGranularity = RoundToDFSGranularityUp(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2049 v->DISPCLKWithRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2050 v->DISPCLKDPPCLKVCOSpeed);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2051 v->DISPCLKWithoutRampingRoundedToDFSGranularity = RoundToDFSGranularityUp(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2052 v->DISPCLKWithoutRamping,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2053 v->DISPCLKDPPCLKVCOSpeed);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2054 v->MaxDispclkRoundedToDFSGranularity = RoundToDFSGranularityDown(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2055 v->soc.clock_limits[mode_lib->soc.num_states].dispclk_mhz,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2056 v->DISPCLKDPPCLKVCOSpeed);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2057 if (v->DISPCLKWithoutRampingRoundedToDFSGranularity
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2058 > v->MaxDispclkRoundedToDFSGranularity) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2059 v->DISPCLK_calculated =
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2060 v->DISPCLKWithoutRampingRoundedToDFSGranularity;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2061 } else if (v->DISPCLKWithRampingRoundedToDFSGranularity
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2062 > v->MaxDispclkRoundedToDFSGranularity) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2063 v->DISPCLK_calculated = v->MaxDispclkRoundedToDFSGranularity;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2064 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2065 v->DISPCLK_calculated =
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2066 v->DISPCLKWithRampingRoundedToDFSGranularity;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2067 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2068 v->DISPCLK = v->DISPCLK_calculated;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2069 DTRACE(" dispclk_mhz (calculated) = %f", v->DISPCLK_calculated);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2070
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2071 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2072 v->DPPCLK_calculated[k] = v->DPPCLKUsingSingleDPP[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2073 / v->DPPPerPlane[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2074 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2075 v->GlobalDPPCLK = dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2076 v->GlobalDPPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2077 v->DPPCLK_calculated[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2078 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2079 v->GlobalDPPCLK = RoundToDFSGranularityUp(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2080 v->GlobalDPPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2081 v->DISPCLKDPPCLKVCOSpeed);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2082 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2083 v->DPPCLK_calculated[k] = v->GlobalDPPCLK / 255
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2084 * dml_ceil(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2085 v->DPPCLK_calculated[k] * 255.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2086 / v->GlobalDPPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2087 1);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2088 DTRACE(" dppclk_mhz[%i] (calculated) = %f", k, v->DPPCLK_calculated[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2089 v->DPPCLK[k] = v->DPPCLK_calculated[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2090 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2091
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2092 // Urgent and B P-State/DRAM Clock Change Watermark
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2093 DTRACE(" dcfclk_mhz = %f", v->DCFCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2094 DTRACE(" return_bus_bw = %f", v->ReturnBW);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2095
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2096 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2097 CalculateBytePerPixelAnd256BBlockSizes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2098 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2099 v->SurfaceTiling[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2100 &v->BytePerPixelY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2101 &v->BytePerPixelC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2102 &v->BytePerPixelDETY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2103 &v->BytePerPixelDETC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2104 &v->BlockHeight256BytesY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2105 &v->BlockHeight256BytesC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2106 &v->BlockWidth256BytesY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2107 &v->BlockWidth256BytesC[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2108 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2109
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2110 CalculateSwathWidth(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2111 false,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2112 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2113 v->SourcePixelFormat,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2114 v->SourceScan,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2115 v->ViewportWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2116 v->ViewportHeight,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2117 v->SurfaceWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2118 v->SurfaceWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2119 v->SurfaceHeightY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2120 v->SurfaceHeightC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2121 v->ODMCombineEnabled,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2122 v->BytePerPixelY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2123 v->BytePerPixelC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2124 v->BlockHeight256BytesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2125 v->BlockHeight256BytesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2126 v->BlockWidth256BytesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2127 v->BlockWidth256BytesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2128 v->BlendingAndTiming,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2129 v->HActive,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2130 v->HRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2131 v->DPPPerPlane,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2132 v->SwathWidthSingleDPPY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2133 v->SwathWidthSingleDPPC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2134 v->SwathWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2135 v->SwathWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2136 v->dummyinteger3,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2137 v->dummyinteger4,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2138 v->swath_width_luma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2139 v->swath_width_chroma_ub);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2140
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2141
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2142 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2143 v->ReadBandwidthPlaneLuma[k] = v->SwathWidthSingleDPPY[k] * v->BytePerPixelY[k] / (v->HTotal[k] / v->PixelClock[k]) * v->VRatio[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2144 v->ReadBandwidthPlaneChroma[k] = v->SwathWidthSingleDPPC[k] * v->BytePerPixelC[k] / (v->HTotal[k] / v->PixelClock[k]) * v->VRatioChroma[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2145 DTRACE("read_bw[%i] = %fBps", k, v->ReadBandwidthPlaneLuma[k] + v->ReadBandwidthPlaneChroma[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2146 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2147
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2148
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2149 // DCFCLK Deep Sleep
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2150 CalculateDCFCLKDeepSleep(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2151 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2152 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2153 v->BytePerPixelY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2154 v->BytePerPixelC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2155 v->VRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2156 v->VRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2157 v->SwathWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2158 v->SwathWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2159 v->DPPPerPlane,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2160 v->HRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2161 v->HRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2162 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2163 v->PSCL_THROUGHPUT_LUMA,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2164 v->PSCL_THROUGHPUT_CHROMA,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2165 v->DPPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2166 v->ReadBandwidthPlaneLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2167 v->ReadBandwidthPlaneChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2168 v->ReturnBusWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2169 &v->DCFCLKDeepSleep);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2170
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2171 // DSCCLK
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2172 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2173 if ((v->BlendingAndTiming[k] != k) || !v->DSCEnabled[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2174 v->DSCCLK_calculated[k] = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2175 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2176 if (v->OutputFormat[k] == dm_420)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2177 v->DSCFormatFactor = 2;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2178 else if (v->OutputFormat[k] == dm_444)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2179 v->DSCFormatFactor = 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2180 else if (v->OutputFormat[k] == dm_n422)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2181 v->DSCFormatFactor = 2;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2182 else
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2183 v->DSCFormatFactor = 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2184 if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_4to1)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2185 v->DSCCLK_calculated[k] = v->PixelClockBackEnd[k] / 12
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2186 / v->DSCFormatFactor / (1 - v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2187 else if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_2to1)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2188 v->DSCCLK_calculated[k] = v->PixelClockBackEnd[k] / 6
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2189 / v->DSCFormatFactor / (1 - v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2190 else
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2191 v->DSCCLK_calculated[k] = v->PixelClockBackEnd[k] / 3
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2192 / v->DSCFormatFactor / (1 - v->DISPCLKDPPCLKDSCCLKDownSpreading / 100);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2193 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2194 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2195
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2196 // DSC Delay
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2197 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2198 double BPP = v->OutputBppPerState[k][v->VoltageLevel];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2199
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2200 if (v->DSCEnabled[k] && BPP != 0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2201 if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_disabled) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2202 v->DSCDelay[k] = dscceComputeDelay(v->DSCInputBitPerComponent[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2203 BPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2204 dml_ceil((double) v->HActive[k] / v->NumberOfDSCSlices[k], 1),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2205 v->NumberOfDSCSlices[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2206 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2207 v->Output[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2208 + dscComputeDelay(v->OutputFormat[k], v->Output[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2209 } else if (v->ODMCombineEnabled[k] == dm_odm_combine_mode_2to1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2210 v->DSCDelay[k] = 2 * dscceComputeDelay(v->DSCInputBitPerComponent[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2211 BPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2212 dml_ceil((double) v->HActive[k] / v->NumberOfDSCSlices[k], 1),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2213 v->NumberOfDSCSlices[k] / 2.0,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2214 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2215 v->Output[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2216 + dscComputeDelay(v->OutputFormat[k], v->Output[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2217 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2218 v->DSCDelay[k] = 4 * dscceComputeDelay(v->DSCInputBitPerComponent[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2219 BPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2220 dml_ceil((double) v->HActive[k] / v->NumberOfDSCSlices[k], 1),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2221 v->NumberOfDSCSlices[k] / 4.0,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2222 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2223 v->Output[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2224 + dscComputeDelay(v->OutputFormat[k], v->Output[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2225 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2226 v->DSCDelay[k] = v->DSCDelay[k] * v->PixelClock[k] / v->PixelClockBackEnd[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2227 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2228 v->DSCDelay[k] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2229 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2230 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2231
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2232 for (k = 0; k < v->NumberOfActivePlanes; ++k)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2233 for (j = 0; j < v->NumberOfActivePlanes; ++j) // NumberOfPlanes
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2234 if (j != k && v->BlendingAndTiming[k] == j
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2235 && v->DSCEnabled[j])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2236 v->DSCDelay[k] = v->DSCDelay[j];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2237
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2238 // Prefetch
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2239 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2240 unsigned int PDEAndMetaPTEBytesFrameY = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2241 unsigned int PixelPTEBytesPerRowY = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2242 unsigned int MetaRowByteY = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2243 unsigned int MetaRowByteC = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2244 unsigned int PDEAndMetaPTEBytesFrameC = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2245 unsigned int PixelPTEBytesPerRowC = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2246 bool PTEBufferSizeNotExceededY = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2247 bool PTEBufferSizeNotExceededC = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2248
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2249
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2250 if (v->SourcePixelFormat[k] == dm_420_8 || v->SourcePixelFormat[k] == dm_420_10 || v->SourcePixelFormat[k] == dm_420_12 || v->SourcePixelFormat[k] == dm_rgbe_alpha) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2251 if ((v->SourcePixelFormat[k] == dm_420_10 || v->SourcePixelFormat[k] == dm_420_12) && v->SourceScan[k] != dm_vert) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2252 v->PTEBufferSizeInRequestsForLuma = (v->PTEBufferSizeInRequestsLuma + v->PTEBufferSizeInRequestsChroma) / 2;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2253 v->PTEBufferSizeInRequestsForChroma = v->PTEBufferSizeInRequestsForLuma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2254 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2255 v->PTEBufferSizeInRequestsForLuma = v->PTEBufferSizeInRequestsLuma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2256 v->PTEBufferSizeInRequestsForChroma = v->PTEBufferSizeInRequestsChroma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2257
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2258 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2259 PDEAndMetaPTEBytesFrameC = CalculateVMAndRowBytes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2260 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2261 v->DCCEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2262 v->BlockHeight256BytesC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2263 v->BlockWidth256BytesC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2264 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2265 v->SurfaceTiling[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2266 v->BytePerPixelC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2267 v->SourceScan[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2268 v->SwathWidthC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2269 v->ViewportHeightChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2270 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2271 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2272 v->HostVMMaxNonCachedPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2273 v->GPUVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2274 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2275 v->PTEBufferSizeInRequestsForChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2276 v->PitchC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2277 v->DCCMetaPitchC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2278 &v->MacroTileWidthC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2279 &MetaRowByteC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2280 &PixelPTEBytesPerRowC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2281 &PTEBufferSizeNotExceededC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2282 &v->dpte_row_width_chroma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2283 &v->dpte_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2284 &v->meta_req_width_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2285 &v->meta_req_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2286 &v->meta_row_width_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2287 &v->meta_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2288 &v->dummyinteger1,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2289 &v->dummyinteger2,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2290 &v->PixelPTEReqWidthC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2291 &v->PixelPTEReqHeightC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2292 &v->PTERequestSizeC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2293 &v->dpde0_bytes_per_frame_ub_c[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2294 &v->meta_pte_bytes_per_frame_ub_c[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2295
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2296 v->PrefetchSourceLinesC[k] = CalculatePrefetchSourceLines(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2297 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2298 v->VRatioChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2299 v->VTAPsChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2300 v->Interlace[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2301 v->ProgressiveToInterlaceUnitInOPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2302 v->SwathHeightC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2303 v->ViewportYStartC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2304 &v->VInitPreFillC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2305 &v->MaxNumSwathC[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2306 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2307 v->PTEBufferSizeInRequestsForLuma = v->PTEBufferSizeInRequestsLuma + v->PTEBufferSizeInRequestsChroma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2308 v->PTEBufferSizeInRequestsForChroma = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2309 PixelPTEBytesPerRowC = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2310 PDEAndMetaPTEBytesFrameC = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2311 MetaRowByteC = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2312 v->MaxNumSwathC[k] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2313 v->PrefetchSourceLinesC[k] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2314 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2315
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2316 PDEAndMetaPTEBytesFrameY = CalculateVMAndRowBytes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2317 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2318 v->DCCEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2319 v->BlockHeight256BytesY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2320 v->BlockWidth256BytesY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2321 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2322 v->SurfaceTiling[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2323 v->BytePerPixelY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2324 v->SourceScan[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2325 v->SwathWidthY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2326 v->ViewportHeight[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2327 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2328 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2329 v->HostVMMaxNonCachedPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2330 v->GPUVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2331 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2332 v->PTEBufferSizeInRequestsForLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2333 v->PitchY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2334 v->DCCMetaPitchY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2335 &v->MacroTileWidthY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2336 &MetaRowByteY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2337 &PixelPTEBytesPerRowY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2338 &PTEBufferSizeNotExceededY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2339 &v->dpte_row_width_luma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2340 &v->dpte_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2341 &v->meta_req_width[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2342 &v->meta_req_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2343 &v->meta_row_width[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2344 &v->meta_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2345 &v->vm_group_bytes[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2346 &v->dpte_group_bytes[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2347 &v->PixelPTEReqWidthY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2348 &v->PixelPTEReqHeightY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2349 &v->PTERequestSizeY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2350 &v->dpde0_bytes_per_frame_ub_l[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2351 &v->meta_pte_bytes_per_frame_ub_l[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2352
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2353 v->PrefetchSourceLinesY[k] = CalculatePrefetchSourceLines(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2354 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2355 v->VRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2356 v->vtaps[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2357 v->Interlace[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2358 v->ProgressiveToInterlaceUnitInOPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2359 v->SwathHeightY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2360 v->ViewportYStartY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2361 &v->VInitPreFillY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2362 &v->MaxNumSwathY[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2363 v->PixelPTEBytesPerRow[k] = PixelPTEBytesPerRowY + PixelPTEBytesPerRowC;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2364 v->PDEAndMetaPTEBytesFrame[k] = PDEAndMetaPTEBytesFrameY
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2365 + PDEAndMetaPTEBytesFrameC;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2366 v->MetaRowByte[k] = MetaRowByteY + MetaRowByteC;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2367
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2368 CalculateRowBandwidth(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2369 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2370 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2371 v->VRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2372 v->VRatioChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2373 v->DCCEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2374 v->HTotal[k] / v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2375 MetaRowByteY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2376 MetaRowByteC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2377 v->meta_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2378 v->meta_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2379 PixelPTEBytesPerRowY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2380 PixelPTEBytesPerRowC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2381 v->dpte_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2382 v->dpte_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2383 &v->meta_row_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2384 &v->dpte_row_bw[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2385 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2386
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2387 v->TotalDCCActiveDPP = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2388 v->TotalActiveDPP = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2389 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2390 v->TotalActiveDPP = v->TotalActiveDPP
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2391 + v->DPPPerPlane[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2392 if (v->DCCEnable[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2393 v->TotalDCCActiveDPP = v->TotalDCCActiveDPP
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2394 + v->DPPPerPlane[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2395 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2396
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2397
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2398 ReorderBytes = v->NumberOfChannels * dml_max3(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2399 v->UrgentOutOfOrderReturnPerChannelPixelDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2400 v->UrgentOutOfOrderReturnPerChannelPixelMixedWithVMData,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2401 v->UrgentOutOfOrderReturnPerChannelVMDataOnly);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2402
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2403 v->UrgentExtraLatency = CalculateExtraLatency(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2404 v->RoundTripPingLatencyCycles,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2405 ReorderBytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2406 v->DCFCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2407 v->TotalActiveDPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2408 v->PixelChunkSizeInKByte,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2409 v->TotalDCCActiveDPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2410 v->MetaChunkSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2411 v->ReturnBW,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2412 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2413 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2414 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2415 v->DPPPerPlane,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2416 v->dpte_group_bytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2417 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2418 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyVMDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2419 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2420 v->HostVMMaxNonCachedPageTableLevels);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2421
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2422 v->TCalc = 24.0 / v->DCFCLKDeepSleep;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2423
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2424 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2425 if (v->BlendingAndTiming[k] == k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2426 if (v->WritebackEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2427 v->WritebackDelay[v->VoltageLevel][k] = v->WritebackLatency +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2428 CalculateWriteBackDelay(v->WritebackPixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2429 v->WritebackHRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2430 v->WritebackVRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2431 v->WritebackVTaps[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2432 v->WritebackDestinationWidth[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2433 v->WritebackDestinationHeight[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2434 v->WritebackSourceHeight[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2435 v->HTotal[k]) / v->DISPCLK;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2436 } else
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2437 v->WritebackDelay[v->VoltageLevel][k] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2438 for (j = 0; j < v->NumberOfActivePlanes; ++j) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2439 if (v->BlendingAndTiming[j] == k
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2440 && v->WritebackEnable[j] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2441 v->WritebackDelay[v->VoltageLevel][k] = dml_max(v->WritebackDelay[v->VoltageLevel][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2442 v->WritebackLatency + CalculateWriteBackDelay(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2443 v->WritebackPixelFormat[j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2444 v->WritebackHRatio[j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2445 v->WritebackVRatio[j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2446 v->WritebackVTaps[j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2447 v->WritebackDestinationWidth[j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2448 v->WritebackDestinationHeight[j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2449 v->WritebackSourceHeight[j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2450 v->HTotal[k]) / v->DISPCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2451 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2452 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2453 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2454 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2455
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2456 for (k = 0; k < v->NumberOfActivePlanes; ++k)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2457 for (j = 0; j < v->NumberOfActivePlanes; ++j)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2458 if (v->BlendingAndTiming[k] == j)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2459 v->WritebackDelay[v->VoltageLevel][k] = v->WritebackDelay[v->VoltageLevel][j];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2460
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2461 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2462 v->MaxVStartupLines[k] = v->VTotal[k] - v->VActive[k] - dml_max(1.0, dml_ceil((double) v->WritebackDelay[v->VoltageLevel][k] / (v->HTotal[k] / v->PixelClock[k]), 1));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2463 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2464
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2465 v->MaximumMaxVStartupLines = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2466 for (k = 0; k < v->NumberOfActivePlanes; ++k)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2467 v->MaximumMaxVStartupLines = dml_max(v->MaximumMaxVStartupLines, v->MaxVStartupLines[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2468
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2469 if (v->DRAMClockChangeLatencyOverride > 0.0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2470 v->FinalDRAMClockChangeLatency = v->DRAMClockChangeLatencyOverride;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2471 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2472 v->FinalDRAMClockChangeLatency = v->DRAMClockChangeLatency;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2473 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2474 v->UrgentLatency = CalculateUrgentLatency(v->UrgentLatencyPixelDataOnly, v->UrgentLatencyPixelMixedWithVMData, v->UrgentLatencyVMDataOnly, v->DoUrgentLatencyAdjustment, v->UrgentLatencyAdjustmentFabricClockComponent, v->UrgentLatencyAdjustmentFabricClockReference, v->FabricClock);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2475
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2476
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2477 v->FractionOfUrgentBandwidth = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2478 v->FractionOfUrgentBandwidthImmediateFlip = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2479
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2480 v->VStartupLines = 13;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2481
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2482 do {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2483 MaxTotalRDBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2484 MaxTotalRDBandwidthNoUrgentBurst = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2485 DestinationLineTimesForPrefetchLessThan2 = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2486 VRatioPrefetchMoreThan4 = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2487 TWait = CalculateTWait(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2488 PrefetchMode,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2489 v->FinalDRAMClockChangeLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2490 v->UrgentLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2491 v->SREnterPlusExitTime);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2492
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2493 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2494 Pipe myPipe = { 0 };
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2495
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2496 myPipe.DPPCLK = v->DPPCLK[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2497 myPipe.DISPCLK = v->DISPCLK;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2498 myPipe.PixelClock = v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2499 myPipe.DCFCLKDeepSleep = v->DCFCLKDeepSleep;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2500 myPipe.DPPPerPlane = v->DPPPerPlane[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2501 myPipe.ScalerEnabled = v->ScalerEnabled[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2502 myPipe.SourceScan = v->SourceScan[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2503 myPipe.BlockWidth256BytesY = v->BlockWidth256BytesY[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2504 myPipe.BlockHeight256BytesY = v->BlockHeight256BytesY[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2505 myPipe.BlockWidth256BytesC = v->BlockWidth256BytesC[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2506 myPipe.BlockHeight256BytesC = v->BlockHeight256BytesC[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2507 myPipe.InterlaceEnable = v->Interlace[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2508 myPipe.NumberOfCursors = v->NumberOfCursors[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2509 myPipe.VBlank = v->VTotal[k] - v->VActive[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2510 myPipe.HTotal = v->HTotal[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2511 myPipe.DCCEnable = v->DCCEnable[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2512 myPipe.ODMCombineEnabled = !!v->ODMCombineEnabled[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2513
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2514 v->ErrorResult[k] = CalculatePrefetchSchedule(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2515 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2516 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2517 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyVMDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2518 &myPipe,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2519 v->DSCDelay[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2520 v->DPPCLKDelaySubtotal
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2521 + v->DPPCLKDelayCNVCFormater,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2522 v->DPPCLKDelaySCL,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2523 v->DPPCLKDelaySCLLBOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2524 v->DPPCLKDelayCNVCCursor,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2525 v->DISPCLKDelaySubtotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2526 (unsigned int) (v->SwathWidthY[k] / v->HRatio[k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2527 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2528 v->MaxInterDCNTileRepeaters,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2529 dml_min(v->VStartupLines, v->MaxVStartupLines[k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2530 v->MaxVStartupLines[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2531 v->GPUVMMaxPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2532 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2533 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2534 v->HostVMMaxNonCachedPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2535 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2536 v->DynamicMetadataEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2537 v->DynamicMetadataVMEnabled,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2538 v->DynamicMetadataLinesBeforeActiveRequired[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2539 v->DynamicMetadataTransmittedBytes[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2540 v->UrgentLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2541 v->UrgentExtraLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2542 v->TCalc,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2543 v->PDEAndMetaPTEBytesFrame[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2544 v->MetaRowByte[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2545 v->PixelPTEBytesPerRow[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2546 v->PrefetchSourceLinesY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2547 v->SwathWidthY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2548 v->BytePerPixelY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2549 v->VInitPreFillY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2550 v->MaxNumSwathY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2551 v->PrefetchSourceLinesC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2552 v->SwathWidthC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2553 v->BytePerPixelC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2554 v->VInitPreFillC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2555 v->MaxNumSwathC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2556 v->swath_width_luma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2557 v->swath_width_chroma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2558 v->SwathHeightY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2559 v->SwathHeightC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2560 TWait,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2561 v->ProgressiveToInterlaceUnitInOPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2562 &v->DSTXAfterScaler[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2563 &v->DSTYAfterScaler[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2564 &v->DestinationLinesForPrefetch[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2565 &v->PrefetchBandwidth[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2566 &v->DestinationLinesToRequestVMInVBlank[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2567 &v->DestinationLinesToRequestRowInVBlank[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2568 &v->VRatioPrefetchY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2569 &v->VRatioPrefetchC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2570 &v->RequiredPrefetchPixDataBWLuma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2571 &v->RequiredPrefetchPixDataBWChroma[k],
eaa483642f63cf Dmytro Laktyushkin 2020-06-15 2572 &v->NotEnoughTimeForDynamicMetadata[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2573 &v->Tno_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2574 &v->prefetch_vmrow_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2575 &v->Tdmdl_vm[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2576 &v->Tdmdl[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2577 &v->VUpdateOffsetPix[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2578 &v->VUpdateWidthPix[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2579 &v->VReadyOffsetPix[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2580 if (v->BlendingAndTiming[k] == k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2581 double TotalRepeaterDelayTime = v->MaxInterDCNTileRepeaters * (2 / v->DPPCLK[k] + 3 / v->DISPCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2582 v->VUpdateWidthPix[k] = (14 / v->DCFCLKDeepSleep + 12 / v->DPPCLK[k] + TotalRepeaterDelayTime) * v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2583 v->VReadyOffsetPix[k] = dml_max(150.0 / v->DPPCLK[k], TotalRepeaterDelayTime + 20 / v->DCFCLKDeepSleep + 10 / v->DPPCLK[k]) * v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2584 v->VUpdateOffsetPix[k] = dml_ceil(v->HTotal[k] / 4.0, 1);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2585 v->VStartup[k] = dml_min(v->VStartupLines, v->MaxVStartupLines[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2586 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2587 int x = v->BlendingAndTiming[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2588 double TotalRepeaterDelayTime = v->MaxInterDCNTileRepeaters * (2 / v->DPPCLK[k] + 3 / v->DISPCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2589 v->VUpdateWidthPix[k] = (14 / v->DCFCLKDeepSleep + 12 / v->DPPCLK[k] + TotalRepeaterDelayTime) * v->PixelClock[x];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2590 v->VReadyOffsetPix[k] = dml_max(150.0 / v->DPPCLK[k], TotalRepeaterDelayTime + 20 / v->DCFCLKDeepSleep + 10 / v->DPPCLK[k]) * v->PixelClock[x];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2591 v->VUpdateOffsetPix[k] = dml_ceil(v->HTotal[x] / 4.0, 1);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2592 if (!v->MaxVStartupLines[x])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2593 v->MaxVStartupLines[x] = v->MaxVStartupLines[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2594 v->VStartup[k] = dml_min(v->VStartupLines, v->MaxVStartupLines[x]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2595 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2596 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2597
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2598 v->NotEnoughUrgentLatencyHiding = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2599 v->NotEnoughUrgentLatencyHidingPre = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2600
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2601 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2602 v->cursor_bw[k] = v->NumberOfCursors[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2603 * v->CursorWidth[k][0] * v->CursorBPP[k][0]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2604 / 8.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2605 / (v->HTotal[k] / v->PixelClock[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2606 * v->VRatio[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2607 v->cursor_bw_pre[k] = v->NumberOfCursors[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2608 * v->CursorWidth[k][0] * v->CursorBPP[k][0]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2609 / 8.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2610 / (v->HTotal[k] / v->PixelClock[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2611 * v->VRatioPrefetchY[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2612
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2613 CalculateUrgentBurstFactor(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2614 v->swath_width_luma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2615 v->swath_width_chroma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2616 v->DETBufferSizeInKByte,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2617 v->SwathHeightY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2618 v->SwathHeightC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2619 v->HTotal[k] / v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2620 v->UrgentLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2621 v->CursorBufferSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2622 v->CursorWidth[k][0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2623 v->CursorBPP[k][0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2624 v->VRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2625 v->VRatioChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2626 v->BytePerPixelDETY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2627 v->BytePerPixelDETC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2628 v->DETBufferSizeY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2629 v->DETBufferSizeC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2630 &v->UrgentBurstFactorCursor[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2631 &v->UrgentBurstFactorLuma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2632 &v->UrgentBurstFactorChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2633 &v->NoUrgentLatencyHiding[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2634
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2635 CalculateUrgentBurstFactor(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2636 v->swath_width_luma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2637 v->swath_width_chroma_ub[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2638 v->DETBufferSizeInKByte,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2639 v->SwathHeightY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2640 v->SwathHeightC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2641 v->HTotal[k] / v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2642 v->UrgentLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2643 v->CursorBufferSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2644 v->CursorWidth[k][0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2645 v->CursorBPP[k][0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2646 v->VRatioPrefetchY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2647 v->VRatioPrefetchC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2648 v->BytePerPixelDETY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2649 v->BytePerPixelDETC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2650 v->DETBufferSizeY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2651 v->DETBufferSizeC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2652 &v->UrgentBurstFactorCursorPre[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2653 &v->UrgentBurstFactorLumaPre[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2654 &v->UrgentBurstFactorChromaPre[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2655 &v->NoUrgentLatencyHidingPre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2656
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2657 MaxTotalRDBandwidth = MaxTotalRDBandwidth +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2658 dml_max3(v->DPPPerPlane[k] * v->prefetch_vmrow_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2659 v->ReadBandwidthPlaneLuma[k] *
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2660 v->UrgentBurstFactorLuma[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2661 v->ReadBandwidthPlaneChroma[k] *
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2662 v->UrgentBurstFactorChroma[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2663 v->cursor_bw[k] *
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2664 v->UrgentBurstFactorCursor[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2665 v->DPPPerPlane[k] * (v->meta_row_bw[k] + v->dpte_row_bw[k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2666 v->DPPPerPlane[k] * (v->RequiredPrefetchPixDataBWLuma[k] * v->UrgentBurstFactorLumaPre[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2667 v->RequiredPrefetchPixDataBWChroma[k] * v->UrgentBurstFactorChromaPre[k]) + v->cursor_bw_pre[k] *
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2668 v->UrgentBurstFactorCursorPre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2669
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2670 MaxTotalRDBandwidthNoUrgentBurst = MaxTotalRDBandwidthNoUrgentBurst +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2671 dml_max3(v->DPPPerPlane[k] * v->prefetch_vmrow_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2672 v->ReadBandwidthPlaneLuma[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2673 v->ReadBandwidthPlaneChroma[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2674 v->cursor_bw[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2675 v->DPPPerPlane[k] * (v->meta_row_bw[k] + v->dpte_row_bw[k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2676 v->DPPPerPlane[k] * (v->RequiredPrefetchPixDataBWLuma[k] + v->RequiredPrefetchPixDataBWChroma[k]) + v->cursor_bw_pre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2677
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2678 if (v->DestinationLinesForPrefetch[k] < 2)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2679 DestinationLineTimesForPrefetchLessThan2 = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2680 if (v->VRatioPrefetchY[k] > 4 || v->VRatioPrefetchC[k] > 4)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2681 VRatioPrefetchMoreThan4 = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2682 if (v->NoUrgentLatencyHiding[k] == true)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2683 v->NotEnoughUrgentLatencyHiding = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2684
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2685 if (v->NoUrgentLatencyHidingPre[k] == true)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2686 v->NotEnoughUrgentLatencyHidingPre = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2687 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2688 v->FractionOfUrgentBandwidth = MaxTotalRDBandwidthNoUrgentBurst / v->ReturnBW;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2689
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2690
eaa483642f63cf Dmytro Laktyushkin 2020-06-15 2691 if (MaxTotalRDBandwidth <= v->ReturnBW && v->NotEnoughUrgentLatencyHiding == 0 && v->NotEnoughUrgentLatencyHidingPre == 0 && !VRatioPrefetchMoreThan4
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2692 && !DestinationLineTimesForPrefetchLessThan2)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2693 v->PrefetchModeSupported = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2694 else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2695 v->PrefetchModeSupported = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2696 dml_print("DML: CalculatePrefetchSchedule ***failed***. Bandwidth violation. Results are NOT valid\n");
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2697 dml_print("DML: MaxTotalRDBandwidth:%f AvailReturnBandwidth:%f\n", MaxTotalRDBandwidth, v->ReturnBW);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2698 dml_print("DML: VRatioPrefetch %s more than 4\n", (VRatioPrefetchMoreThan4) ? "is" : "is not");
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2699 dml_print("DML: DestinationLines for Prefetch %s less than 2\n", (DestinationLineTimesForPrefetchLessThan2) ? "is" : "is not");
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2700 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2701
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2702 if (v->PrefetchModeSupported == true && v->ImmediateFlipSupport == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2703 v->BandwidthAvailableForImmediateFlip = v->ReturnBW;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2704 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2705 v->BandwidthAvailableForImmediateFlip =
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2706 v->BandwidthAvailableForImmediateFlip
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2707 - dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2708 v->ReadBandwidthPlaneLuma[k] * v->UrgentBurstFactorLuma[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2709 + v->ReadBandwidthPlaneChroma[k] * v->UrgentBurstFactorChroma[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2710 + v->cursor_bw[k] * v->UrgentBurstFactorCursor[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2711 v->DPPPerPlane[k] * (v->RequiredPrefetchPixDataBWLuma[k] * v->UrgentBurstFactorLumaPre[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2712 v->RequiredPrefetchPixDataBWChroma[k] * v->UrgentBurstFactorChromaPre[k]) +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2713 v->cursor_bw_pre[k] * v->UrgentBurstFactorCursorPre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2714 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2715
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2716 v->TotImmediateFlipBytes = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2717 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2718 v->TotImmediateFlipBytes = v->TotImmediateFlipBytes + v->DPPPerPlane[k] * (v->PDEAndMetaPTEBytesFrame[k] + v->MetaRowByte[k] + v->PixelPTEBytesPerRow[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2719 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2720 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2721 CalculateFlipSchedule(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2722 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2723 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2724 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyVMDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2725 v->UrgentExtraLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2726 v->UrgentLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2727 v->GPUVMMaxPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2728 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2729 v->HostVMMaxNonCachedPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2730 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2731 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2732 v->PDEAndMetaPTEBytesFrame[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2733 v->MetaRowByte[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2734 v->PixelPTEBytesPerRow[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2735 v->BandwidthAvailableForImmediateFlip,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2736 v->TotImmediateFlipBytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2737 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2738 v->HTotal[k] / v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2739 v->VRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2740 v->VRatioChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2741 v->Tno_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2742 v->DCCEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2743 v->dpte_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2744 v->meta_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2745 v->dpte_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2746 v->meta_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2747 &v->DestinationLinesToRequestVMInImmediateFlip[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2748 &v->DestinationLinesToRequestRowInImmediateFlip[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2749 &v->final_flip_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2750 &v->ImmediateFlipSupportedForPipe[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2751 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2752 v->total_dcn_read_bw_with_flip = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2753 v->total_dcn_read_bw_with_flip_no_urgent_burst = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2754 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2755 v->total_dcn_read_bw_with_flip = v->total_dcn_read_bw_with_flip + dml_max3(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2756 v->DPPPerPlane[k] * v->prefetch_vmrow_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2757 v->DPPPerPlane[k] * v->final_flip_bw[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2758 v->ReadBandwidthLuma[k] * v->UrgentBurstFactorLuma[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2759 v->ReadBandwidthChroma[k] * v->UrgentBurstFactorChroma[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2760 v->cursor_bw[k] * v->UrgentBurstFactorCursor[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2761 v->DPPPerPlane[k] * (v->final_flip_bw[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2762 v->RequiredPrefetchPixDataBWLuma[k] * v->UrgentBurstFactorLumaPre[k] +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2763 v->RequiredPrefetchPixDataBWChroma[k] * v->UrgentBurstFactorChromaPre[k]) +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2764 v->cursor_bw_pre[k] * v->UrgentBurstFactorCursorPre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2765 v->total_dcn_read_bw_with_flip_no_urgent_burst =
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2766 v->total_dcn_read_bw_with_flip_no_urgent_burst +
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2767 dml_max3(v->DPPPerPlane[k] * v->prefetch_vmrow_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2768 v->DPPPerPlane[k] * v->final_flip_bw[k] + v->ReadBandwidthPlaneLuma[k] + v->ReadBandwidthPlaneChroma[k] + v->cursor_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2769 v->DPPPerPlane[k] * (v->final_flip_bw[k] + v->RequiredPrefetchPixDataBWLuma[k] + v->RequiredPrefetchPixDataBWChroma[k]) + v->cursor_bw_pre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2770
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2771 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2772 v->FractionOfUrgentBandwidthImmediateFlip = v->total_dcn_read_bw_with_flip_no_urgent_burst / v->ReturnBW;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2773
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2774 v->ImmediateFlipSupported = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2775 if (v->total_dcn_read_bw_with_flip > v->ReturnBW) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2776 v->ImmediateFlipSupported = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2777 v->total_dcn_read_bw_with_flip = MaxTotalRDBandwidth;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2778 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2779 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2780 if (v->ImmediateFlipSupportedForPipe[k] == false) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2781 v->ImmediateFlipSupported = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2782 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2783 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2784 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2785 v->ImmediateFlipSupported = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2786 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2787
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2788 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
eaa483642f63cf Dmytro Laktyushkin 2020-06-15 2789 if (v->ErrorResult[k] || v->NotEnoughTimeForDynamicMetadata[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2790 v->PrefetchModeSupported = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2791 dml_print("DML: CalculatePrefetchSchedule ***failed***. Prefetch schedule violation. Results are NOT valid\n");
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2792 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2793 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2794
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2795 v->VStartupLines = v->VStartupLines + 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2796 v->PrefetchAndImmediateFlipSupported = (v->PrefetchModeSupported == true && ((!v->ImmediateFlipSupport && !v->HostVMEnable && v->ImmediateFlipRequirement != dm_immediate_flip_required) || v->ImmediateFlipSupported)) ? true : false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2797
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2798 } while (!v->PrefetchModeSupported && v->VStartupLines <= v->MaximumMaxVStartupLines);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2799 ASSERT(v->PrefetchModeSupported);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2800
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2801 //Watermarks and NB P-State/DRAM Clock Change Support
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2802 {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2803 enum clock_change_support DRAMClockChangeSupport = 0; // dummy
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2804 CalculateWatermarksAndDRAMSpeedChangeSupport(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2805 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2806 PrefetchMode,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2807 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2808 v->MaxLineBufferLines,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2809 v->LineBufferSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2810 v->DPPOutputBufferPixels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2811 v->DETBufferSizeInKByte,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2812 v->WritebackInterfaceBufferSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2813 v->DCFCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2814 v->ReturnBW,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2815 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2816 v->dpte_group_bytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2817 v->MetaChunkSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2818 v->UrgentLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2819 v->UrgentExtraLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2820 v->WritebackLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2821 v->WritebackChunkSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2822 v->SOCCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2823 v->FinalDRAMClockChangeLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2824 v->SRExitTime,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2825 v->SREnterPlusExitTime,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2826 v->DCFCLKDeepSleep,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2827 v->DPPPerPlane,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2828 v->DCCEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2829 v->DPPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2830 v->DETBufferSizeY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2831 v->DETBufferSizeC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2832 v->SwathHeightY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2833 v->SwathHeightC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2834 v->LBBitPerPixel,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2835 v->SwathWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2836 v->SwathWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2837 v->HRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2838 v->HRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2839 v->vtaps,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2840 v->VTAPsChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2841 v->VRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2842 v->VRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2843 v->HTotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2844 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2845 v->BlendingAndTiming,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2846 v->BytePerPixelDETY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2847 v->BytePerPixelDETC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2848 v->DSTXAfterScaler,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2849 v->DSTYAfterScaler,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2850 v->WritebackEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2851 v->WritebackPixelFormat,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2852 v->WritebackDestinationWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2853 v->WritebackDestinationHeight,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2854 v->WritebackSourceHeight,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2855 &DRAMClockChangeSupport,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2856 &v->UrgentWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2857 &v->WritebackUrgentWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2858 &v->DRAMClockChangeWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2859 &v->WritebackDRAMClockChangeWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2860 &v->StutterExitWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2861 &v->StutterEnterPlusExitWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2862 &v->MinActiveDRAMClockChangeLatencySupported);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2863
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2864 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2865 if (v->WritebackEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2866 if (v->BlendingAndTiming[k] == k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2867 v->ThisVStartup = v->VStartup[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2868 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2869 for (j = 0; j < v->NumberOfActivePlanes; ++j) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2870 if (v->BlendingAndTiming[k] == j) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2871 v->ThisVStartup = v->VStartup[j];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2872 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2873 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2874 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2875 v->WritebackAllowDRAMClockChangeEndPosition[k] = dml_max(0,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2876 v->ThisVStartup * v->HTotal[k] / v->PixelClock[k] - v->WritebackDRAMClockChangeWatermark);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2877 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2878 v->WritebackAllowDRAMClockChangeEndPosition[k] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2879 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2880 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2881
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2882 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2883
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2884
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2885 //Display Pipeline Delivery Time in Prefetch, Groups
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2886 CalculatePixelDeliveryTimes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2887 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2888 v->VRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2889 v->VRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2890 v->VRatioPrefetchY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2891 v->VRatioPrefetchC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2892 v->swath_width_luma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2893 v->swath_width_chroma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2894 v->DPPPerPlane,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2895 v->HRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2896 v->HRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2897 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2898 v->PSCL_THROUGHPUT_LUMA,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2899 v->PSCL_THROUGHPUT_CHROMA,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2900 v->DPPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2901 v->BytePerPixelC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2902 v->SourceScan,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2903 v->NumberOfCursors,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2904 v->CursorWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2905 v->CursorBPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2906 v->BlockWidth256BytesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2907 v->BlockHeight256BytesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2908 v->BlockWidth256BytesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2909 v->BlockHeight256BytesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2910 v->DisplayPipeLineDeliveryTimeLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2911 v->DisplayPipeLineDeliveryTimeChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2912 v->DisplayPipeLineDeliveryTimeLumaPrefetch,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2913 v->DisplayPipeLineDeliveryTimeChromaPrefetch,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2914 v->DisplayPipeRequestDeliveryTimeLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2915 v->DisplayPipeRequestDeliveryTimeChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2916 v->DisplayPipeRequestDeliveryTimeLumaPrefetch,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2917 v->DisplayPipeRequestDeliveryTimeChromaPrefetch,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2918 v->CursorRequestDeliveryTime,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2919 v->CursorRequestDeliveryTimePrefetch);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2920
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2921 CalculateMetaAndPTETimes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2922 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2923 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2924 v->MetaChunkSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2925 v->MinMetaChunkSizeBytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2926 v->HTotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2927 v->VRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2928 v->VRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2929 v->DestinationLinesToRequestRowInVBlank,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2930 v->DestinationLinesToRequestRowInImmediateFlip,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2931 v->DCCEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2932 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2933 v->BytePerPixelY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2934 v->BytePerPixelC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2935 v->SourceScan,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2936 v->dpte_row_height,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2937 v->dpte_row_height_chroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2938 v->meta_row_width,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2939 v->meta_row_width_chroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2940 v->meta_row_height,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2941 v->meta_row_height_chroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2942 v->meta_req_width,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2943 v->meta_req_width_chroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2944 v->meta_req_height,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2945 v->meta_req_height_chroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2946 v->dpte_group_bytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2947 v->PTERequestSizeY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2948 v->PTERequestSizeC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2949 v->PixelPTEReqWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2950 v->PixelPTEReqHeightY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2951 v->PixelPTEReqWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2952 v->PixelPTEReqHeightC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2953 v->dpte_row_width_luma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2954 v->dpte_row_width_chroma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2955 v->DST_Y_PER_PTE_ROW_NOM_L,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2956 v->DST_Y_PER_PTE_ROW_NOM_C,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2957 v->DST_Y_PER_META_ROW_NOM_L,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2958 v->DST_Y_PER_META_ROW_NOM_C,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2959 v->TimePerMetaChunkNominal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2960 v->TimePerChromaMetaChunkNominal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2961 v->TimePerMetaChunkVBlank,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2962 v->TimePerChromaMetaChunkVBlank,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2963 v->TimePerMetaChunkFlip,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2964 v->TimePerChromaMetaChunkFlip,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2965 v->time_per_pte_group_nom_luma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2966 v->time_per_pte_group_vblank_luma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2967 v->time_per_pte_group_flip_luma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2968 v->time_per_pte_group_nom_chroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2969 v->time_per_pte_group_vblank_chroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2970 v->time_per_pte_group_flip_chroma);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2971
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2972 CalculateVMGroupAndRequestTimes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2973 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2974 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2975 v->GPUVMMaxPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2976 v->HTotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2977 v->BytePerPixelC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2978 v->DestinationLinesToRequestVMInVBlank,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2979 v->DestinationLinesToRequestVMInImmediateFlip,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2980 v->DCCEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2981 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2982 v->dpte_row_width_luma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2983 v->dpte_row_width_chroma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2984 v->vm_group_bytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2985 v->dpde0_bytes_per_frame_ub_l,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2986 v->dpde0_bytes_per_frame_ub_c,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2987 v->meta_pte_bytes_per_frame_ub_l,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2988 v->meta_pte_bytes_per_frame_ub_c,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2989 v->TimePerVMGroupVBlank,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2990 v->TimePerVMGroupFlip,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2991 v->TimePerVMRequestVBlank,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2992 v->TimePerVMRequestFlip);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2993
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2994
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2995 // Min TTUVBlank
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2996 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2997 if (PrefetchMode == 0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2998 v->AllowDRAMClockChangeDuringVBlank[k] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 2999 v->AllowDRAMSelfRefreshDuringVBlank[k] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3000 v->MinTTUVBlank[k] = dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3001 v->DRAMClockChangeWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3002 dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3003 v->StutterEnterPlusExitWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3004 v->UrgentWatermark));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3005 } else if (PrefetchMode == 1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3006 v->AllowDRAMClockChangeDuringVBlank[k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3007 v->AllowDRAMSelfRefreshDuringVBlank[k] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3008 v->MinTTUVBlank[k] = dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3009 v->StutterEnterPlusExitWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3010 v->UrgentWatermark);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3011 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3012 v->AllowDRAMClockChangeDuringVBlank[k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3013 v->AllowDRAMSelfRefreshDuringVBlank[k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3014 v->MinTTUVBlank[k] = v->UrgentWatermark;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3015 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3016 if (!v->DynamicMetadataEnable[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3017 v->MinTTUVBlank[k] = v->TCalc
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3018 + v->MinTTUVBlank[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3019 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3020
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3021 // DCC Configuration
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3022 v->ActiveDPPs = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3023 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3024 CalculateDCCConfiguration(v->DCCEnable[k], false, // We should always know the direction DCCProgrammingAssumesScanDirectionUnknown,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3025 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3026 v->SurfaceWidthY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3027 v->SurfaceWidthC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3028 v->SurfaceHeightY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3029 v->SurfaceHeightC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3030 v->DETBufferSizeInKByte * 1024,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3031 v->BlockHeight256BytesY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3032 v->BlockHeight256BytesC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3033 v->SurfaceTiling[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3034 v->BytePerPixelY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3035 v->BytePerPixelC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3036 v->BytePerPixelDETY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3037 v->BytePerPixelDETC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3038 v->SourceScan[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3039 &v->DCCYMaxUncompressedBlock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3040 &v->DCCCMaxUncompressedBlock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3041 &v->DCCYMaxCompressedBlock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3042 &v->DCCCMaxCompressedBlock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3043 &v->DCCYIndependentBlock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3044 &v->DCCCIndependentBlock[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3045 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3046
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3047 {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3048 //Maximum Bandwidth Used
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3049 double TotalWRBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3050 double MaxPerPlaneVActiveWRBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3051 double WRBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3052 double MaxUsedBW = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3053 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3054 if (v->WritebackEnable[k] == true
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3055 && v->WritebackPixelFormat[k] == dm_444_32) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3056 WRBandwidth = v->WritebackDestinationWidth[k] * v->WritebackDestinationHeight[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3057 / (v->HTotal[k] * v->WritebackSourceHeight[k] / v->PixelClock[k]) * 4;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3058 } else if (v->WritebackEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3059 WRBandwidth = v->WritebackDestinationWidth[k] * v->WritebackDestinationHeight[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3060 / (v->HTotal[k] * v->WritebackSourceHeight[k] / v->PixelClock[k]) * 8;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3061 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3062 TotalWRBandwidth = TotalWRBandwidth + WRBandwidth;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3063 MaxPerPlaneVActiveWRBandwidth = dml_max(MaxPerPlaneVActiveWRBandwidth, WRBandwidth);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3064 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3065
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3066 v->TotalDataReadBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3067 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3068 v->TotalDataReadBandwidth = v->TotalDataReadBandwidth
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3069 + v->ReadBandwidthPlaneLuma[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3070 + v->ReadBandwidthPlaneChroma[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3071 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3072
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3073 {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3074 double MaxPerPlaneVActiveRDBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3075 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3076 MaxPerPlaneVActiveRDBandwidth = dml_max(MaxPerPlaneVActiveRDBandwidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3077 v->ReadBandwidthPlaneLuma[k] + v->ReadBandwidthPlaneChroma[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3078
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3079 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3080 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3081
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3082 MaxUsedBW = MaxTotalRDBandwidth + TotalWRBandwidth;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3083 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3084
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3085 // VStartup Margin
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3086 v->VStartupMargin = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3087 v->FirstMainPlane = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3088 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3089 if (v->BlendingAndTiming[k] == k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3090 double margin = (v->MaxVStartupLines[k] - v->VStartup[k]) * v->HTotal[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3091 / v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3092 if (v->FirstMainPlane == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3093 v->VStartupMargin = margin;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3094 v->FirstMainPlane = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3095 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3096 v->VStartupMargin = dml_min(v->VStartupMargin, margin);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3097 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3098 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3099 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3100
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3101 // Stutter Efficiency
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3102 CalculateStutterEfficiency(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3103 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3104 v->ROBBufferSizeInKByte,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3105 v->TotalDataReadBandwidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3106 v->DCFCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3107 v->ReturnBW,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3108 v->SRExitTime,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3109 v->SynchronizedVBlank,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3110 v->DPPPerPlane,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3111 v->DETBufferSizeY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3112 v->BytePerPixelY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3113 v->BytePerPixelDETY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3114 v->SwathWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3115 v->SwathHeightY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3116 v->SwathHeightC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3117 v->DCCRateLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3118 v->DCCRateChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3119 v->HTotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3120 v->VTotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3121 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3122 v->VRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3123 v->SourceScan,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3124 v->BlockHeight256BytesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3125 v->BlockWidth256BytesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3126 v->BlockHeight256BytesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3127 v->BlockWidth256BytesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3128 v->DCCYMaxUncompressedBlock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3129 v->DCCCMaxUncompressedBlock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3130 v->VActive,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3131 v->DCCEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3132 v->WritebackEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3133 v->ReadBandwidthPlaneLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3134 v->ReadBandwidthPlaneChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3135 v->meta_row_bw,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3136 v->dpte_row_bw,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3137 &v->StutterEfficiencyNotIncludingVBlank,
6b85151f6bcdb7 Martin Leung 2020-08-28 3138 &v->StutterEfficiency,
6b85151f6bcdb7 Martin Leung 2020-08-28 3139 &v->StutterPeriod);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3140 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3141
:::::: The code at line 1917 was first introduced by commit
:::::: 6725a88f88a7e922e91c45bf83d320487810c192 drm/amd/display: Add DCN3 DML
:::::: TO: Bhawanpreet Lakha <Bhawanpreet.Lakha@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
next reply other threads:[~2021-12-27 14:52 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-27 14:51 kernel test robot [this message]
2021-12-27 14:51 ` drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.c:1917:13: warning: stack frame size (2296) 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=202112272211.3wi11WNb-lkp@intel.com \
--to=lkp@intel.com \
--cc=akpm@linux-foundation.org \
--cc=andreyknvl@google.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=llvm@lists.linux.dev \
--cc=natechancellor@gmail.com \
--cc=walter-zh.wu@mediatek.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.