Re: [PATCH v7 bpf-next 09/14] bpd: add multi-buffer support to xdp copy helpers
by kernel test robot
Hi Lorenzo,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on bpf-next/master]
url: https://github.com/0day-ci/linux/commits/Lorenzo-Bianconi/mvneta-introduc...
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: arm-randconfig-r023-20210318 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 436c6c9c20cc522c92a923440a5fc509c342a7db)
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 arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/0day-ci/linux/commit/9603affe766576f892f3a8e02d58dbe83...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Lorenzo-Bianconi/mvneta-introduce-XDP-multi-buffer-support/20210320-055103
git checkout 9603affe766576f892f3a8e02d58dbe83092c74a
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
>> net/core/filter.c:4579:16: warning: variable 'copy_len' is used uninitialized whenever 'for' loop exits because its condition is false [-Wsometimes-uninitialized]
for (i = 0; i < xdp_sinfo->nr_frags; i++) {
^~~~~~~~~~~~~~~~~~~~~~~
net/core/filter.c:4593:30: note: uninitialized use occurs here
memcpy(dst_buff, src_buff, copy_len);
^~~~~~~~
net/core/filter.c:4579:16: note: remove the condition if it is always true
for (i = 0; i < xdp_sinfo->nr_frags; i++) {
^~~~~~~~~~~~~~~~~~~~~~~
net/core/filter.c:4570:25: note: initialize the variable 'copy_len' to silence this warning
unsigned long copy_len;
^
= 0
1 warning generated.
vim +4579 net/core/filter.c
4551
4552 static unsigned long bpf_xdp_copy(void *dst_buff, const void *ctx,
4553 unsigned long off, unsigned long len)
4554 {
4555 struct xdp_buff *xdp = (struct xdp_buff *)ctx;
4556 struct xdp_shared_info *xdp_sinfo;
4557 unsigned long base_len;
4558 const void *src_buff;
4559
4560 if (likely(!xdp->mb)) {
4561 src_buff = xdp->data;
4562 memcpy(dst_buff, src_buff + off, len);
4563
4564 return 0;
4565 }
4566
4567 base_len = xdp->data_end - xdp->data;
4568 xdp_sinfo = xdp_get_shared_info_from_buff(xdp);
4569 do {
4570 unsigned long copy_len;
4571
4572 if (off < base_len) {
4573 src_buff = xdp->data + off;
4574 copy_len = min(len, base_len - off);
4575 } else {
4576 unsigned long frag_off_total = base_len;
4577 int i;
4578
> 4579 for (i = 0; i < xdp_sinfo->nr_frags; i++) {
4580 skb_frag_t *frag = &xdp_sinfo->frags[i];
4581 unsigned long frag_len = xdp_get_frag_size(frag);
4582 unsigned long frag_off = off - frag_off_total;
4583
4584 if (frag_off < frag_len) {
4585 src_buff = xdp_get_frag_address(frag) +
4586 frag_off;
4587 copy_len = min(len, frag_len - frag_off);
4588 break;
4589 }
4590 frag_off_total += frag_len;
4591 }
4592 }
4593 memcpy(dst_buff, src_buff, copy_len);
4594 off += copy_len;
4595 len -= copy_len;
4596 dst_buff += copy_len;
4597 } while (len);
4598
4599 return 0;
4600 }
4601
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months
Re: [PATCH] MIPS: Add support for CONFIG_DEBUG_VIRTUAL
by kernel test robot
Hi Florian,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v5.12-rc3 next-20210319]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Florian-Fainelli/MIPS-Add-suppor...
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 8b12a62a4e3ed4ae99c715034f557eb391d6b196
config: mips-randconfig-s032-20210318 (attached as .config)
compiler: mipsel-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-277-gc089cd2d-dirty
# https://github.com/0day-ci/linux/commit/1c409697fd2f3f5639d1900cfd811d4d7...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Florian-Fainelli/MIPS-Add-support-for-CONFIG_DEBUG_VIRTUAL/20210320-032733
git checkout 1c409697fd2f3f5639d1900cfd811d4d72a2314a
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=mips
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
command-line: note: in included file:
builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQUIRE redefined
builtin:0:0: sparse: this was the original definition
builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_SEQ_CST redefined
builtin:0:0: sparse: this was the original definition
builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_ACQ_REL redefined
builtin:0:0: sparse: this was the original definition
builtin:1:9: sparse: sparse: preprocessor token __ATOMIC_RELEASE redefined
builtin:0:0: sparse: this was the original definition
>> arch/mips/kernel/vdso.c:161:54: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile *x @@ got void [noderef] __iomem * @@
arch/mips/kernel/vdso.c:161:54: sparse: expected void const volatile *x
arch/mips/kernel/vdso.c:161:54: sparse: got void [noderef] __iomem *
vim +161 arch/mips/kernel/vdso.c
ea7e0480a4b695 Paul Burton 2018-09-25 88
c52d0d30aef84a David Daney 2010-02-18 89 int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
c52d0d30aef84a David Daney 2010-02-18 90 {
ebb5e78cc63417 Alex Smith 2015-10-21 91 struct mips_vdso_image *image = current->thread.abi->vdso;
c52d0d30aef84a David Daney 2010-02-18 92 struct mm_struct *mm = current->mm;
00578cd864d45a Paul Burton 2017-08-12 93 unsigned long gic_size, vvar_size, size, base, data_addr, vdso_addr, gic_pfn;
ebb5e78cc63417 Alex Smith 2015-10-21 94 struct vm_area_struct *vma;
ebb5e78cc63417 Alex Smith 2015-10-21 95 int ret;
c52d0d30aef84a David Daney 2010-02-18 96
d8ed45c5dcd455 Michel Lespinasse 2020-06-08 97 if (mmap_write_lock_killable(mm))
69048176078add Michal Hocko 2016-05-23 98 return -EINTR;
c52d0d30aef84a David Daney 2010-02-18 99
aebdc6ff3b2e79 Yousong Zhou 2020-03-24 100 if (IS_ENABLED(CONFIG_MIPS_FP_SUPPORT)) {
432c6bacbd0c16 Paul Burton 2016-07-08 101 /* Map delay slot emulation page */
432c6bacbd0c16 Paul Burton 2016-07-08 102 base = mmap_region(NULL, STACK_TOP, PAGE_SIZE,
adcc81f148d733 Paul Burton 2018-12-20 103 VM_READ | VM_EXEC |
432c6bacbd0c16 Paul Burton 2016-07-08 104 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC,
897ab3e0c49e24 Mike Rapoport 2017-02-24 105 0, NULL);
432c6bacbd0c16 Paul Burton 2016-07-08 106 if (IS_ERR_VALUE(base)) {
432c6bacbd0c16 Paul Burton 2016-07-08 107 ret = base;
432c6bacbd0c16 Paul Burton 2016-07-08 108 goto out;
432c6bacbd0c16 Paul Burton 2016-07-08 109 }
aebdc6ff3b2e79 Yousong Zhou 2020-03-24 110 }
432c6bacbd0c16 Paul Burton 2016-07-08 111
a7f4df4e21dd8a Alex Smith 2015-10-21 112 /*
a7f4df4e21dd8a Alex Smith 2015-10-21 113 * Determine total area size. This includes the VDSO data itself, the
a7f4df4e21dd8a Alex Smith 2015-10-21 114 * data page, and the GIC user page if present. Always create a mapping
a7f4df4e21dd8a Alex Smith 2015-10-21 115 * for the GIC user area if the GIC is present regardless of whether it
a7f4df4e21dd8a Alex Smith 2015-10-21 116 * is the current clocksource, in case it comes into use later on. We
a7f4df4e21dd8a Alex Smith 2015-10-21 117 * only map a page even though the total area is 64K, as we only need
a7f4df4e21dd8a Alex Smith 2015-10-21 118 * the counter registers at the start.
a7f4df4e21dd8a Alex Smith 2015-10-21 119 */
00578cd864d45a Paul Burton 2017-08-12 120 gic_size = mips_gic_present() ? PAGE_SIZE : 0;
a7f4df4e21dd8a Alex Smith 2015-10-21 121 vvar_size = gic_size + PAGE_SIZE;
a7f4df4e21dd8a Alex Smith 2015-10-21 122 size = vvar_size + image->size;
a7f4df4e21dd8a Alex Smith 2015-10-21 123
0f02cfbc3d9e41 Paul Burton 2018-08-30 124 /*
0f02cfbc3d9e41 Paul Burton 2018-08-30 125 * Find a region that's large enough for us to perform the
0f02cfbc3d9e41 Paul Burton 2018-08-30 126 * colour-matching alignment below.
0f02cfbc3d9e41 Paul Burton 2018-08-30 127 */
0f02cfbc3d9e41 Paul Burton 2018-08-30 128 if (cpu_has_dc_aliases)
0f02cfbc3d9e41 Paul Burton 2018-08-30 129 size += shm_align_mask + 1;
0f02cfbc3d9e41 Paul Burton 2018-08-30 130
ea7e0480a4b695 Paul Burton 2018-09-25 131 base = get_unmapped_area(NULL, vdso_base(), size, 0, 0);
ebb5e78cc63417 Alex Smith 2015-10-21 132 if (IS_ERR_VALUE(base)) {
ebb5e78cc63417 Alex Smith 2015-10-21 133 ret = base;
ebb5e78cc63417 Alex Smith 2015-10-21 134 goto out;
ebb5e78cc63417 Alex Smith 2015-10-21 135 }
ebb5e78cc63417 Alex Smith 2015-10-21 136
0f02cfbc3d9e41 Paul Burton 2018-08-30 137 /*
0f02cfbc3d9e41 Paul Burton 2018-08-30 138 * If we suffer from dcache aliasing, ensure that the VDSO data page
0f02cfbc3d9e41 Paul Burton 2018-08-30 139 * mapping is coloured the same as the kernel's mapping of that memory.
0f02cfbc3d9e41 Paul Burton 2018-08-30 140 * This ensures that when the kernel updates the VDSO data userland
0f02cfbc3d9e41 Paul Burton 2018-08-30 141 * will observe it without requiring cache invalidations.
0f02cfbc3d9e41 Paul Burton 2018-08-30 142 */
0f02cfbc3d9e41 Paul Burton 2018-08-30 143 if (cpu_has_dc_aliases) {
0f02cfbc3d9e41 Paul Burton 2018-08-30 144 base = __ALIGN_MASK(base, shm_align_mask);
24640f233b4660 Vincenzo Frascino 2019-06-21 145 base += ((unsigned long)vdso_data - gic_size) & shm_align_mask;
0f02cfbc3d9e41 Paul Burton 2018-08-30 146 }
0f02cfbc3d9e41 Paul Burton 2018-08-30 147
a7f4df4e21dd8a Alex Smith 2015-10-21 148 data_addr = base + gic_size;
a7f4df4e21dd8a Alex Smith 2015-10-21 149 vdso_addr = data_addr + PAGE_SIZE;
c52d0d30aef84a David Daney 2010-02-18 150
a7f4df4e21dd8a Alex Smith 2015-10-21 151 vma = _install_special_mapping(mm, base, vvar_size,
ebb5e78cc63417 Alex Smith 2015-10-21 152 VM_READ | VM_MAYREAD,
ebb5e78cc63417 Alex Smith 2015-10-21 153 &vdso_vvar_mapping);
ebb5e78cc63417 Alex Smith 2015-10-21 154 if (IS_ERR(vma)) {
ebb5e78cc63417 Alex Smith 2015-10-21 155 ret = PTR_ERR(vma);
ebb5e78cc63417 Alex Smith 2015-10-21 156 goto out;
c52d0d30aef84a David Daney 2010-02-18 157 }
c52d0d30aef84a David Daney 2010-02-18 158
a7f4df4e21dd8a Alex Smith 2015-10-21 159 /* Map GIC user page. */
a7f4df4e21dd8a Alex Smith 2015-10-21 160 if (gic_size) {
00578cd864d45a Paul Burton 2017-08-12 @161 gic_pfn = virt_to_phys(mips_gic_base + MIPS_GIC_USER_OFS) >> PAGE_SHIFT;
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months
Re: [PATCH 2/2] net: phy: dp83867: add support for changing LED modes
by kernel test robot
Hi Michael,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on robh/for-next]
[also build test WARNING on net/master ipvs/master net-next/master v5.12-rc3 next-20210319]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Michael-Tretter/net-phy-dp83867-...
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: x86_64-randconfig-s031-20210318 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-277-gc089cd2d-dirty
# https://github.com/0day-ci/linux/commit/740c2de62bc36c66a54a8c152a65ae2eb...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Michael-Tretter/net-phy-dp83867-Configure-LED-modes-via-device-tree/20210320-000027
git checkout 740c2de62bc36c66a54a8c152a65ae2ebf805515
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/net/phy/dp83867.c:550:49: sparse: sparse: incorrect type in argument 4 (different base types) @@ expected unsigned int [usertype] *out_value @@ got unsigned int [usertype] tmp @@
drivers/net/phy/dp83867.c:550:49: sparse: expected unsigned int [usertype] *out_value
drivers/net/phy/dp83867.c:550:49: sparse: got unsigned int [usertype] tmp
>> drivers/net/phy/dp83867.c:550:49: sparse: sparse: non size-preserving integer to pointer cast
vim +550 drivers/net/phy/dp83867.c
538
539 #if IS_ENABLED(CONFIG_OF_MDIO)
540 static int dp83867_of_led_mode_read(struct device_node *of_node,
541 const char *led_name, u32 *mode)
542 {
543 u32 tmp;
544 int index;
545 int err;
546
547 index = of_property_match_string(of_node, "ti,dp83867-led-mode-names",
548 led_name);
549 err = of_property_read_u32_index(of_node, "ti,dp83867-led-modes",
> 550 index, tmp);
551 if (err)
552 return err;
553 if (tmp == 0xc || tmp >= 0xf)
554 return -EINVAL;
555
556 *mode = tmp;
557
558 return 0;
559 }
560
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months
[thierryreding:for-5.13/work 41/49] drivers/gpu/drm/tegra/dc.c:939:13: error: 'CURSOR_COMPOSITION_MODE_XORG' undeclared; did you mean
by kernel test robot
tree: https://github.com/thierryreding/linux for-5.13/work
head: 009ea3ee74a12859073a37d2ef800fa154ff7705
commit: bbc118a5ae5360b4b9f62107d199ed6473f1cd4e [41/49] drm/tegra: dc: Implement hardware cursor on Tegra186 and later
config: arm-defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/thierryreding/linux/commit/bbc118a5ae5360b4b9f62107d19...
git remote add thierryreding https://github.com/thierryreding/linux
git fetch --no-tags thierryreding for-5.13/work
git checkout bbc118a5ae5360b4b9f62107d199ed6473f1cd4e
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/gpu/drm/tegra/dc.c: In function 'tegra_cursor_atomic_update':
>> drivers/gpu/drm/tegra/dc.c:939:13: error: 'CURSOR_COMPOSITION_MODE_XORG' undeclared (first use in this function); did you mean 'CURSOR_COMPOSITION_MODE_XOR'?
939 | value &= ~CURSOR_COMPOSITION_MODE_XORG;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| CURSOR_COMPOSITION_MODE_XOR
drivers/gpu/drm/tegra/dc.c:939:13: note: each undeclared identifier is reported only once for each function it appears in
drivers/gpu/drm/tegra/dc.c:883:6: warning: unused variable 'dma_mask' [-Wunused-variable]
883 | u64 dma_mask = *dc->dev->dma_mask;
| ^~~~~~~~
vim +939 drivers/gpu/drm/tegra/dc.c
928
929 /* enable cursor and set blend mode */
930 value = tegra_dc_readl(dc, DC_DISP_DISP_WIN_OPTIONS);
931 value |= CURSOR_ENABLE;
932 tegra_dc_writel(dc, value, DC_DISP_DISP_WIN_OPTIONS);
933
934 value = tegra_dc_readl(dc, DC_DISP_BLEND_CURSOR_CONTROL);
935 value &= ~CURSOR_DST_BLEND_MASK;
936 value &= ~CURSOR_SRC_BLEND_MASK;
937
938 if (dc->soc->has_nvdisplay)
> 939 value &= ~CURSOR_COMPOSITION_MODE_XORG;
940 else
941 value |= CURSOR_MODE_NORMAL;
942
943 value |= CURSOR_DST_BLEND_NEG_K1_TIMES_SRC;
944 value |= CURSOR_SRC_BLEND_K1_TIMES_SRC;
945 value |= CURSOR_ALPHA;
946 tegra_dc_writel(dc, value, DC_DISP_BLEND_CURSOR_CONTROL);
947
948 /* nvdisplay relies on software for clipping */
949 if (dc->soc->has_nvdisplay) {
950 unsigned int i, j, w, h;
951
952 x = new_state->dst.x1;
953 y = new_state->dst.y1;
954
955 i = new_state->src.x1 >> 16;
956 j = new_state->src.y1 >> 16;
957
958 value = ((j & tegra->vmask) << 16) | (i & tegra->hmask);
959 tegra_dc_writel(dc, value, DC_DISP_PCALC_HEAD_SET_CROPPED_POINT_IN_CURSOR);
960
961 w = (new_state->src.x2 - new_state->src.x1) >> 16;
962 h = (new_state->src.y2 - new_state->src.y1) >> 16;
963
964 value = ((h & tegra->vmask) << 16) | (w & tegra->hmask);
965 tegra_dc_writel(dc, value, DC_DISP_PCALC_HEAD_SET_CROPPED_SIZE_IN_CURSOR);
966 } else {
967 x = new_state->crtc_x;
968 y = new_state->crtc_y;
969 }
970
971 /* position the cursor */
972 value = ((y & tegra->vmask) << 16) | (x & tegra->hmask);
973 tegra_dc_writel(dc, value, DC_DISP_CURSOR_POSITION);
974 }
975
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months
[chrome-os:chromeos-4.4 195/215] apex_driver.c:(.text+0x1fb58): multiple definition of `rkisp1_isp_isr'
by kernel test robot
tree: https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-4.4
head: d78843bdba14be5be451753e78a3753413fda6a2
commit: b9587630016b5b0f9949fe31325de4fdfa5dd8cc [195/215] CHROMIUM: staging: media: rkisp1: Backport fixups function
config: arm64-allyesconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 7.5.0
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
git remote add chrome-os https://chromium.googlesource.com/chromiumos/third_party/kernel
git fetch --no-tags chrome-os chromeos-4.4
git checkout b9587630016b5b0f9949fe31325de4fdfa5dd8cc
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-7.5.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/staging/built-in.o: In function `rkisp1_isp_isr':
>> apex_driver.c:(.text+0x1fb58): multiple definition of `rkisp1_isp_isr'
drivers/media/built-in.o:radio-raremono.c:(.text+0x3f6180): first defined here
drivers/staging/built-in.o: In function `rkisp1_mipi_isr':
>> apex_driver.c:(.text+0x1f9e8): multiple definition of `rkisp1_mipi_isr'
drivers/media/built-in.o:radio-raremono.c:(.text+0x3f6060): first defined here
drivers/staging/built-in.o: In function `rkisp1_stats_isr':
>> apex_driver.c:(.text+0x228b0): multiple definition of `rkisp1_stats_isr'
drivers/media/built-in.o:radio-raremono.c:(.text+0x3f95c0): first defined here
drivers/staging/built-in.o: In function `rkisp1_params_isr':
>> apex_driver.c:(.text+0x27200): multiple definition of `rkisp1_params_isr'
drivers/media/built-in.o:radio-raremono.c:(.text+0x3fe158): first defined here
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months
[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'
by kernel test robot
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/commi...
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(a)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(a)arndb.de>
:::::: CC: Arnd Bergmann <arnd(a)arndb.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months
[thierryreding:for-5.13/work 42/49] drivers/gpu/drm/tegra/hub.c:512:11: warning: shift count >= width of type
by kernel test robot
tree: https://github.com/thierryreding/linux for-5.13/work
head: 009ea3ee74a12859073a37d2ef800fa154ff7705
commit: 9d6a7689f981eb0ce9c5c6b2a4b5e14d15937815 [42/49] drm/tegra: Support sector layout on Tegra194
config: arm-randconfig-r011-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 arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/thierryreding/linux/commit/9d6a7689f981eb0ce9c5c6b2a4b...
git remote add thierryreding https://github.com/thierryreding/linux
git fetch --no-tags thierryreding for-5.13/work
git checkout 9d6a7689f981eb0ce9c5c6b2a4b5e14d15937815
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
>> drivers/gpu/drm/tegra/hub.c:512:11: warning: shift count >= width of type [-Wshift-count-overflow]
base |= BIT(39);
^~~~~~~
include/vdso/bits.h:7:26: note: expanded from macro 'BIT'
#define BIT(nr) (UL(1) << (nr))
^ ~~~~
1 warning generated.
vim +512 drivers/gpu/drm/tegra/hub.c
446
447 static void tegra_shared_plane_atomic_update(struct drm_plane *plane,
448 struct drm_atomic_state *state)
449 {
450 struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state,
451 plane);
452 struct tegra_plane_state *tegra_plane_state = to_tegra_plane_state(new_state);
453 struct tegra_dc *dc = to_tegra_dc(new_state->crtc);
454 unsigned int zpos = new_state->normalized_zpos;
455 struct drm_framebuffer *fb = new_state->fb;
456 struct tegra_plane *p = to_tegra_plane(plane);
457 dma_addr_t base;
458 u32 value;
459 int err;
460
461 /* rien ne va plus */
462 if (!new_state->crtc || !new_state->fb)
463 return;
464
465 if (!new_state->visible) {
466 tegra_shared_plane_atomic_disable(plane, state);
467 return;
468 }
469
470 err = host1x_client_resume(&dc->client);
471 if (err < 0) {
472 dev_err(dc->dev, "failed to resume: %d\n", err);
473 return;
474 }
475
476 tegra_dc_assign_shared_plane(dc, p);
477
478 tegra_plane_writel(p, VCOUNTER, DC_WIN_CORE_ACT_CONTROL);
479
480 /* blending */
481 value = BLEND_FACTOR_DST_ALPHA_ZERO | BLEND_FACTOR_SRC_ALPHA_K2 |
482 BLEND_FACTOR_DST_COLOR_NEG_K1_TIMES_SRC |
483 BLEND_FACTOR_SRC_COLOR_K1_TIMES_SRC;
484 tegra_plane_writel(p, value, DC_WIN_BLEND_MATCH_SELECT);
485
486 value = BLEND_FACTOR_DST_ALPHA_ZERO | BLEND_FACTOR_SRC_ALPHA_K2 |
487 BLEND_FACTOR_DST_COLOR_NEG_K1_TIMES_SRC |
488 BLEND_FACTOR_SRC_COLOR_K1_TIMES_SRC;
489 tegra_plane_writel(p, value, DC_WIN_BLEND_NOMATCH_SELECT);
490
491 value = K2(255) | K1(255) | WINDOW_LAYER_DEPTH(255 - zpos);
492 tegra_plane_writel(p, value, DC_WIN_BLEND_LAYER_CONTROL);
493
494 /* bypass scaling */
495 value = HORIZONTAL_TAPS_5 | VERTICAL_TAPS_5;
496 tegra_plane_writel(p, value, DC_WIN_WINDOWGROUP_SET_CONTROL_INPUT_SCALER);
497
498 value = INPUT_SCALER_VBYPASS | INPUT_SCALER_HBYPASS;
499 tegra_plane_writel(p, value, DC_WIN_WINDOWGROUP_SET_INPUT_SCALER_USAGE);
500
501 /* disable compression */
502 tegra_plane_writel(p, 0, DC_WINBUF_CDE_CONTROL);
503
504 base = tegra_plane_state->iova[0] + fb->offsets[0];
505
506 /*
507 * Physical address bit 39 in Tegra194 is used as a switch for special
508 * logic that swizzles the memory using either the legacy Tegra or the
509 * dGPU sector layout.
510 */
511 if (tegra_plane_state->tiling.sector_layout == TEGRA_BO_SECTOR_LAYOUT_GPU)
> 512 base |= BIT(39);
513
514 tegra_plane_writel(p, tegra_plane_state->format, DC_WIN_COLOR_DEPTH);
515 tegra_plane_writel(p, 0, DC_WIN_PRECOMP_WGRP_PARAMS);
516
517 value = V_POSITION(new_state->crtc_y) |
518 H_POSITION(new_state->crtc_x);
519 tegra_plane_writel(p, value, DC_WIN_POSITION);
520
521 value = V_SIZE(new_state->crtc_h) | H_SIZE(new_state->crtc_w);
522 tegra_plane_writel(p, value, DC_WIN_SIZE);
523
524 value = WIN_ENABLE | COLOR_EXPAND;
525 tegra_plane_writel(p, value, DC_WIN_WIN_OPTIONS);
526
527 value = V_SIZE(new_state->crtc_h) | H_SIZE(new_state->crtc_w);
528 tegra_plane_writel(p, value, DC_WIN_CROPPED_SIZE);
529
530 tegra_plane_writel(p, upper_32_bits(base), DC_WINBUF_START_ADDR_HI);
531 tegra_plane_writel(p, lower_32_bits(base), DC_WINBUF_START_ADDR);
532
533 value = PITCH(fb->pitches[0]);
534 tegra_plane_writel(p, value, DC_WIN_PLANAR_STORAGE);
535
536 value = CLAMP_BEFORE_BLEND | DEGAMMA_SRGB | INPUT_RANGE_FULL;
537 tegra_plane_writel(p, value, DC_WIN_SET_PARAMS);
538
539 value = OFFSET_X(new_state->src_y >> 16) |
540 OFFSET_Y(new_state->src_x >> 16);
541 tegra_plane_writel(p, value, DC_WINBUF_CROPPED_POINT);
542
543 if (dc->soc->supports_block_linear) {
544 unsigned long height = tegra_plane_state->tiling.value;
545
546 /* XXX */
547 switch (tegra_plane_state->tiling.mode) {
548 case TEGRA_BO_TILING_MODE_PITCH:
549 value = DC_WINBUF_SURFACE_KIND_BLOCK_HEIGHT(0) |
550 DC_WINBUF_SURFACE_KIND_PITCH;
551 break;
552
553 /* XXX not supported on Tegra186 and later */
554 case TEGRA_BO_TILING_MODE_TILED:
555 value = DC_WINBUF_SURFACE_KIND_TILED;
556 break;
557
558 case TEGRA_BO_TILING_MODE_BLOCK:
559 value = DC_WINBUF_SURFACE_KIND_BLOCK_HEIGHT(height) |
560 DC_WINBUF_SURFACE_KIND_BLOCK;
561 break;
562 }
563
564 tegra_plane_writel(p, value, DC_WINBUF_SURFACE_KIND);
565 }
566
567 /* disable gamut CSC */
568 value = tegra_plane_readl(p, DC_WIN_WINDOW_SET_CONTROL);
569 value &= ~CONTROL_CSC_ENABLE;
570 tegra_plane_writel(p, value, DC_WIN_WINDOW_SET_CONTROL);
571
572 host1x_client_suspend(&dc->client);
573 }
574
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 6 months