微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mt2503 CFG_GDI_MEMORY_PROFILE_2关闭后如何提升显示performance

mt2503 CFG_GDI_MEMORY_PROFILE_2关闭后如何提升显示performance

时间:10-02 整理:3721RD 点击:
[UI]CFG_GDI_memory_PROFILE_2关闭后如何提升显示performance
[DESCRIPTION]
当关闭下面配置:
#define CFG_GDI_MEMORY_PROFILE_2 (__OFF__)
GDI 将只使用一个layer 刷屏,这样可以节省ram, 但是 perfomance 会变差,这个
FAQ 是用于提升显示idle 界面和其他界面时的performance
[SOLUTION]
基本原理是cache 背景或wallpaper 的数据在第一次显示完成后,当下次显示时直接
把cache的数据中显示,这样省去了decode的时间可以加快performance,cache
memory 在每次进category screen 时候malloc,exit category screen free,
具体修改步骤如下:
1.modify funciton
void gui_one_layer_draw_filled_bg_area_start(void)
{
gui_one_layer_draw_filled_bg_area_with_image_cache(); //add this code
...

2.modify funciton
void gui_one_layer_draw_filled_bg_area_exit(void)
{
// set default draw style
draw_bg_flag_one_layer = GUI_ONE_LAYER_DRAW_BG_WITH_IMAGE ;
// free cache memory
if(gui_one_layer_img_bmp_cache.buf_ptr)
{
med_free_temp_ext_mem((void**)&gui_one_layer_img_bmp_cache.buf_ptr);
gui_one_layer_free_image_cache();
mEMSet(&gui_one_layer_img_bmp_cache,0,sizeof(gdi_image_cache_bmp_struct));
// add this code
}
gui_one_layer_draw_bg_cb = NULL;
}

3.modify wgui_categories_idlescreen.c
在头部添加: #include "gui.h"

4.modify function: draw_wallpaper
modify draw follow:
目前是call gdi_image_draw_xxx draw墙纸
需要改为call gdi_image_cache_bmp_draw,如果 image cache 存在,
image cache在第一次draw 完后会创建。
例如:
(1) 原始code:
gdi_image_draw_animation_single_frame(
cat33_image_x,
cat33_image_y,
idle_screen_wallpaper,
(S16) cat33_frame_number);
需要改为:
if(gui_one_layer_img_bmp_cache.buf_ptr)
{
gdi_image_cache_bmp_draw(0, 0, &gui_one_layer_img_bmp_cache); // useimaeg
cache
}
else
{
gdi_image_draw_animation_single_frame(
cat33_image_x,
cat33_image_y,
idle_screen_wallpaper,
(S16) cat33_frame_number);
cat33_animation_delay = gdi_image_get_animation_delay();
gui_one_layer_create_bg_image_cache(); //create image cache
}
(2) 原始code:
gdi_image_draw(cat33_image_x, cat33_image_y, idle_screen_wallpaper);
需要改为:
if(gui_one_layer_img_bmp_cache.buf_ptr)
{
gdi_image_cache_bmp_draw(0, 0, &gui_one_layer_img_bmp_cache);//use image
cache
}
else
{
gdi_image_draw(cat33_image_x, cat33_image_y, idle_screen_wallpaper);
gui_one_layer_create_bg_image_cache(); // create image cache
}

5,以上步骤完成后,只要remake MMI_php?mod=tag&id=6090" target="_blank" class="relatedlink">Framework
谢谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top