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