From: kernel test robot <lkp@intel.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
linux-kernel@vger.kernel.org,
Masahiro Yamada <masahiroy@kernel.org>,
Alex Shi <alexs@kernel.org>,
Nick Desaulniers <ndesaulniers@google.com>,
Miguel Ojeda <ojeda@kernel.org>,
Nathan Chancellor <nathan@kernel.org>
Subject: drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.c:3637:6: warning: stack frame size (2072) exceeds limit (2048) in 'dml30_ModeSupportAndSystemConfigurationFull'
Date: Mon, 27 Jun 2022 08:55:43 +0800 [thread overview]
Message-ID: <202206270813.5fn4Mn8o-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 03c765b0e3b4cb5063276b086c76f7a612856a9a
commit: e8c07082a810fbb9db303a2b66b66b8d7e588b53 Kbuild: move to -std=gnu11
date: 4 months ago
config: x86_64-buildonly-randconfig-r004-20220627
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project b0d6dd3905db145853c7c744ac92d49b00b1fa20)
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=e8c07082a810fbb9db303a2b66b66b8d7e588b53
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout e8c07082a810fbb9db303a2b66b66b8d7e588b53
# save the config file
mkdir build_dir && cp config build_dir/.config
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 where applicable
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.c:3055: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:3637:6: warning: stack frame size (2072) exceeds limit (2048) in 'dml30_ModeSupportAndSystemConfigurationFull' [-Wframe-larger-than]
void dml30_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
^
2 warnings generated.
vim +/dml30_ModeSupportAndSystemConfigurationFull +3637 drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.c
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3636
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 @3637 void dml30_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3638 {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3639 struct vba_vars_st *v = &mode_lib->vba;
61d861cf478576 Nicholas Kazlauskas 2020-05-13 3640 int MinPrefetchMode, MaxPrefetchMode;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3641 int i;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3642 unsigned int j, k, m;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3643 bool EnoughWritebackUnits = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3644 bool WritebackModeSupport = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3645 bool ViewportExceedsSurface = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3646 double MaxTotalVActiveRDBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3647 long ReorderingBytes = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3648 bool NotUrgentLatencyHiding[DC__NUM_DPP__MAX] = { 0 };
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3649
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3650 /*MODE SUPPORT, VOLTAGE STATE AND SOC CONFIGURATION*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3651
61d861cf478576 Nicholas Kazlauskas 2020-05-13 3652 CalculateMinAndMaxPrefetchMode(
61d861cf478576 Nicholas Kazlauskas 2020-05-13 3653 mode_lib->vba.AllowDRAMSelfRefreshOrDRAMClockChangeInVblank,
61d861cf478576 Nicholas Kazlauskas 2020-05-13 3654 &MinPrefetchMode, &MaxPrefetchMode);
61d861cf478576 Nicholas Kazlauskas 2020-05-13 3655
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3656 /*Scale Ratio, taps Support Check*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3657
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3658 v->ScaleRatioAndTapsSupport = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3659 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3660 if (v->ScalerEnabled[k] == false
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3661 && ((v->SourcePixelFormat[k] != dm_444_64
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3662 && v->SourcePixelFormat[k] != dm_444_32
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3663 && v->SourcePixelFormat[k] != dm_444_16
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3664 && v->SourcePixelFormat[k] != dm_mono_16
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3665 && v->SourcePixelFormat[k] != dm_mono_8
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3666 && v->SourcePixelFormat[k] != dm_rgbe
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3667 && v->SourcePixelFormat[k] != dm_rgbe_alpha)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3668 || v->HRatio[k] != 1.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3669 || v->htaps[k] != 1.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3670 || v->VRatio[k] != 1.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3671 || v->vtaps[k] != 1.0)) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3672 v->ScaleRatioAndTapsSupport = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3673 } else if (v->vtaps[k] < 1.0 || v->vtaps[k] > 8.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3674 || v->htaps[k] < 1.0 || v->htaps[k] > 8.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3675 || (v->htaps[k] > 1.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3676 && (v->htaps[k] % 2) == 1)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3677 || v->HRatio[k] > v->MaxHSCLRatio
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3678 || v->VRatio[k] > v->MaxVSCLRatio
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3679 || v->HRatio[k] > v->htaps[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3680 || v->VRatio[k] > v->vtaps[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3681 || (v->SourcePixelFormat[k] != dm_444_64
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3682 && v->SourcePixelFormat[k] != dm_444_32
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3683 && v->SourcePixelFormat[k] != dm_444_16
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3684 && v->SourcePixelFormat[k] != dm_mono_16
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3685 && v->SourcePixelFormat[k] != dm_mono_8
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3686 && v->SourcePixelFormat[k] != dm_rgbe
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3687 && (v->VTAPsChroma[k] < 1
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3688 || v->VTAPsChroma[k] > 8
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3689 || v->HTAPsChroma[k] < 1
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3690 || v->HTAPsChroma[k] > 8
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3691 || (v->HTAPsChroma[k] > 1 && v->HTAPsChroma[k] % 2 == 1)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3692 || v->HRatioChroma[k] > v->MaxHSCLRatio
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3693 || v->VRatioChroma[k] > v->MaxVSCLRatio
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3694 || v->HRatioChroma[k] > v->HTAPsChroma[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3695 || v->VRatioChroma[k] > v->VTAPsChroma[k]))) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3696 v->ScaleRatioAndTapsSupport = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3697 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3698 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3699 /*Source Format, Pixel Format and Scan Support Check*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3700
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3701 v->SourceFormatPixelAndScanSupport = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3702 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3703 if ((v->SurfaceTiling[k] == dm_sw_linear && (!(v->SourceScan[k] != dm_vert) || v->DCCEnable[k] == true))
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3704 || ((v->SurfaceTiling[k] == dm_sw_64kb_d || v->SurfaceTiling[k] == dm_sw_64kb_d_t || v->SurfaceTiling[k] == dm_sw_64kb_d_x)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3705 && !(v->SourcePixelFormat[k] == dm_444_64))) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3706 v->SourceFormatPixelAndScanSupport = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3707 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3708 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3709 /*Bandwidth Support Check*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3710
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3711 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3712 CalculateBytePerPixelAnd256BBlockSizes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3713 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3714 v->SurfaceTiling[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3715 &v->BytePerPixelY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3716 &v->BytePerPixelC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3717 &v->BytePerPixelInDETY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3718 &v->BytePerPixelInDETC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3719 &v->Read256BlockHeightY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3720 &v->Read256BlockHeightC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3721 &v->Read256BlockWidthY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3722 &v->Read256BlockWidthC[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3723 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3724 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3725 if (v->SourceScan[k] != dm_vert) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3726 v->SwathWidthYSingleDPP[k] = v->ViewportWidth[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3727 v->SwathWidthCSingleDPP[k] = v->ViewportWidthChroma[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3728 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3729 v->SwathWidthYSingleDPP[k] = v->ViewportHeight[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3730 v->SwathWidthCSingleDPP[k] = v->ViewportHeightChroma[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3731 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3732 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3733 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3734 v->ReadBandwidthLuma[k] = v->SwathWidthYSingleDPP[k] * dml_ceil(v->BytePerPixelInDETY[k], 1.0) / (v->HTotal[k] / v->PixelClock[k]) * v->VRatio[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3735 v->ReadBandwidthChroma[k] = v->SwathWidthYSingleDPP[k] / 2 * dml_ceil(v->BytePerPixelInDETC[k], 2.0) / (v->HTotal[k] / v->PixelClock[k]) * v->VRatio[k] / 2.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3736 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3737 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3738 if (v->WritebackEnable[k] == true
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3739 && v->WritebackPixelFormat[k] == dm_444_64) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3740 v->WriteBandwidth[k] = v->WritebackDestinationWidth[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3741 * v->WritebackDestinationHeight[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3742 / (v->WritebackSourceHeight[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3743 * v->HTotal[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3744 / v->PixelClock[k]) * 8.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3745 } else if (v->WritebackEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3746 v->WriteBandwidth[k] = v->WritebackDestinationWidth[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3747 * v->WritebackDestinationHeight[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3748 / (v->WritebackSourceHeight[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3749 * v->HTotal[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3750 / v->PixelClock[k]) * 4.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3751 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3752 v->WriteBandwidth[k] = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3753 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3754 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3755
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3756 /*Writeback Latency support check*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3757
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3758 v->WritebackLatencySupport = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3759 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3760 if (v->WritebackEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3761 if (v->WritebackConfiguration == dm_whole_buffer_for_single_stream_no_interleave ||
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3762 v->WritebackConfiguration == dm_whole_buffer_for_single_stream_interleave) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3763 if (v->WriteBandwidth[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3764 > 2.0 * v->WritebackInterfaceBufferSize * 1024
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3765 / v->WritebackLatency) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3766 v->WritebackLatencySupport = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3767 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3768 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3769 if (v->WriteBandwidth[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3770 > v->WritebackInterfaceBufferSize * 1024
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3771 / v->WritebackLatency) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3772 v->WritebackLatencySupport = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3773 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3774 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3775 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3776 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3777
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3778 /*Writeback Mode Support Check*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3779
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3780 v->TotalNumberOfActiveWriteback = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3781 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3782 if (v->WritebackEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3783 v->TotalNumberOfActiveWriteback =
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3784 v->TotalNumberOfActiveWriteback + 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3785 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3786 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3787
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3788 if (v->TotalNumberOfActiveWriteback > v->MaxNumWriteback) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3789 EnoughWritebackUnits = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3790 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3791 if (!v->WritebackSupportInterleaveAndUsingWholeBufferForASingleStream
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3792 && (v->WritebackConfiguration == dm_whole_buffer_for_single_stream_no_interleave
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3793 || v->WritebackConfiguration == dm_whole_buffer_for_single_stream_interleave)) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3794
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3795 WritebackModeSupport = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3796 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3797 if (v->WritebackConfiguration == dm_whole_buffer_for_single_stream_no_interleave && v->TotalNumberOfActiveWriteback > 1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3798 WritebackModeSupport = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3799 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3800
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3801 /*Writeback Scale Ratio and Taps Support Check*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3802
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3803 v->WritebackScaleRatioAndTapsSupport = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3804 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3805 if (v->WritebackEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3806 if (v->WritebackHRatio[k] > v->WritebackMaxHSCLRatio
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3807 || v->WritebackVRatio[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3808 > v->WritebackMaxVSCLRatio
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3809 || v->WritebackHRatio[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3810 < v->WritebackMinHSCLRatio
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3811 || v->WritebackVRatio[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3812 < v->WritebackMinVSCLRatio
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3813 || v->WritebackHTaps[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3814 > v->WritebackMaxHSCLTaps
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3815 || v->WritebackVTaps[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3816 > v->WritebackMaxVSCLTaps
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3817 || v->WritebackHRatio[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3818 > v->WritebackHTaps[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3819 || v->WritebackVRatio[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3820 > v->WritebackVTaps[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3821 || (v->WritebackHTaps[k] > 2.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3822 && ((v->WritebackHTaps[k] % 2)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3823 == 1))) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3824 v->WritebackScaleRatioAndTapsSupport = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3825 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3826 if (2.0 * v->WritebackDestinationWidth[k] * (v->WritebackVTaps[k] - 1) * 57 > v->WritebackLineBufferSize) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3827 v->WritebackScaleRatioAndTapsSupport = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3828 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3829 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3830 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3831 /*Maximum DISPCLK/DPPCLK Support check*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3832
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3833 v->WritebackRequiredDISPCLK = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3834 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3835 if (v->WritebackEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3836 v->WritebackRequiredDISPCLK = dml_max(v->WritebackRequiredDISPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3837 dml30_CalculateWriteBackDISPCLK(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3838 v->WritebackPixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3839 v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3840 v->WritebackHRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3841 v->WritebackVRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3842 v->WritebackHTaps[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3843 v->WritebackVTaps[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3844 v->WritebackSourceWidth[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3845 v->WritebackDestinationWidth[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3846 v->HTotal[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3847 v->WritebackLineBufferSize));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3848 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3849 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3850 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3851 if (v->HRatio[k] > 1.0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3852 v->PSCL_FACTOR[k] = dml_min(v->MaxDCHUBToPSCLThroughput, v->MaxPSCLToLBThroughput * v->HRatio[k] / dml_ceil(v->htaps[k] / 6.0, 1.0));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3853 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3854 v->PSCL_FACTOR[k] = dml_min(v->MaxDCHUBToPSCLThroughput, v->MaxPSCLToLBThroughput);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3855 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3856 if (v->BytePerPixelC[k] == 0.0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3857 v->PSCL_FACTOR_CHROMA[k] = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3858 v->MinDPPCLKUsingSingleDPP[k] = v->PixelClock[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3859 * dml_max3(v->vtaps[k] / 6.0 * dml_min(1.0, v->HRatio[k]), v->HRatio[k] * v->VRatio[k] / v->PSCL_FACTOR[k], 1.0);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3860 if ((v->htaps[k] > 6.0 || v->vtaps[k] > 6.0) && v->MinDPPCLKUsingSingleDPP[k] < 2.0 * v->PixelClock[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3861 v->MinDPPCLKUsingSingleDPP[k] = 2.0 * v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3862 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3863 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3864 if (v->HRatioChroma[k] > 1.0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3865 v->PSCL_FACTOR_CHROMA[k] = dml_min(v->MaxDCHUBToPSCLThroughput,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3866 v->MaxPSCLToLBThroughput * v->HRatioChroma[k] / dml_ceil(v->HTAPsChroma[k] / 6.0, 1.0));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3867 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3868 v->PSCL_FACTOR_CHROMA[k] = dml_min(v->MaxDCHUBToPSCLThroughput, v->MaxPSCLToLBThroughput);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3869 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3870 v->MinDPPCLKUsingSingleDPP[k] = v->PixelClock[k] * dml_max5(v->vtaps[k] / 6.0 * dml_min(1.0, v->HRatio[k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3871 v->HRatio[k] * v->VRatio[k] / v->PSCL_FACTOR[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3872 v->VTAPsChroma[k] / 6.0 * dml_min(1.0, v->HRatioChroma[k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3873 v->HRatioChroma[k] * v->VRatioChroma[k] / v->PSCL_FACTOR_CHROMA[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3874 1.0);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3875 if ((v->htaps[k] > 6.0 || v->vtaps[k] > 6.0 || v->HTAPsChroma[k] > 6.0 || v->VTAPsChroma[k] > 6.0)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3876 && v->MinDPPCLKUsingSingleDPP[k] < 2.0 * v->PixelClock[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3877 v->MinDPPCLKUsingSingleDPP[k] = 2.0 * v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3878 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3879 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3880 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3881 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3882 int MaximumSwathWidthSupportLuma = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3883 int MaximumSwathWidthSupportChroma = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3884
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3885 if (v->SurfaceTiling[k] == dm_sw_linear) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3886 MaximumSwathWidthSupportLuma = 8192.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3887 } else if (v->SourceScan[k] == dm_vert && v->BytePerPixelC[k] > 0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3888 MaximumSwathWidthSupportLuma = 2880.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3889 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3890 MaximumSwathWidthSupportLuma = 5760.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3891 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3892
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3893 if (v->SourcePixelFormat[k] == dm_420_8 || v->SourcePixelFormat[k] == dm_420_10 || v->SourcePixelFormat[k] == dm_420_12) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3894 MaximumSwathWidthSupportChroma = MaximumSwathWidthSupportLuma / 2.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3895 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3896 MaximumSwathWidthSupportChroma = MaximumSwathWidthSupportLuma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3897 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3898 v->MaximumSwathWidthInLineBufferLuma = v->LineBufferSize * dml_max(v->HRatio[k], 1.0) / v->LBBitPerPixel[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3899 / (v->vtaps[k] + dml_max(dml_ceil(v->VRatio[k], 1.0) - 2, 0.0));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3900 if (v->BytePerPixelC[k] == 0.0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3901 v->MaximumSwathWidthInLineBufferChroma = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3902 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3903 v->MaximumSwathWidthInLineBufferChroma = v->LineBufferSize * dml_max(v->HRatioChroma[k], 1.0) / v->LBBitPerPixel[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3904 / (v->VTAPsChroma[k] + dml_max(dml_ceil(v->VRatioChroma[k], 1.0) - 2, 0.0));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3905 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3906 v->MaximumSwathWidthLuma[k] = dml_min(MaximumSwathWidthSupportLuma, v->MaximumSwathWidthInLineBufferLuma);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3907 v->MaximumSwathWidthChroma[k] = dml_min(MaximumSwathWidthSupportChroma, v->MaximumSwathWidthInLineBufferChroma);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3908 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3909
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3910 CalculateSwathAndDETConfiguration(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3911 true,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3912 v->NumberOfActivePlanes,
4469201b19354a Chaitanya Dhere 2021-04-20 3913 v->DETBufferSizeInKByte[0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3914 v->MaximumSwathWidthLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3915 v->MaximumSwathWidthChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3916 v->SourceScan,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3917 v->SourcePixelFormat,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3918 v->SurfaceTiling,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3919 v->ViewportWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3920 v->ViewportHeight,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3921 v->SurfaceWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3922 v->SurfaceWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3923 v->SurfaceHeightY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3924 v->SurfaceHeightC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3925 v->Read256BlockHeightY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3926 v->Read256BlockHeightC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3927 v->Read256BlockWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3928 v->Read256BlockWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3929 v->odm_combine_dummy,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3930 v->BlendingAndTiming,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3931 v->BytePerPixelY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3932 v->BytePerPixelC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3933 v->BytePerPixelInDETY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3934 v->BytePerPixelInDETC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3935 v->HActive,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3936 v->HRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3937 v->HRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3938 v->DPPPerPlane,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3939 v->swath_width_luma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3940 v->swath_width_chroma_ub,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3941 v->SwathWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3942 v->SwathWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3943 v->SwathHeightY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3944 v->SwathHeightC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3945 v->DETBufferSizeY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3946 v->DETBufferSizeC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3947 v->SingleDPPViewportSizeSupportPerPlane,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3948 &v->ViewportSizeSupport[0][0]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3949
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3950 for (i = 0; i < v->soc.num_states; i++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3951 for (j = 0; j < 2; j++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3952 v->MaxDispclkRoundedDownToDFSGranularity = RoundToDFSGranularityDown(v->MaxDispclk[i], v->DISPCLKDPPCLKVCOSpeed);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3953 v->MaxDppclkRoundedDownToDFSGranularity = RoundToDFSGranularityDown(v->MaxDppclk[i], v->DISPCLKDPPCLKVCOSpeed);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3954 v->RequiredDISPCLK[i][j] = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3955 v->DISPCLK_DPPCLK_Support[i][j] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3956 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3957 v->PlaneRequiredDISPCLKWithoutODMCombine = v->PixelClock[k] * (1.0 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3958 * (1.0 + v->DISPCLKRampingMargin / 100.0);
e4e3678260e973 Wesley Chalmers 2021-04-28 3959 if ((v->PlaneRequiredDISPCLKWithoutODMCombine >= v->MaxDispclk[i] && v->MaxDispclk[i] == v->MaxDispclk[mode_lib->soc.num_states - 1]
e4e3678260e973 Wesley Chalmers 2021-04-28 3960 && v->MaxDppclk[i] == v->MaxDppclk[mode_lib->soc.num_states - 1])) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3961 v->PlaneRequiredDISPCLKWithoutODMCombine = v->PixelClock[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3962 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3963 v->PlaneRequiredDISPCLKWithODMCombine2To1 = v->PixelClock[k] / 2 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3964 * (1 + v->DISPCLKRampingMargin / 100.0);
e4e3678260e973 Wesley Chalmers 2021-04-28 3965 if ((v->PlaneRequiredDISPCLKWithODMCombine2To1 >= v->MaxDispclk[i] && v->MaxDispclk[i] == v->MaxDispclk[mode_lib->soc.num_states - 1]
e4e3678260e973 Wesley Chalmers 2021-04-28 3966 && v->MaxDppclk[i] == v->MaxDppclk[mode_lib->soc.num_states - 1])) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3967 v->PlaneRequiredDISPCLKWithODMCombine2To1 = v->PixelClock[k] / 2 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3968 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3969 v->PlaneRequiredDISPCLKWithODMCombine4To1 = v->PixelClock[k] / 4 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3970 * (1 + v->DISPCLKRampingMargin / 100.0);
e4e3678260e973 Wesley Chalmers 2021-04-28 3971 if ((v->PlaneRequiredDISPCLKWithODMCombine4To1 >= v->MaxDispclk[i] && v->MaxDispclk[i] == v->MaxDispclk[mode_lib->soc.num_states - 1]
e4e3678260e973 Wesley Chalmers 2021-04-28 3972 && v->MaxDppclk[i] == v->MaxDppclk[mode_lib->soc.num_states - 1])) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3973 v->PlaneRequiredDISPCLKWithODMCombine4To1 = v->PixelClock[k] / 4 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3974 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3975
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3976 if (v->ODMCombinePolicy == dm_odm_combine_policy_none) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3977 v->ODMCombineEnablePerState[i][k] = dm_odm_combine_mode_disabled;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3978 v->PlaneRequiredDISPCLK = v->PlaneRequiredDISPCLKWithoutODMCombine;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3979 } else if (v->ODMCombinePolicy == dm_odm_combine_policy_2to1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3980 v->ODMCombineEnablePerState[i][k] = dm_odm_combine_mode_2to1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3981 v->PlaneRequiredDISPCLK = v->PlaneRequiredDISPCLKWithODMCombine2To1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3982 } else if (v->ODMCombinePolicy == dm_odm_combine_policy_4to1
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3983 || v->PlaneRequiredDISPCLKWithODMCombine2To1 > v->MaxDispclkRoundedDownToDFSGranularity) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3984 v->ODMCombineEnablePerState[i][k] = dm_odm_combine_mode_4to1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3985 v->PlaneRequiredDISPCLK = v->PlaneRequiredDISPCLKWithODMCombine4To1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3986 } else if (v->PlaneRequiredDISPCLKWithoutODMCombine > v->MaxDispclkRoundedDownToDFSGranularity) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3987 v->ODMCombineEnablePerState[i][k] = dm_odm_combine_mode_2to1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3988 v->PlaneRequiredDISPCLK = v->PlaneRequiredDISPCLKWithODMCombine2To1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3989 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3990 v->ODMCombineEnablePerState[i][k] = dm_odm_combine_mode_disabled;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 3991 v->PlaneRequiredDISPCLK = v->PlaneRequiredDISPCLKWithoutODMCombine;
346cf627fb27c0 Nikola Cornij 2021-05-18 3992 }
346cf627fb27c0 Nikola Cornij 2021-05-18 3993 if (v->DSCEnabled[k] && v->HActive[k] > DCN30_MAX_DSC_IMAGE_WIDTH
346cf627fb27c0 Nikola Cornij 2021-05-18 3994 && v->ODMCombineEnablePerState[i][k] != dm_odm_combine_mode_4to1) {
346cf627fb27c0 Nikola Cornij 2021-05-18 3995 if (v->HActive[k] / 2 > DCN30_MAX_DSC_IMAGE_WIDTH) {
346cf627fb27c0 Nikola Cornij 2021-05-18 3996 v->ODMCombineEnablePerState[i][k] = dm_odm_combine_mode_4to1;
346cf627fb27c0 Nikola Cornij 2021-05-18 3997 v->PlaneRequiredDISPCLK = v->PlaneRequiredDISPCLKWithODMCombine4To1;
346cf627fb27c0 Nikola Cornij 2021-05-18 3998 } else {
346cf627fb27c0 Nikola Cornij 2021-05-18 3999 v->ODMCombineEnablePerState[i][k] = dm_odm_combine_mode_2to1;
346cf627fb27c0 Nikola Cornij 2021-05-18 4000 v->PlaneRequiredDISPCLK = v->PlaneRequiredDISPCLKWithODMCombine2To1;
346cf627fb27c0 Nikola Cornij 2021-05-18 4001 }
346cf627fb27c0 Nikola Cornij 2021-05-18 4002 }
346cf627fb27c0 Nikola Cornij 2021-05-18 4003 if (v->OutputFormat[k] == dm_420 && v->HActive[k] > DCN30_MAX_FMT_420_BUFFER_WIDTH
346cf627fb27c0 Nikola Cornij 2021-05-18 4004 && v->ODMCombineEnablePerState[i][k] != dm_odm_combine_mode_4to1) {
346cf627fb27c0 Nikola Cornij 2021-05-18 4005 if (v->HActive[k] / 2 > DCN30_MAX_FMT_420_BUFFER_WIDTH) {
346cf627fb27c0 Nikola Cornij 2021-05-18 4006 v->ODMCombineEnablePerState[i][k] = dm_odm_combine_mode_4to1;
346cf627fb27c0 Nikola Cornij 2021-05-18 4007 v->PlaneRequiredDISPCLK = v->PlaneRequiredDISPCLKWithODMCombine4To1;
346cf627fb27c0 Nikola Cornij 2021-05-18 4008 } else {
f8b9f9a599db59 Chris Park 2020-06-09 4009 v->ODMCombineEnablePerState[i][k] = dm_odm_combine_mode_2to1;
f8b9f9a599db59 Chris Park 2020-06-09 4010 v->PlaneRequiredDISPCLK = v->PlaneRequiredDISPCLKWithODMCombine2To1;
f8b9f9a599db59 Chris Park 2020-06-09 4011 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4012 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4013 if (v->ODMCombineEnablePerState[i][k] == dm_odm_combine_mode_4to1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4014 v->MPCCombine[i][j][k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4015 v->NoOfDPP[i][j][k] = 4;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4016 v->RequiredDPPCLK[i][j][k] = v->MinDPPCLKUsingSingleDPP[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0) / 4;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4017 } else if (v->ODMCombineEnablePerState[i][k] == dm_odm_combine_mode_2to1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4018 v->MPCCombine[i][j][k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4019 v->NoOfDPP[i][j][k] = 2;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4020 v->RequiredDPPCLK[i][j][k] = v->MinDPPCLKUsingSingleDPP[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0) / 2;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4021 } else if ((v->WhenToDoMPCCombine == dm_mpc_never
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4022 || (v->MinDPPCLKUsingSingleDPP[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0) <= v->MaxDppclkRoundedDownToDFSGranularity
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4023 && v->SingleDPPViewportSizeSupportPerPlane[k] == true))) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4024 v->MPCCombine[i][j][k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4025 v->NoOfDPP[i][j][k] = 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4026 v->RequiredDPPCLK[i][j][k] = v->MinDPPCLKUsingSingleDPP[k] * (1.0 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4027 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4028 v->MPCCombine[i][j][k] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4029 v->NoOfDPP[i][j][k] = 2;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4030 v->RequiredDPPCLK[i][j][k] = v->MinDPPCLKUsingSingleDPP[k] * (1.0 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0) / 2.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4031 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4032 v->RequiredDISPCLK[i][j] = dml_max(v->RequiredDISPCLK[i][j], v->PlaneRequiredDISPCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4033 if ((v->MinDPPCLKUsingSingleDPP[k] / v->NoOfDPP[i][j][k] * (1.0 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4034 > v->MaxDppclkRoundedDownToDFSGranularity) || (v->PlaneRequiredDISPCLK > v->MaxDispclkRoundedDownToDFSGranularity)) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4035 v->DISPCLK_DPPCLK_Support[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4036 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4037 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4038 v->TotalNumberOfActiveDPP[i][j] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4039 v->TotalNumberOfSingleDPPPlanes[i][j] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4040 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4041 v->TotalNumberOfActiveDPP[i][j] = v->TotalNumberOfActiveDPP[i][j] + v->NoOfDPP[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4042 if (v->NoOfDPP[i][j][k] == 1)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4043 v->TotalNumberOfSingleDPPPlanes[i][j] = v->TotalNumberOfSingleDPPPlanes[i][j] + 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4044 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4045 if (j == 1 && v->WhenToDoMPCCombine != dm_mpc_never) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4046 while (!(v->TotalNumberOfActiveDPP[i][j] >= v->MaxNumDPP || v->TotalNumberOfSingleDPPPlanes[i][j] == 0)) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4047 double BWOfNonSplitPlaneOfMaximumBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4048 unsigned int NumberOfNonSplitPlaneOfMaximumBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4049 BWOfNonSplitPlaneOfMaximumBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4050 NumberOfNonSplitPlaneOfMaximumBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4051 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4052 if (v->ReadBandwidthLuma[k] + v->ReadBandwidthChroma[k] > BWOfNonSplitPlaneOfMaximumBandwidth
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4053 && v->ODMCombineEnablePerState[i][k] == dm_odm_combine_mode_disabled && v->MPCCombine[i][j][k] == false) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4054 BWOfNonSplitPlaneOfMaximumBandwidth = v->ReadBandwidthLuma[k] + v->ReadBandwidthChroma[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4055 NumberOfNonSplitPlaneOfMaximumBandwidth = k;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4056 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4057 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4058 v->MPCCombine[i][j][NumberOfNonSplitPlaneOfMaximumBandwidth] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4059 v->NoOfDPP[i][j][NumberOfNonSplitPlaneOfMaximumBandwidth] = 2;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4060 v->RequiredDPPCLK[i][j][NumberOfNonSplitPlaneOfMaximumBandwidth] = v->MinDPPCLKUsingSingleDPP[NumberOfNonSplitPlaneOfMaximumBandwidth]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4061 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100) / 2;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4062 v->TotalNumberOfActiveDPP[i][j] = v->TotalNumberOfActiveDPP[i][j] + 1;
b8cc3e504622e7 Dillon Varone 2021-02-19 4063 v->TotalNumberOfSingleDPPPlanes[i][j] = v->TotalNumberOfSingleDPPPlanes[i][j] - 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4064 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4065 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4066 if (v->TotalNumberOfActiveDPP[i][j] > v->MaxNumDPP) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4067 v->RequiredDISPCLK[i][j] = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4068 v->DISPCLK_DPPCLK_Support[i][j] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4069 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4070 v->ODMCombineEnablePerState[i][k] = dm_odm_combine_mode_disabled;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4071 if (v->SingleDPPViewportSizeSupportPerPlane[k] == false && v->WhenToDoMPCCombine != dm_mpc_never) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4072 v->MPCCombine[i][j][k] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4073 v->NoOfDPP[i][j][k] = 2;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4074 v->RequiredDPPCLK[i][j][k] = v->MinDPPCLKUsingSingleDPP[k] * (1.0 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0) / 2.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4075 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4076 v->MPCCombine[i][j][k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4077 v->NoOfDPP[i][j][k] = 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4078 v->RequiredDPPCLK[i][j][k] = v->MinDPPCLKUsingSingleDPP[k] * (1.0 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4079 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4080 if (!(v->MaxDispclk[i] == v->MaxDispclk[v->soc.num_states - 1] && v->MaxDppclk[i] == v->MaxDppclk[v->soc.num_states - 1])) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4081 v->PlaneRequiredDISPCLK = v->PixelClock[k] * (1.0 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4082 * (1.0 + v->DISPCLKRampingMargin / 100.0);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4083 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4084 v->PlaneRequiredDISPCLK = v->PixelClock[k] * (1.0 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4085 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4086 v->RequiredDISPCLK[i][j] = dml_max(v->RequiredDISPCLK[i][j], v->PlaneRequiredDISPCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4087 if ((v->MinDPPCLKUsingSingleDPP[k] / v->NoOfDPP[i][j][k] * (1.0 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4088 > v->MaxDppclkRoundedDownToDFSGranularity) || (v->PlaneRequiredDISPCLK > v->MaxDispclkRoundedDownToDFSGranularity)) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4089 v->DISPCLK_DPPCLK_Support[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4090 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4091 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4092 v->TotalNumberOfActiveDPP[i][j] = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4093 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4094 v->TotalNumberOfActiveDPP[i][j] = v->TotalNumberOfActiveDPP[i][j] + v->NoOfDPP[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4095 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4096 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4097 v->RequiredDISPCLK[i][j] = dml_max(v->RequiredDISPCLK[i][j], v->WritebackRequiredDISPCLK);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4098 if (v->MaxDispclkRoundedDownToDFSGranularity < v->WritebackRequiredDISPCLK) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4099 v->DISPCLK_DPPCLK_Support[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4100 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4101 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4102 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4103
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4104 /*Total Available Pipes Support Check*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4105
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4106 for (i = 0; i < v->soc.num_states; i++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4107 for (j = 0; j < 2; j++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4108 if (v->TotalNumberOfActiveDPP[i][j] <= v->MaxNumDPP) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4109 v->TotalAvailablePipesSupport[i][j] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4110 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4111 v->TotalAvailablePipesSupport[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4112 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4113 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4114 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4115 /*Display IO and DSC Support Check*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4116
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4117 v->NonsupportedDSCInputBPC = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4118 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4119 if (!(v->DSCInputBitPerComponent[k] == 12.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4120 || v->DSCInputBitPerComponent[k] == 10.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4121 || v->DSCInputBitPerComponent[k] == 8.0)) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4122 v->NonsupportedDSCInputBPC = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4123 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4124 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4125
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4126 /*Number Of DSC Slices*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4127 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4128 if (v->BlendingAndTiming[k] == k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4129 if (v->PixelClockBackEnd[k] > 3200) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4130 v->NumberOfDSCSlices[k] = dml_ceil(v->PixelClockBackEnd[k] / 400.0, 4.0);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4131 } else if (v->PixelClockBackEnd[k] > 1360) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4132 v->NumberOfDSCSlices[k] = 8;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4133 } else if (v->PixelClockBackEnd[k] > 680) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4134 v->NumberOfDSCSlices[k] = 4;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4135 } else if (v->PixelClockBackEnd[k] > 340) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4136 v->NumberOfDSCSlices[k] = 2;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4137 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4138 v->NumberOfDSCSlices[k] = 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4139 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4140 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4141 v->NumberOfDSCSlices[k] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4142 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4143 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4144
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4145 for (i = 0; i < v->soc.num_states; i++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4146 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4147 v->RequiresDSC[i][k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4148 v->RequiresFEC[i][k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4149 if (v->BlendingAndTiming[k] == k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4150 if (v->Output[k] == dm_hdmi) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4151 v->RequiresDSC[i][k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4152 v->RequiresFEC[i][k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4153 v->OutputBppPerState[i][k] = TruncToValidBPP(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4154 dml_min(600.0, v->PHYCLKPerState[i]) * 10,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4155 3,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4156 v->HTotal[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4157 v->HActive[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4158 v->PixelClockBackEnd[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4159 v->ForcedOutputLinkBPP[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4160 false,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4161 v->Output[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4162 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4163 v->DSCInputBitPerComponent[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4164 v->NumberOfDSCSlices[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4165 v->AudioSampleRate[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4166 v->AudioSampleLayout[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4167 v->ODMCombineEnablePerState[i][k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4168 } else if (v->Output[k] == dm_dp || v->Output[k] == dm_edp) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4169 if (v->DSCEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4170 v->RequiresDSC[i][k] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4171 v->LinkDSCEnable = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4172 if (v->Output[k] == dm_dp) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4173 v->RequiresFEC[i][k] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4174 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4175 v->RequiresFEC[i][k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4176 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4177 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4178 v->RequiresDSC[i][k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4179 v->LinkDSCEnable = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4180 v->RequiresFEC[i][k] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4181 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4182
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4183 v->Outbpp = BPP_INVALID;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4184 if (v->PHYCLKPerState[i] >= 270.0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4185 v->Outbpp = TruncToValidBPP(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4186 (1.0 - v->Downspreading / 100.0) * 2700,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4187 v->OutputLinkDPLanes[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4188 v->HTotal[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4189 v->HActive[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4190 v->PixelClockBackEnd[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4191 v->ForcedOutputLinkBPP[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4192 v->LinkDSCEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4193 v->Output[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4194 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4195 v->DSCInputBitPerComponent[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4196 v->NumberOfDSCSlices[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4197 v->AudioSampleRate[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4198 v->AudioSampleLayout[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4199 v->ODMCombineEnablePerState[i][k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4200 v->OutputBppPerState[i][k] = v->Outbpp;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4201 // TODO: Need some other way to handle this nonsense
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4202 // v->OutputTypeAndRatePerState[i][k] = v->Output[k] & " HBR"
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4203 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4204 if (v->Outbpp == BPP_INVALID && v->PHYCLKPerState[i] >= 540.0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4205 v->Outbpp = TruncToValidBPP(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4206 (1.0 - v->Downspreading / 100.0) * 5400,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4207 v->OutputLinkDPLanes[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4208 v->HTotal[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4209 v->HActive[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4210 v->PixelClockBackEnd[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4211 v->ForcedOutputLinkBPP[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4212 v->LinkDSCEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4213 v->Output[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4214 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4215 v->DSCInputBitPerComponent[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4216 v->NumberOfDSCSlices[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4217 v->AudioSampleRate[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4218 v->AudioSampleLayout[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4219 v->ODMCombineEnablePerState[i][k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4220 v->OutputBppPerState[i][k] = v->Outbpp;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4221 // TODO: Need some other way to handle this nonsense
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4222 // v->OutputTypeAndRatePerState[i][k] = v->Output[k] & " HBR2"
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4223 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4224 if (v->Outbpp == BPP_INVALID && v->PHYCLKPerState[i] >= 810.0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4225 v->Outbpp = TruncToValidBPP(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4226 (1.0 - v->Downspreading / 100.0) * 8100,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4227 v->OutputLinkDPLanes[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4228 v->HTotal[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4229 v->HActive[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4230 v->PixelClockBackEnd[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4231 v->ForcedOutputLinkBPP[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4232 v->LinkDSCEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4233 v->Output[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4234 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4235 v->DSCInputBitPerComponent[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4236 v->NumberOfDSCSlices[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4237 v->AudioSampleRate[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4238 v->AudioSampleLayout[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4239 v->ODMCombineEnablePerState[i][k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4240 if (v->Outbpp == BPP_INVALID && v->ForcedOutputLinkBPP[k] == 0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4241 //if (v->Outbpp == BPP_INVALID && v->DSCEnabled[k] == dm_dsc_enable_only_if_necessary && v->ForcedOutputLinkBPP[k] == 0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4242 v->RequiresDSC[i][k] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4243 v->LinkDSCEnable = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4244 if (v->Output[k] == dm_dp) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4245 v->RequiresFEC[i][k] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4246 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4247 v->Outbpp = TruncToValidBPP(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4248 (1.0 - v->Downspreading / 100.0) * 8100,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4249 v->OutputLinkDPLanes[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4250 v->HTotal[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4251 v->HActive[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4252 v->PixelClockBackEnd[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4253 v->ForcedOutputLinkBPP[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4254 v->LinkDSCEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4255 v->Output[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4256 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4257 v->DSCInputBitPerComponent[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4258 v->NumberOfDSCSlices[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4259 v->AudioSampleRate[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4260 v->AudioSampleLayout[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4261 v->ODMCombineEnablePerState[i][k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4262 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4263 v->OutputBppPerState[i][k] = v->Outbpp;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4264 // TODO: Need some other way to handle this nonsense
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4265 // v->OutputTypeAndRatePerState[i][k] = v->Output[k] & " HBR3"
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4266 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4267 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4268 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4269 v->OutputBppPerState[i][k] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4270 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4271 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4272 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4273 for (i = 0; i < v->soc.num_states; i++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4274 v->DIOSupport[i] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4275 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
91a51fbf24e2d9 Wesley Chalmers 2021-01-29 4276 if (!v->skip_dio_check[k] && v->BlendingAndTiming[k] == k && (v->Output[k] == dm_dp || v->Output[k] == dm_edp || v->Output[k] == dm_hdmi)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4277 && (v->OutputBppPerState[i][k] == 0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4278 || (v->OutputFormat[k] == dm_420 && v->Interlace[k] == true && v->ProgressiveToInterlaceUnitInOPP == true))) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4279 v->DIOSupport[i] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4280 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4281 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4282 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4283
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4284 for (i = 0; i < v->soc.num_states; ++i) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4285 v->ODMCombine4To1SupportCheckOK[i] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4286 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4287 if (v->BlendingAndTiming[k] == k && v->ODMCombineEnablePerState[i][k] == dm_odm_combine_mode_4to1
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4288 && (v->ODMCombine4To1Supported == false || v->Output[k] == dm_dp || v->Output[k] == dm_edp || v->Output[k] == dm_hdmi)) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4289 v->ODMCombine4To1SupportCheckOK[i] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4290 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4291 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4292 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4293
346cf627fb27c0 Nikola Cornij 2021-05-18 4294 /* Skip dscclk validation: as long as dispclk is supported, dscclk is also implicitly supported */
346cf627fb27c0 Nikola Cornij 2021-05-18 4295
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4296 for (i = 0; i < v->soc.num_states; i++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4297 v->NotEnoughDSCUnits[i] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4298 v->TotalDSCUnitsRequired = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4299 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4300 if (v->RequiresDSC[i][k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4301 if (v->ODMCombineEnablePerState[i][k] == dm_odm_combine_mode_4to1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4302 v->TotalDSCUnitsRequired = v->TotalDSCUnitsRequired + 4.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4303 } else if (v->ODMCombineEnablePerState[i][k] == dm_odm_combine_mode_2to1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4304 v->TotalDSCUnitsRequired = v->TotalDSCUnitsRequired + 2.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4305 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4306 v->TotalDSCUnitsRequired = v->TotalDSCUnitsRequired + 1.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4307 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4308 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4309 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4310 if (v->TotalDSCUnitsRequired > v->NumberOfDSC) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4311 v->NotEnoughDSCUnits[i] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4312 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4313 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4314 /*DSC Delay per state*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4315
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4316 for (i = 0; i < v->soc.num_states; i++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4317 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4318 if (v->OutputBppPerState[i][k] == BPP_INVALID) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4319 v->BPP = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4320 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4321 v->BPP = v->OutputBppPerState[i][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4322 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4323 if (v->RequiresDSC[i][k] == true && v->BPP != 0.0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4324 if (v->ODMCombineEnablePerState[i][k] == dm_odm_combine_mode_disabled) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4325 v->DSCDelayPerState[i][k] = dscceComputeDelay(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4326 v->DSCInputBitPerComponent[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4327 v->BPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4328 dml_ceil(1.0 * v->HActive[k] / v->NumberOfDSCSlices[k], 1.0),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4329 v->NumberOfDSCSlices[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4330 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4331 v->Output[k]) + dscComputeDelay(v->OutputFormat[k], v->Output[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4332 } else if (v->ODMCombineEnablePerState[i][k] == dm_odm_combine_mode_2to1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4333 v->DSCDelayPerState[i][k] = 2.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4334 * dscceComputeDelay(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4335 v->DSCInputBitPerComponent[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4336 v->BPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4337 dml_ceil(1.0 * v->HActive[k] / v->NumberOfDSCSlices[k], 1.0),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4338 v->NumberOfDSCSlices[k] / 2,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4339 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4340 v->Output[k]) + dscComputeDelay(v->OutputFormat[k], v->Output[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4341 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4342 v->DSCDelayPerState[i][k] = 4.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4343 * (dscceComputeDelay(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4344 v->DSCInputBitPerComponent[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4345 v->BPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4346 dml_ceil(1.0 * v->HActive[k] / v->NumberOfDSCSlices[k], 1.0),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4347 v->NumberOfDSCSlices[k] / 4,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4348 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4349 v->Output[k]) + dscComputeDelay(v->OutputFormat[k], v->Output[k]));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4350 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4351 v->DSCDelayPerState[i][k] = v->DSCDelayPerState[i][k] * v->PixelClock[k] / v->PixelClockBackEnd[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4352 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4353 v->DSCDelayPerState[i][k] = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4354 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4355 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4356 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4357 for (m = 0; m <= v->NumberOfActivePlanes - 1; m++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4358 if (v->BlendingAndTiming[k] == m && v->RequiresDSC[i][m] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4359 v->DSCDelayPerState[i][k] = v->DSCDelayPerState[i][m];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4360 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4361 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4362 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4363 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4364
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4365 //Calculate Swath, DET Configuration, DCFCLKDeepSleep
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4366 //
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4367 for (i = 0; i < mode_lib->soc.num_states; ++i) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4368 for (j = 0; j <= 1; ++j) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4369 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4370 v->RequiredDPPCLKThisState[k] = v->RequiredDPPCLK[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4371 v->NoOfDPPThisState[k] = v->NoOfDPP[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4372 v->ODMCombineEnableThisState[k] = v->ODMCombineEnablePerState[i][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4373 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4374
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4375 CalculateSwathAndDETConfiguration(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4376 false,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4377 v->NumberOfActivePlanes,
4469201b19354a Chaitanya Dhere 2021-04-20 4378 v->DETBufferSizeInKByte[0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4379 v->MaximumSwathWidthLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4380 v->MaximumSwathWidthChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4381 v->SourceScan,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4382 v->SourcePixelFormat,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4383 v->SurfaceTiling,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4384 v->ViewportWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4385 v->ViewportHeight,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4386 v->SurfaceWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4387 v->SurfaceWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4388 v->SurfaceHeightY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4389 v->SurfaceHeightC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4390 v->Read256BlockHeightY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4391 v->Read256BlockHeightC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4392 v->Read256BlockWidthY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4393 v->Read256BlockWidthC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4394 v->ODMCombineEnableThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4395 v->BlendingAndTiming,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4396 v->BytePerPixelY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4397 v->BytePerPixelC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4398 v->BytePerPixelInDETY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4399 v->BytePerPixelInDETC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4400 v->HActive,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4401 v->HRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4402 v->HRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4403 v->NoOfDPPThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4404 v->swath_width_luma_ub_this_state,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4405 v->swath_width_chroma_ub_this_state,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4406 v->SwathWidthYThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4407 v->SwathWidthCThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4408 v->SwathHeightYThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4409 v->SwathHeightCThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4410 v->DETBufferSizeYThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4411 v->DETBufferSizeCThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4412 v->dummystring,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4413 &v->ViewportSizeSupport[i][j]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4414
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4415 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4416 v->swath_width_luma_ub_all_states[i][j][k] = v->swath_width_luma_ub_this_state[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4417 v->swath_width_chroma_ub_all_states[i][j][k] = v->swath_width_chroma_ub_this_state[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4418 v->SwathWidthYAllStates[i][j][k] = v->SwathWidthYThisState[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4419 v->SwathWidthCAllStates[i][j][k] = v->SwathWidthCThisState[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4420 v->SwathHeightYAllStates[i][j][k] = v->SwathHeightYThisState[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4421 v->SwathHeightCAllStates[i][j][k] = v->SwathHeightCThisState[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4422 v->DETBufferSizeYAllStates[i][j][k] = v->DETBufferSizeYThisState[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4423 v->DETBufferSizeCAllStates[i][j][k] = v->DETBufferSizeCThisState[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4424 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4425
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4426 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4427 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4428 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4429 v->cursor_bw[k] = v->NumberOfCursors[k] * v->CursorWidth[k][0] * v->CursorBPP[k][0] / 8.0 / (v->HTotal[k] / v->PixelClock[k]) * v->VRatio[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4430 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4431
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4432 for (i = 0; i < v->soc.num_states; i++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4433 for (j = 0; j < 2; j++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4434 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4435 v->swath_width_luma_ub_this_state[k] = v->swath_width_luma_ub_all_states[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4436 v->swath_width_chroma_ub_this_state[k] = v->swath_width_chroma_ub_all_states[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4437 v->SwathWidthYThisState[k] = v->SwathWidthYAllStates[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4438 v->SwathWidthCThisState[k] = v->SwathWidthCAllStates[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4439 v->SwathHeightYThisState[k] = v->SwathHeightYAllStates[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4440 v->SwathHeightCThisState[k] = v->SwathHeightCAllStates[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4441 v->DETBufferSizeYThisState[k] = v->DETBufferSizeYAllStates[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4442 v->DETBufferSizeCThisState[k] = v->DETBufferSizeCAllStates[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4443 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4444
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4445 v->TotalNumberOfDCCActiveDPP[i][j] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4446 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4447 if (v->DCCEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4448 v->TotalNumberOfDCCActiveDPP[i][j] = v->TotalNumberOfDCCActiveDPP[i][j] + v->NoOfDPP[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4449 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4450 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4451
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4452 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4453 if (v->SourcePixelFormat[k] == dm_420_8 || v->SourcePixelFormat[k] == dm_420_10 || v->SourcePixelFormat[k] == dm_420_12
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4454 || v->SourcePixelFormat[k] == dm_rgbe_alpha) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4455
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4456 if ((v->SourcePixelFormat[k] == dm_420_10 || v->SourcePixelFormat[k] == dm_420_12) && v->SourceScan[k] != dm_vert) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4457 v->PTEBufferSizeInRequestsForLuma = (v->PTEBufferSizeInRequestsLuma + v->PTEBufferSizeInRequestsChroma) / 2;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4458 v->PTEBufferSizeInRequestsForChroma = v->PTEBufferSizeInRequestsForLuma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4459 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4460 v->PTEBufferSizeInRequestsForLuma = v->PTEBufferSizeInRequestsLuma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4461 v->PTEBufferSizeInRequestsForChroma = v->PTEBufferSizeInRequestsChroma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4462 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4463
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4464 v->PDEAndMetaPTEBytesPerFrameC = CalculateVMAndRowBytes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4465 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4466 v->DCCEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4467 v->Read256BlockHeightC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4468 v->Read256BlockWidthY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4469 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4470 v->SurfaceTiling[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4471 v->BytePerPixelC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4472 v->SourceScan[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4473 v->SwathWidthCThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4474 v->ViewportHeightChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4475 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4476 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4477 v->HostVMMaxNonCachedPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4478 v->GPUVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4479 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4480 v->PTEBufferSizeInRequestsForChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4481 v->PitchC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4482 0.0,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4483 &v->MacroTileWidthC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4484 &v->MetaRowBytesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4485 &v->DPTEBytesPerRowC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4486 &v->PTEBufferSizeNotExceededC[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4487 &v->dummyinteger7,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4488 &v->dpte_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4489 &v->dummyinteger28,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4490 &v->dummyinteger26,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4491 &v->dummyinteger23,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4492 &v->meta_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4493 &v->dummyinteger8,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4494 &v->dummyinteger9,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4495 &v->dummyinteger19,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4496 &v->dummyinteger20,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4497 &v->dummyinteger17,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4498 &v->dummyinteger10,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4499 &v->dummyinteger11);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4500
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4501 v->PrefetchLinesC[i][j][k] = CalculatePrefetchSourceLines(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4502 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4503 v->VRatioChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4504 v->VTAPsChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4505 v->Interlace[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4506 v->ProgressiveToInterlaceUnitInOPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4507 v->SwathHeightCThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4508 v->ViewportYStartC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4509 &v->PrefillC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4510 &v->MaxNumSwC[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4511 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4512 v->PTEBufferSizeInRequestsForLuma = v->PTEBufferSizeInRequestsLuma + v->PTEBufferSizeInRequestsChroma;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4513 v->PTEBufferSizeInRequestsForChroma = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4514 v->PDEAndMetaPTEBytesPerFrameC = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4515 v->MetaRowBytesC = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4516 v->DPTEBytesPerRowC = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4517 v->PrefetchLinesC[i][j][k] = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4518 v->PTEBufferSizeNotExceededC[i][j][k] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4519 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4520 v->PDEAndMetaPTEBytesPerFrameY = CalculateVMAndRowBytes(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4521 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4522 v->DCCEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4523 v->Read256BlockHeightY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4524 v->Read256BlockWidthY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4525 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4526 v->SurfaceTiling[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4527 v->BytePerPixelY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4528 v->SourceScan[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4529 v->SwathWidthYThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4530 v->ViewportHeight[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4531 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4532 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4533 v->HostVMMaxNonCachedPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4534 v->GPUVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4535 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4536 v->PTEBufferSizeInRequestsForLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4537 v->PitchY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4538 v->DCCMetaPitchY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4539 &v->MacroTileWidthY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4540 &v->MetaRowBytesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4541 &v->DPTEBytesPerRowY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4542 &v->PTEBufferSizeNotExceededY[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4543 v->dummyinteger4,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4544 &v->dpte_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4545 &v->dummyinteger29,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4546 &v->dummyinteger27,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4547 &v->dummyinteger24,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4548 &v->meta_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4549 &v->dummyinteger25,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4550 &v->dpte_group_bytes[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4551 &v->dummyinteger21,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4552 &v->dummyinteger22,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4553 &v->dummyinteger18,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4554 &v->dummyinteger5,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4555 &v->dummyinteger6);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4556 v->PrefetchLinesY[i][j][k] = CalculatePrefetchSourceLines(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4557 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4558 v->VRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4559 v->vtaps[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4560 v->Interlace[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4561 v->ProgressiveToInterlaceUnitInOPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4562 v->SwathHeightYThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4563 v->ViewportYStartY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4564 &v->PrefillY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4565 &v->MaxNumSwY[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4566 v->PDEAndMetaPTEBytesPerFrame[i][j][k] = v->PDEAndMetaPTEBytesPerFrameY + v->PDEAndMetaPTEBytesPerFrameC;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4567 v->MetaRowBytes[i][j][k] = v->MetaRowBytesY + v->MetaRowBytesC;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4568 v->DPTEBytesPerRow[i][j][k] = v->DPTEBytesPerRowY + v->DPTEBytesPerRowC;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4569
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4570 CalculateRowBandwidth(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4571 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4572 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4573 v->VRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4574 v->VRatioChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4575 v->DCCEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4576 v->HTotal[k] / v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4577 v->MetaRowBytesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4578 v->MetaRowBytesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4579 v->meta_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4580 v->meta_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4581 v->DPTEBytesPerRowY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4582 v->DPTEBytesPerRowC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4583 v->dpte_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4584 v->dpte_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4585 &v->meta_row_bandwidth[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4586 &v->dpte_row_bandwidth[i][j][k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4587 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4588 v->UrgLatency[i] = CalculateUrgentLatency(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4589 v->UrgentLatencyPixelDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4590 v->UrgentLatencyPixelMixedWithVMData,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4591 v->UrgentLatencyVMDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4592 v->DoUrgentLatencyAdjustment,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4593 v->UrgentLatencyAdjustmentFabricClockComponent,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4594 v->UrgentLatencyAdjustmentFabricClockReference,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4595 v->FabricClockPerState[i]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4596
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4597 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4598 CalculateUrgentBurstFactor(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4599 v->swath_width_luma_ub_this_state[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4600 v->swath_width_chroma_ub_this_state[k],
4469201b19354a Chaitanya Dhere 2021-04-20 4601 v->DETBufferSizeInKByte[0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4602 v->SwathHeightYThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4603 v->SwathHeightCThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4604 v->HTotal[k] / v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4605 v->UrgLatency[i],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4606 v->CursorBufferSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4607 v->CursorWidth[k][0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4608 v->CursorBPP[k][0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4609 v->VRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4610 v->VRatioChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4611 v->BytePerPixelInDETY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4612 v->BytePerPixelInDETC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4613 v->DETBufferSizeYThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4614 v->DETBufferSizeCThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4615 &v->UrgentBurstFactorCursor[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4616 &v->UrgentBurstFactorLuma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4617 &v->UrgentBurstFactorChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4618 &NotUrgentLatencyHiding[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4619 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4620
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4621 v->NotUrgentLatencyHiding[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4622 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4623 if (NotUrgentLatencyHiding[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4624 v->NotUrgentLatencyHiding[i][j] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4625 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4626 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4627
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4628 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4629 v->VActivePixelBandwidth[i][j][k] = v->ReadBandwidthLuma[k] * v->UrgentBurstFactorLuma[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4630 + v->ReadBandwidthChroma[k] * v->UrgentBurstFactorChroma[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4631 v->VActiveCursorBandwidth[i][j][k] = v->cursor_bw[k] * v->UrgentBurstFactorCursor[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4632 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4633
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4634 v->TotalVActivePixelBandwidth[i][j] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4635 v->TotalVActiveCursorBandwidth[i][j] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4636 v->TotalMetaRowBandwidth[i][j] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4637 v->TotalDPTERowBandwidth[i][j] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4638 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4639 v->TotalVActivePixelBandwidth[i][j] = v->TotalVActivePixelBandwidth[i][j] + v->VActivePixelBandwidth[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4640 v->TotalVActiveCursorBandwidth[i][j] = v->TotalVActiveCursorBandwidth[i][j] + v->VActiveCursorBandwidth[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4641 v->TotalMetaRowBandwidth[i][j] = v->TotalMetaRowBandwidth[i][j] + v->NoOfDPP[i][j][k] * v->meta_row_bandwidth[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4642 v->TotalDPTERowBandwidth[i][j] = v->TotalDPTERowBandwidth[i][j] + v->NoOfDPP[i][j][k] * v->dpte_row_bandwidth[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4643 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4644
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4645 CalculateDCFCLKDeepSleep(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4646 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4647 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4648 v->BytePerPixelY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4649 v->BytePerPixelC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4650 v->VRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4651 v->VRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4652 v->SwathWidthYThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4653 v->SwathWidthCThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4654 v->NoOfDPPThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4655 v->HRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4656 v->HRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4657 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4658 v->PSCL_FACTOR,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4659 v->PSCL_FACTOR_CHROMA,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4660 v->RequiredDPPCLKThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4661 v->ReadBandwidthLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4662 v->ReadBandwidthChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4663 v->ReturnBusWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4664 &v->ProjectedDCFCLKDeepSleep[i][j]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4665 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4666 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4667
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4668 //Calculate Return BW
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4669
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4670 for (i = 0; i < mode_lib->soc.num_states; ++i) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4671 for (j = 0; j <= 1; ++j) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4672 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4673 if (v->BlendingAndTiming[k] == k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4674 if (v->WritebackEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4675 v->WritebackDelayTime[k] = v->WritebackLatency
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4676 + CalculateWriteBackDelay(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4677 v->WritebackPixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4678 v->WritebackHRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4679 v->WritebackVRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4680 v->WritebackVTaps[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4681 v->WritebackDestinationWidth[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4682 v->WritebackDestinationHeight[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4683 v->WritebackSourceHeight[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4684 v->HTotal[k]) / v->RequiredDISPCLK[i][j];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4685 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4686 v->WritebackDelayTime[k] = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4687 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4688 for (m = 0; m <= v->NumberOfActivePlanes - 1; m++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4689 if (v->BlendingAndTiming[m] == k && v->WritebackEnable[m] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4690 v->WritebackDelayTime[k] = dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4691 v->WritebackDelayTime[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4692 v->WritebackLatency
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4693 + CalculateWriteBackDelay(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4694 v->WritebackPixelFormat[m],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4695 v->WritebackHRatio[m],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4696 v->WritebackVRatio[m],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4697 v->WritebackVTaps[m],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4698 v->WritebackDestinationWidth[m],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4699 v->WritebackDestinationHeight[m],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4700 v->WritebackSourceHeight[m],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4701 v->HTotal[m]) / v->RequiredDISPCLK[i][j]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4702 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4703 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4704 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4705 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4706 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4707 for (m = 0; m <= v->NumberOfActivePlanes - 1; m++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4708 if (v->BlendingAndTiming[k] == m) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4709 v->WritebackDelayTime[k] = v->WritebackDelayTime[m];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4710 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4711 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4712 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4713 v->MaxMaxVStartup[i][j] = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4714 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4715 v->MaximumVStartup[i][j][k] = v->VTotal[k] - v->VActive[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4716 - dml_max(1.0, dml_ceil(1.0 * v->WritebackDelayTime[k] / (v->HTotal[k] / v->PixelClock[k]), 1.0));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4717 v->MaxMaxVStartup[i][j] = dml_max(v->MaxMaxVStartup[i][j], v->MaximumVStartup[i][j][k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4718 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4719 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4720 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4721
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4722 ReorderingBytes = v->NumberOfChannels
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4723 * dml_max3(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4724 v->UrgentOutOfOrderReturnPerChannelPixelDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4725 v->UrgentOutOfOrderReturnPerChannelPixelMixedWithVMData,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4726 v->UrgentOutOfOrderReturnPerChannelVMDataOnly);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4727 v->FinalDRAMClockChangeLatency = (v->DRAMClockChangeLatencyOverride > 0 ? v->DRAMClockChangeLatencyOverride : v->DRAMClockChangeLatency);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4728
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4729 for (i = 0; i < mode_lib->soc.num_states; ++i) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4730 for (j = 0; j <= 1; ++j) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4731 v->DCFCLKState[i][j] = v->DCFCLKPerState[i];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4732 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4733 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4734
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4735 if (v->UseMinimumRequiredDCFCLK == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4736 UseMinimumDCFCLK(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4737 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4738 v->MaxInterDCNTileRepeaters,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4739 MaxPrefetchMode,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4740 v->FinalDRAMClockChangeLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4741 v->SREnterPlusExitTime,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4742 v->ReturnBusWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4743 v->RoundTripPingLatencyCycles,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4744 ReorderingBytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4745 v->PixelChunkSizeInKByte,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4746 v->MetaChunkSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4747 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4748 v->GPUVMMaxPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4749 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4750 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4751 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4752 v->HostVMMaxNonCachedPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4753 v->DynamicMetadataVMEnabled,
9f95e77800f3ba Alvin Lee 2021-06-17 4754 v->ImmediateFlipRequirement[0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4755 v->ProgressiveToInterlaceUnitInOPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4756 v->MaxAveragePercentOfIdealSDPPortBWDisplayCanUseInNormalSystemOperation,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4757 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4758 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyVMDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4759 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4760 v->VTotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4761 v->VActive,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4762 v->DynamicMetadataTransmittedBytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4763 v->DynamicMetadataLinesBeforeActiveRequired,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4764 v->Interlace,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4765 v->RequiredDPPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4766 v->RequiredDISPCLK,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4767 v->UrgLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4768 v->NoOfDPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4769 v->ProjectedDCFCLKDeepSleep,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4770 v->MaximumVStartup,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4771 v->TotalVActivePixelBandwidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4772 v->TotalVActiveCursorBandwidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4773 v->TotalMetaRowBandwidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4774 v->TotalDPTERowBandwidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4775 v->TotalNumberOfActiveDPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4776 v->TotalNumberOfDCCActiveDPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4777 v->dpte_group_bytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4778 v->PrefetchLinesY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4779 v->PrefetchLinesC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4780 v->swath_width_luma_ub_all_states,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4781 v->swath_width_chroma_ub_all_states,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4782 v->BytePerPixelY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4783 v->BytePerPixelC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4784 v->HTotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4785 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4786 v->PDEAndMetaPTEBytesPerFrame,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4787 v->DPTEBytesPerRow,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4788 v->MetaRowBytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4789 v->DynamicMetadataEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4790 v->VActivePixelBandwidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4791 v->VActiveCursorBandwidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4792 v->ReadBandwidthLuma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4793 v->ReadBandwidthChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4794 v->DCFCLKPerState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4795 v->DCFCLKState);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4796
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4797 if (v->ClampMinDCFCLK) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4798 /* Clamp calculated values to actual minimum */
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4799 for (i = 0; i < mode_lib->soc.num_states; ++i) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4800 for (j = 0; j <= 1; ++j) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4801 if (v->DCFCLKState[i][j] < mode_lib->soc.min_dcfclk) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4802 v->DCFCLKState[i][j] = mode_lib->soc.min_dcfclk;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4803 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4804 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4805 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4806 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4807 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4808
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4809 for (i = 0; i < mode_lib->soc.num_states; ++i) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4810 for (j = 0; j <= 1; ++j) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4811 v->IdealSDPPortBandwidthPerState[i][j] = dml_min3(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4812 v->ReturnBusWidth * v->DCFCLKState[i][j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4813 v->DRAMSpeedPerState[i] * v->NumberOfChannels * v->DRAMChannelWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4814 v->FabricClockPerState[i] * v->FabricDatapathToDCNDataReturn);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4815 if (v->HostVMEnable != true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4816 v->ReturnBWPerState[i][j] = v->IdealSDPPortBandwidthPerState[i][j] * v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelDataOnly
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4817 / 100;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4818 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4819 v->ReturnBWPerState[i][j] = v->IdealSDPPortBandwidthPerState[i][j]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4820 * v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData / 100;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4821 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4822 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4823 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4824
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4825 //Re-ordering Buffer Support Check
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4826
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4827 for (i = 0; i < mode_lib->soc.num_states; ++i) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4828 for (j = 0; j <= 1; ++j) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4829 if ((v->ROBBufferSizeInKByte - v->PixelChunkSizeInKByte) * 1024 / v->ReturnBWPerState[i][j]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4830 > (v->RoundTripPingLatencyCycles + 32) / v->DCFCLKState[i][j] + ReorderingBytes / v->ReturnBWPerState[i][j]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4831 v->ROBSupport[i][j] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4832 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4833 v->ROBSupport[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4834 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4835 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4836 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4837
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4838 //Vertical Active BW support check
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4839
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4840 MaxTotalVActiveRDBandwidth = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4841 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4842 MaxTotalVActiveRDBandwidth = MaxTotalVActiveRDBandwidth + v->ReadBandwidthLuma[k] + v->ReadBandwidthChroma[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4843 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4844
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4845 for (i = 0; i < mode_lib->soc.num_states; ++i) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4846 for (j = 0; j <= 1; ++j) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4847 v->MaxTotalVerticalActiveAvailableBandwidth[i][j] = dml_min(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4848 v->IdealSDPPortBandwidthPerState[i][j] * v->MaxAveragePercentOfIdealSDPPortBWDisplayCanUseInNormalSystemOperation / 100,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4849 v->DRAMSpeedPerState[i] * v->NumberOfChannels * v->DRAMChannelWidth * v->MaxAveragePercentOfIdealDRAMBWDisplayCanUseInNormalSystemOperation
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4850 / 100);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4851 if (MaxTotalVActiveRDBandwidth <= v->MaxTotalVerticalActiveAvailableBandwidth[i][j]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4852 v->TotalVerticalActiveBandwidthSupport[i][j] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4853 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4854 v->TotalVerticalActiveBandwidthSupport[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4855 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4856 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4857 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4858
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4859 //Prefetch Check
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4860
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4861 for (i = 0; i < mode_lib->soc.num_states; ++i) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4862 for (j = 0; j <= 1; ++j) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4863 int NextPrefetchModeState = MinPrefetchMode;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4864
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4865 v->TimeCalc = 24 / v->ProjectedDCFCLKDeepSleep[i][j];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4866
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4867 v->BandwidthWithoutPrefetchSupported[i][j] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4868 if (v->TotalVActivePixelBandwidth[i][j] + v->TotalVActiveCursorBandwidth[i][j] + v->TotalMetaRowBandwidth[i][j] + v->TotalDPTERowBandwidth[i][j]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4869 > v->ReturnBWPerState[i][j] || v->NotUrgentLatencyHiding[i][j]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4870 v->BandwidthWithoutPrefetchSupported[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4871 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4872
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4873 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4874 v->NoOfDPPThisState[k] = v->NoOfDPP[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4875 v->swath_width_luma_ub_this_state[k] = v->swath_width_luma_ub_all_states[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4876 v->swath_width_chroma_ub_this_state[k] = v->swath_width_chroma_ub_all_states[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4877 v->SwathWidthYThisState[k] = v->SwathWidthYAllStates[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4878 v->SwathWidthCThisState[k] = v->SwathWidthCAllStates[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4879 v->SwathHeightYThisState[k] = v->SwathHeightYAllStates[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4880 v->SwathHeightCThisState[k] = v->SwathHeightCAllStates[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4881 v->DETBufferSizeYThisState[k] = v->DETBufferSizeYAllStates[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4882 v->DETBufferSizeCThisState[k] = v->DETBufferSizeCAllStates[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4883 v->ODMCombineEnabled[k] = v->ODMCombineEnablePerState[i][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4884 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4885
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4886 v->ExtraLatency = CalculateExtraLatency(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4887 v->RoundTripPingLatencyCycles,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4888 ReorderingBytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4889 v->DCFCLKState[i][j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4890 v->TotalNumberOfActiveDPP[i][j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4891 v->PixelChunkSizeInKByte,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4892 v->TotalNumberOfDCCActiveDPP[i][j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4893 v->MetaChunkSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4894 v->ReturnBWPerState[i][j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4895 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4896 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4897 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4898 v->NoOfDPPThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4899 v->dpte_group_bytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4900 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4901 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyVMDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4902 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4903 v->HostVMMaxNonCachedPageTableLevels);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4904
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4905 v->NextMaxVStartup = v->MaxMaxVStartup[i][j];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4906 do {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4907 v->PrefetchModePerState[i][j] = NextPrefetchModeState;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4908 v->MaxVStartup = v->NextMaxVStartup;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4909
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4910 v->TWait = CalculateTWait(v->PrefetchModePerState[i][j], v->FinalDRAMClockChangeLatency, v->UrgLatency[i], v->SREnterPlusExitTime);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4911
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4912 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4913 Pipe myPipe = { 0 };
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4914
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4915 myPipe.DPPCLK = v->RequiredDPPCLK[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4916 myPipe.DISPCLK = v->RequiredDISPCLK[i][j];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4917 myPipe.PixelClock = v->PixelClock[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4918 myPipe.DCFCLKDeepSleep = v->ProjectedDCFCLKDeepSleep[i][j];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4919 myPipe.DPPPerPlane = v->NoOfDPP[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4920 myPipe.ScalerEnabled = v->ScalerEnabled[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4921 myPipe.SourceScan = v->SourceScan[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4922 myPipe.BlockWidth256BytesY = v->Read256BlockWidthY[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4923 myPipe.BlockHeight256BytesY = v->Read256BlockHeightY[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4924 myPipe.BlockWidth256BytesC = v->Read256BlockWidthC[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4925 myPipe.BlockHeight256BytesC = v->Read256BlockHeightC[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4926 myPipe.InterlaceEnable = v->Interlace[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4927 myPipe.NumberOfCursors = v->NumberOfCursors[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4928 myPipe.VBlank = v->VTotal[k] - v->VActive[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4929 myPipe.HTotal = v->HTotal[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4930 myPipe.DCCEnable = v->DCCEnable[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4931 myPipe.ODMCombineEnabled = !!v->ODMCombineEnabled[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4932
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4933 v->NoTimeForPrefetch[i][j][k] = CalculatePrefetchSchedule(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4934 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4935 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4936 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyVMDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4937 &myPipe,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4938 v->DSCDelayPerState[i][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4939 v->DPPCLKDelaySubtotal + v->DPPCLKDelayCNVCFormater,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4940 v->DPPCLKDelaySCL,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4941 v->DPPCLKDelaySCLLBOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4942 v->DPPCLKDelayCNVCCursor,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4943 v->DISPCLKDelaySubtotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4944 v->SwathWidthYThisState[k] / v->HRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4945 v->OutputFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4946 v->MaxInterDCNTileRepeaters,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4947 dml_min(v->MaxVStartup, v->MaximumVStartup[i][j][k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4948 v->MaximumVStartup[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4949 v->GPUVMMaxPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4950 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4951 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4952 v->HostVMMaxNonCachedPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4953 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4954 v->DynamicMetadataEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4955 v->DynamicMetadataVMEnabled,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4956 v->DynamicMetadataLinesBeforeActiveRequired[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4957 v->DynamicMetadataTransmittedBytes[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4958 v->UrgLatency[i],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4959 v->ExtraLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4960 v->TimeCalc,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4961 v->PDEAndMetaPTEBytesPerFrame[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4962 v->MetaRowBytes[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4963 v->DPTEBytesPerRow[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4964 v->PrefetchLinesY[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4965 v->SwathWidthYThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4966 v->BytePerPixelY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4967 v->PrefillY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4968 v->MaxNumSwY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4969 v->PrefetchLinesC[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4970 v->SwathWidthCThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4971 v->BytePerPixelC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4972 v->PrefillC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4973 v->MaxNumSwC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4974 v->swath_width_luma_ub_this_state[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4975 v->swath_width_chroma_ub_this_state[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4976 v->SwathHeightYThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4977 v->SwathHeightCThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4978 v->TWait,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4979 v->ProgressiveToInterlaceUnitInOPP,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4980 &v->DSTXAfterScaler[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4981 &v->DSTYAfterScaler[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4982 &v->LineTimesForPrefetch[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4983 &v->PrefetchBW[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4984 &v->LinesForMetaPTE[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4985 &v->LinesForMetaAndDPTERow[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4986 &v->VRatioPreY[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4987 &v->VRatioPreC[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4988 &v->RequiredPrefetchPixelDataBWLuma[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4989 &v->RequiredPrefetchPixelDataBWChroma[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4990 &v->NoTimeForDynamicMetadata[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4991 &v->Tno_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4992 &v->prefetch_vmrow_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4993 &v->Tdmdl_vm[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4994 &v->Tdmdl[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4995 &v->VUpdateOffsetPix[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4996 &v->VUpdateWidthPix[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4997 &v->VReadyOffsetPix[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4998 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 4999
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5000 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5001 CalculateUrgentBurstFactor(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5002 v->swath_width_luma_ub_this_state[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5003 v->swath_width_chroma_ub_this_state[k],
4469201b19354a Chaitanya Dhere 2021-04-20 5004 v->DETBufferSizeInKByte[0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5005 v->SwathHeightYThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5006 v->SwathHeightCThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5007 v->HTotal[k] / v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5008 v->UrgentLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5009 v->CursorBufferSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5010 v->CursorWidth[k][0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5011 v->CursorBPP[k][0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5012 v->VRatioPreY[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5013 v->VRatioPreC[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5014 v->BytePerPixelInDETY[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5015 v->BytePerPixelInDETC[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5016 v->DETBufferSizeYThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5017 v->DETBufferSizeCThisState[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5018 &v->UrgentBurstFactorCursorPre[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5019 &v->UrgentBurstFactorLumaPre[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5020 &v->UrgentBurstFactorChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5021 &v->NoUrgentLatencyHidingPre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5022 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5023
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5024 v->MaximumReadBandwidthWithPrefetch = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5025 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5026 v->cursor_bw_pre[k] = v->NumberOfCursors[k] * v->CursorWidth[k][0] * v->CursorBPP[k][0] / 8.0 / (v->HTotal[k] / v->PixelClock[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5027 * v->VRatioPreY[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5028
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5029 v->MaximumReadBandwidthWithPrefetch = v->MaximumReadBandwidthWithPrefetch
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5030 + dml_max4(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5031 v->VActivePixelBandwidth[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5032 v->VActiveCursorBandwidth[i][j][k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5033 + v->NoOfDPP[i][j][k] * (v->meta_row_bandwidth[i][j][k] + v->dpte_row_bandwidth[i][j][k]),
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5034 v->NoOfDPP[i][j][k] * v->prefetch_vmrow_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5035 v->NoOfDPP[i][j][k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5036 * (v->RequiredPrefetchPixelDataBWLuma[i][j][k] * v->UrgentBurstFactorLumaPre[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5037 + v->RequiredPrefetchPixelDataBWChroma[i][j][k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5038 * v->UrgentBurstFactorChromaPre[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5039 + v->cursor_bw_pre[k] * v->UrgentBurstFactorCursorPre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5040 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5041
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5042 v->NotEnoughUrgentLatencyHidingPre = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5043 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5044 if (v->NoUrgentLatencyHidingPre[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5045 v->NotEnoughUrgentLatencyHidingPre = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5046 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5047 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5048
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5049 v->PrefetchSupported[i][j] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5050 if (v->BandwidthWithoutPrefetchSupported[i][j] == false || v->MaximumReadBandwidthWithPrefetch > v->ReturnBWPerState[i][j]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5051 || v->NotEnoughUrgentLatencyHidingPre == 1) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5052 v->PrefetchSupported[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5053 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5054 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5055 if (v->LineTimesForPrefetch[k] < 2.0 || v->LinesForMetaPTE[k] >= 32.0 || v->LinesForMetaAndDPTERow[k] >= 16.0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5056 || v->NoTimeForPrefetch[i][j][k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5057 v->PrefetchSupported[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5058 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5059 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5060
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5061 v->DynamicMetadataSupported[i][j] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5062 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5063 if (v->NoTimeForDynamicMetadata[i][j][k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5064 v->DynamicMetadataSupported[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5065 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5066 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5067
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5068 v->VRatioInPrefetchSupported[i][j] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5069 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5070 if (v->VRatioPreY[i][j][k] > 4.0 || v->VRatioPreC[i][j][k] > 4.0 || v->NoTimeForPrefetch[i][j][k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5071 v->VRatioInPrefetchSupported[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5072 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5073 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5074 v->AnyLinesForVMOrRowTooLarge = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5075 for (k = 0; k < v->NumberOfActivePlanes; ++k) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5076 if (v->LinesForMetaAndDPTERow[k] >= 16 || v->LinesForMetaPTE[k] >= 32) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5077 v->AnyLinesForVMOrRowTooLarge = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5078 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5079 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5080
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5081 if (v->PrefetchSupported[i][j] == true && v->VRatioInPrefetchSupported[i][j] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5082 v->BandwidthAvailableForImmediateFlip = v->ReturnBWPerState[i][j];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5083 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5084 v->BandwidthAvailableForImmediateFlip = v->BandwidthAvailableForImmediateFlip
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5085 - dml_max(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5086 v->VActivePixelBandwidth[i][j][k] + v->VActiveCursorBandwidth[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5087 v->NoOfDPP[i][j][k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5088 * (v->RequiredPrefetchPixelDataBWLuma[i][j][k] * v->UrgentBurstFactorLumaPre[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5089 + v->RequiredPrefetchPixelDataBWChroma[i][j][k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5090 * v->UrgentBurstFactorChromaPre[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5091 + v->cursor_bw_pre[k] * v->UrgentBurstFactorCursorPre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5092 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5093 v->TotImmediateFlipBytes = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5094 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5095 v->TotImmediateFlipBytes = v->TotImmediateFlipBytes + v->NoOfDPP[i][j][k] * v->PDEAndMetaPTEBytesPerFrame[i][j][k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5096 + v->MetaRowBytes[i][j][k] + v->DPTEBytesPerRow[i][j][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5097 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5098
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5099 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5100 CalculateFlipSchedule(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5101 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5102 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelMixedWithVMData,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5103 v->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyVMDataOnly,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5104 v->ExtraLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5105 v->UrgLatency[i],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5106 v->GPUVMMaxPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5107 v->HostVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5108 v->HostVMMaxNonCachedPageTableLevels,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5109 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5110 v->HostVMMinPageSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5111 v->PDEAndMetaPTEBytesPerFrame[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5112 v->MetaRowBytes[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5113 v->DPTEBytesPerRow[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5114 v->BandwidthAvailableForImmediateFlip,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5115 v->TotImmediateFlipBytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5116 v->SourcePixelFormat[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5117 v->HTotal[k] / v->PixelClock[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5118 v->VRatio[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5119 v->VRatioChroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5120 v->Tno_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5121 v->DCCEnable[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5122 v->dpte_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5123 v->meta_row_height[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5124 v->dpte_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5125 v->meta_row_height_chroma[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5126 &v->DestinationLinesToRequestVMInImmediateFlip[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5127 &v->DestinationLinesToRequestRowInImmediateFlip[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5128 &v->final_flip_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5129 &v->ImmediateFlipSupportedForPipe[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5130 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5131 v->total_dcn_read_bw_with_flip = 0.0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5132 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5133 v->total_dcn_read_bw_with_flip = v->total_dcn_read_bw_with_flip
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5134 + dml_max3(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5135 v->NoOfDPP[i][j][k] * v->prefetch_vmrow_bw[k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5136 v->NoOfDPP[i][j][k] * v->final_flip_bw[k] + v->VActivePixelBandwidth[i][j][k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5137 + v->VActiveCursorBandwidth[i][j][k],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5138 v->NoOfDPP[i][j][k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5139 * (v->final_flip_bw[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5140 + v->RequiredPrefetchPixelDataBWLuma[i][j][k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5141 * v->UrgentBurstFactorLumaPre[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5142 + v->RequiredPrefetchPixelDataBWChroma[i][j][k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5143 * v->UrgentBurstFactorChromaPre[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5144 + v->cursor_bw_pre[k] * v->UrgentBurstFactorCursorPre[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5145 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5146 v->ImmediateFlipSupportedForState[i][j] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5147 if (v->total_dcn_read_bw_with_flip > v->ReturnBWPerState[i][j]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5148 v->ImmediateFlipSupportedForState[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5149 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5150 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5151 if (v->ImmediateFlipSupportedForPipe[k] == false) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5152 v->ImmediateFlipSupportedForState[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5153 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5154 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5155 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5156 v->ImmediateFlipSupportedForState[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5157 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5158 if (v->MaxVStartup <= 13 || v->AnyLinesForVMOrRowTooLarge == false) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5159 v->NextMaxVStartup = v->MaxMaxVStartup[i][j];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5160 NextPrefetchModeState = NextPrefetchModeState + 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5161 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5162 v->NextMaxVStartup = v->NextMaxVStartup - 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5163 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5164 } while (!((v->PrefetchSupported[i][j] == true && v->DynamicMetadataSupported[i][j] == true && v->VRatioInPrefetchSupported[i][j] == true
9f95e77800f3ba Alvin Lee 2021-06-17 5165 && ((v->HostVMEnable == false && v->ImmediateFlipRequirement[0] != dm_immediate_flip_required)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5166 || v->ImmediateFlipSupportedForState[i][j] == true))
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5167 || (v->NextMaxVStartup == v->MaxMaxVStartup[i][j] && NextPrefetchModeState > MaxPrefetchMode)));
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5168
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5169 CalculateWatermarksAndDRAMSpeedChangeSupport(
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5170 mode_lib,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5171 v->PrefetchModePerState[i][j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5172 v->NumberOfActivePlanes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5173 v->MaxLineBufferLines,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5174 v->LineBufferSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5175 v->DPPOutputBufferPixels,
4469201b19354a Chaitanya Dhere 2021-04-20 5176 v->DETBufferSizeInKByte[0],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5177 v->WritebackInterfaceBufferSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5178 v->DCFCLKState[i][j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5179 v->ReturnBWPerState[i][j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5180 v->GPUVMEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5181 v->dpte_group_bytes,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5182 v->MetaChunkSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5183 v->UrgLatency[i],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5184 v->ExtraLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5185 v->WritebackLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5186 v->WritebackChunkSize,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5187 v->SOCCLKPerState[i],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5188 v->FinalDRAMClockChangeLatency,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5189 v->SRExitTime,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5190 v->SREnterPlusExitTime,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5191 v->ProjectedDCFCLKDeepSleep[i][j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5192 v->NoOfDPPThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5193 v->DCCEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5194 v->RequiredDPPCLKThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5195 v->DETBufferSizeYThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5196 v->DETBufferSizeCThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5197 v->SwathHeightYThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5198 v->SwathHeightCThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5199 v->LBBitPerPixel,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5200 v->SwathWidthYThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5201 v->SwathWidthCThisState,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5202 v->HRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5203 v->HRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5204 v->vtaps,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5205 v->VTAPsChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5206 v->VRatio,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5207 v->VRatioChroma,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5208 v->HTotal,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5209 v->PixelClock,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5210 v->BlendingAndTiming,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5211 v->BytePerPixelInDETY,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5212 v->BytePerPixelInDETC,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5213 v->DSTXAfterScaler,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5214 v->DSTYAfterScaler,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5215 v->WritebackEnable,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5216 v->WritebackPixelFormat,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5217 v->WritebackDestinationWidth,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5218 v->WritebackDestinationHeight,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5219 v->WritebackSourceHeight,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5220 &v->DRAMClockChangeSupport[i][j],
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5221 &v->UrgentWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5222 &v->WritebackUrgentWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5223 &v->DRAMClockChangeWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5224 &v->WritebackDRAMClockChangeWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5225 &v->StutterExitWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5226 &v->StutterEnterPlusExitWatermark,
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5227 &v->MinActiveDRAMClockChangeLatencySupported);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5228 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5229 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5230
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5231 /*PTE Buffer Size Check*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5232
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5233 for (i = 0; i < v->soc.num_states; i++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5234 for (j = 0; j < 2; j++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5235 v->PTEBufferSizeNotExceeded[i][j] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5236 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5237 if (v->PTEBufferSizeNotExceededY[i][j][k] == false || v->PTEBufferSizeNotExceededC[i][j][k] == false) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5238 v->PTEBufferSizeNotExceeded[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5239 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5240 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5241 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5242 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5243 /*Cursor Support Check*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5244
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5245 v->CursorSupport = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5246 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5247 if (v->CursorWidth[k][0] > 0.0) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5248 if (v->CursorBPP[k][0] == 64 && v->Cursor64BppSupport == false) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5249 v->CursorSupport = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5250 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5251 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5252 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5253 /*Valid Pitch Check*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5254
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5255 v->PitchSupport = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5256 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5257 v->AlignedYPitch[k] = dml_ceil(dml_max(v->PitchY[k], v->SurfaceWidthY[k]), v->MacroTileWidthY[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5258 if (v->DCCEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5259 v->AlignedDCCMetaPitchY[k] = dml_ceil(dml_max(v->DCCMetaPitchY[k], v->SurfaceWidthY[k]), 64.0 * v->Read256BlockWidthY[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5260 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5261 v->AlignedDCCMetaPitchY[k] = v->DCCMetaPitchY[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5262 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5263 if (v->SourcePixelFormat[k] != dm_444_64 && v->SourcePixelFormat[k] != dm_444_32 && v->SourcePixelFormat[k] != dm_444_16 && v->SourcePixelFormat[k] != dm_mono_16
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5264 && v->SourcePixelFormat[k] != dm_rgbe && v->SourcePixelFormat[k] != dm_mono_8) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5265 v->AlignedCPitch[k] = dml_ceil(dml_max(v->PitchC[k], v->SurfaceWidthC[k]), v->MacroTileWidthC[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5266 if (v->DCCEnable[k] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5267 v->AlignedDCCMetaPitchC[k] = dml_ceil(dml_max(v->DCCMetaPitchC[k], v->SurfaceWidthC[k]), 64.0 * v->Read256BlockWidthC[k]);
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5268 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5269 v->AlignedDCCMetaPitchC[k] = v->DCCMetaPitchC[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5270 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5271 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5272 v->AlignedCPitch[k] = v->PitchC[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5273 v->AlignedDCCMetaPitchC[k] = v->DCCMetaPitchC[k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5274 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5275 if (v->AlignedYPitch[k] > v->PitchY[k] || v->AlignedCPitch[k] > v->PitchC[k] || v->AlignedDCCMetaPitchY[k] > v->DCCMetaPitchY[k]
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5276 || v->AlignedDCCMetaPitchC[k] > v->DCCMetaPitchC[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5277 v->PitchSupport = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5278 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5279 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5280
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5281 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5282 if (v->ViewportWidth[k] > v->SurfaceWidthY[k] || v->ViewportHeight[k] > v->SurfaceHeightY[k])
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5283 ViewportExceedsSurface = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5284
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5285 if (v->SourcePixelFormat[k] != dm_444_64 && v->SourcePixelFormat[k] != dm_444_32 && v->SourcePixelFormat[k] != dm_444_16
71f49c4898eef4 Ye Bin 2020-09-17 5286 && v->SourcePixelFormat[k] != dm_444_8 && v->SourcePixelFormat[k] != dm_rgbe) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5287 if (v->ViewportWidthChroma[k] > v->SurfaceWidthC[k] || v->ViewportHeightChroma[k] > v->SurfaceHeightC[k]) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5288 ViewportExceedsSurface = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5289 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5290 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5291 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5292 /*Mode Support, Voltage State and SOC Configuration*/
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5293
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5294 for (i = v->soc.num_states - 1; i >= 0; i--) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5295 for (j = 0; j < 2; j++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5296 if (v->ScaleRatioAndTapsSupport == 1 && v->SourceFormatPixelAndScanSupport == 1 && v->ViewportSizeSupport[i][j] == 1
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5297 && v->DIOSupport[i] == 1 && v->ODMCombine4To1SupportCheckOK[i] == 1
346cf627fb27c0 Nikola Cornij 2021-05-18 5298 && v->NotEnoughDSCUnits[i] == 0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5299 && v->DTBCLKRequiredMoreThanSupported[i] == 0
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5300 && v->ROBSupport[i][j] == 1 && v->DISPCLK_DPPCLK_Support[i][j] == 1 && v->TotalAvailablePipesSupport[i][j] == 1
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5301 && EnoughWritebackUnits == 1 && WritebackModeSupport == 1
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5302 && v->WritebackLatencySupport == 1 && v->WritebackScaleRatioAndTapsSupport == 1 && v->CursorSupport == 1 && v->PitchSupport == 1
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5303 && ViewportExceedsSurface == 0 && v->PrefetchSupported[i][j] == 1 && v->DynamicMetadataSupported[i][j] == 1
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5304 && v->TotalVerticalActiveBandwidthSupport[i][j] == 1 && v->VRatioInPrefetchSupported[i][j] == 1
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5305 && v->PTEBufferSizeNotExceeded[i][j] == 1 && v->NonsupportedDSCInputBPC == 0
9f95e77800f3ba Alvin Lee 2021-06-17 5306 && ((v->HostVMEnable == 0 && v->ImmediateFlipRequirement[0] != dm_immediate_flip_required)
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5307 || v->ImmediateFlipSupportedForState[i][j] == true)) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5308 v->ModeSupport[i][j] = true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5309 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5310 v->ModeSupport[i][j] = false;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5311 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5312 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5313 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5314 {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5315 unsigned int MaximumMPCCombine = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5316 for (i = v->soc.num_states; i >= 0; i--) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5317 if (i == v->soc.num_states || v->ModeSupport[i][0] == true || v->ModeSupport[i][1] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5318 v->VoltageLevel = i;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5319 v->ModeIsSupported = v->ModeSupport[i][0] == true || v->ModeSupport[i][1] == true;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5320 if (v->ModeSupport[i][1] == true) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5321 MaximumMPCCombine = 1;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5322 } else {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5323 MaximumMPCCombine = 0;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5324 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5325 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5326 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5327 v->ImmediateFlipSupport = v->ImmediateFlipSupportedForState[v->VoltageLevel][MaximumMPCCombine];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5328 for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) {
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5329 v->MPCCombineEnable[k] = v->MPCCombine[v->VoltageLevel][MaximumMPCCombine][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5330 v->DPPPerPlane[k] = v->NoOfDPP[v->VoltageLevel][MaximumMPCCombine][k];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5331 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5332 v->DCFCLK = v->DCFCLKState[v->VoltageLevel][MaximumMPCCombine];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5333 v->DRAMSpeed = v->DRAMSpeedPerState[v->VoltageLevel];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5334 v->FabricClock = v->FabricClockPerState[v->VoltageLevel];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5335 v->SOCCLK = v->SOCCLKPerState[v->VoltageLevel];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5336 v->ReturnBW = v->ReturnBWPerState[v->VoltageLevel][MaximumMPCCombine];
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5337 v->maxMpcComb = MaximumMPCCombine;
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5338 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5339 }
6725a88f88a7e9 Bhawanpreet Lakha 2020-05-21 5340
:::::: The code at line 3637 was first introduced by commit
:::::: 6725a88f88a7e922e91c45bf83d320487810c192 drm/amd/display: Add DCN3 DML
:::::: TO: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
:::::: CC: Alex Deucher <alexander.deucher@amd.com>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
reply other threads:[~2022-06-27 0:56 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202206270813.5fn4Mn8o-lkp@intel.com \
--to=lkp@intel.com \
--cc=alexs@kernel.org \
--cc=arnd@arndb.de \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=masahiroy@kernel.org \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=ojeda@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.