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