[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202112272211.3wi11WNb-lkp@intel.com>
Date: Mon, 27 Dec 2021 22:51:36 +0800
From: kernel test robot <lkp@...el.com>
To: Walter Wu <walter-zh.wu@...iatek.com>
Cc: llvm@...ts.linux.dev, kbuild-all@...ts.01.org,
linux-kernel@...r.kernel.org,
Nathan Chancellor <natechancellor@...il.com>,
Andrey Konovalov <andreyknvl@...gle.com>,
Andrew Morton <akpm@...ux-foundation.org>,
Linux Memory Management List <linux-mm@...ck.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'
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@...el.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@....com>
:::::: CC: Alex Deucher <alexander.deucher@....com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Powered by blists - more mailing lists