summaryrefslogtreecommitdiff
path: root/drivers/mxc
diff options
context:
space:
mode:
authorXianzhong <xianzhong.li@nxp.com>2020-09-18 14:06:44 +0800
committerXianzhong <xianzhong.li@nxp.com>2020-10-27 16:52:51 +0800
commita8a7d970e23da08247f1f3c786c498eceea4d591 (patch)
treec5e1cf83c56efbe19fb24ff6bed47d4adb16a068 /drivers/mxc
parent1e853b5e537da873beef448786f7efa8f93b727d (diff)
MGS-5990-3 [#ccc] refine gpu memory bank configuration
default set two banks for large and small memory in 16:1, there is no function impact for specified bank size. Signed-off-by: Xianzhong <xianzhong.li@nxp.com>
Diffstat (limited to 'drivers/mxc')
-rw-r--r--drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c
index b71328178a83..9728ade332fa 100644
--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c
+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c
@@ -273,6 +273,12 @@ gckVIDMEM_Construct(
gcmkVERIFY_ARGUMENT(Bytes > 0);
gcmkVERIFY_ARGUMENT(Memory != gcvNULL);
+ if (BankSize == 0)
+ {
+ /* set two banks in 16:1 */
+ BankSize = heapBytes >> 4;
+ }
+
gcmkSAFECASTSIZET(heapBytes, Bytes);
gcmkSAFECASTSIZET(bankSize, BankSize);
@@ -368,29 +374,34 @@ gckVIDMEM_Construct(
base += bytes;
heapBytes -= bytes;
banks ++;
+
+ if (bankSize == (heapBytes >> 4))
+ {
+ bankSize = heapBytes;
+ }
}
/* Assign all the bank mappings. */
memory->mapping[gcvVIDMEM_TYPE_COLOR_BUFFER] = banks - 1;
memory->mapping[gcvVIDMEM_TYPE_BITMAP] = banks - 1;
- if (banks > 1) --banks;
+ if (banks > 7) --banks;
memory->mapping[gcvVIDMEM_TYPE_DEPTH_BUFFER] = banks - 1;
memory->mapping[gcvVIDMEM_TYPE_HZ_BUFFER] = banks - 1;
- if (banks > 1) --banks;
+ if (banks > 6) --banks;
memory->mapping[gcvVIDMEM_TYPE_TEXTURE] = banks - 1;
- if (banks > 1) --banks;
+ if (banks > 5) --banks;
memory->mapping[gcvVIDMEM_TYPE_VERTEX_BUFFER] = banks - 1;
- if (banks > 1) --banks;
+ if (banks > 4) --banks;
memory->mapping[gcvVIDMEM_TYPE_INDEX_BUFFER] = banks - 1;
- if (banks > 1) --banks;
+ if (banks > 3) --banks;
memory->mapping[gcvVIDMEM_TYPE_TILE_STATUS] = banks - 1;
- if (banks > 1) --banks;
+ if (banks > 2) --banks;
memory->mapping[gcvVIDMEM_TYPE_COMMAND] = banks - 1;
if (banks > 1) --banks;