diff options
author | Xianzhong <xianzhong.li@nxp.com> | 2020-09-18 14:06:44 +0800 |
---|---|---|
committer | Xianzhong <xianzhong.li@nxp.com> | 2020-10-27 16:52:51 +0800 |
commit | a8a7d970e23da08247f1f3c786c498eceea4d591 (patch) | |
tree | c5e1cf83c56efbe19fb24ff6bed47d4adb16a068 /drivers/mxc | |
parent | 1e853b5e537da873beef448786f7efa8f93b727d (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.c | 23 |
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; |