阅读:18077回复:10

Android9配置nativeUI为720p

楼主#
更多 发布于:2019-07-26 21:36
在低内存设备上, 我们通常需要降低native UI来节省内存,并提高系统流畅程度。


1.  修改OSD framebuffer

dts中修改 “meson-fb” 模块:
meson-fb {
 compatible = "amlogic, meson-gxl";
 memory-region = <&logo_reserved>;
 dev_name = "meson-fb";
 status = "okay";
 interrupts = <0 3 1
 0 89 1>;
 interrupt-names = "viu-vsync", "rdma";
 mem_size = <0x00800000 0x01800000 0x00100000>;
 /* uboot logo,fb0/fb1 memory size,if afbcd fb0=0x01851000*/
--- display_mode_default = "1080p60hz";
+++ display_mode_default = "720p60hz";
 scale_mode = <1>;
 /** 0:VPU free scale 1:OSD free scale 2:OSD super scale */
--- display_size_default = <1920 1080 1920 3240 32>;
+++ display_size_default = <1280 720 1280 2160 32>;
 /*1920*1080*4*3 = 0x17BB000*/
 logo_addr = "0x3f800000";
 };
注:
此例子是三buffer缓冲的OSD。
 
几个buffer由BoardConfig.mk如下宏决定:
NUM_FRAMEBUFFER_SURFACE_BUFFERS := 3
 
如果是S905X2X3平台,第一部参考如下修改:

&meson_fb {
 status = "okay";
---display_size_default = <1920 1080 3840 2160 32>;
---mem_size = <0x00800000 0x1980000 0x100000 0x100000 0x800000>;

+++display_size_default = <1280 720 1280 2160 32>;
+++mem_size = <0x00400000 0x1980000 0x100000 0x100000 0x400000>;
 logo_addr = "0x3f800000";
 mem_alloc = <0>;
 pxp_mode = <0>; /** 0:normal mode 1:pxp mode */
};





2. device中修改Android APP display区域
(1) files/mesondisplay.cfg中的 "1080p"改为 "720p"(这里9.0不需要修改保留1080p,改了会有问题,详情见回复)
(2) 修改density , 参考如下:
Z:\AndroidP_AOSP\androidP\device\amlogic\braun\braun.mk
ifeq
($(TARGET_BUILD_GOOGLE_ATV),true)
 PRODUCT_PROPERTY_OVERRIDES += \
-    ro.sf.lcd_density=320
+    ro.sf.lcd_density=240
 else
 PRODUCT_PROPERTY_OVERRIDES += \
-    ro.sf.lcd_density=240
+    ro.sf.lcd_density=160
 endif

(3) 修改Framebuffer size, 参考如下:
Z:\AndroidP_AOSP\androidP\device\amlogic\braun\BoardConfig.mk
#MESONHWC CONFIG
USE_HWC2 := true
HWC_DISPLAY_NUM := 1

---    HWC_PRIMARY_FRAMEBUFFER_WIDTH := 1920
---    HWC_PRIMARY_FRAMEBUFFER_HEIGHT := 1080
---    #HWC_EXTEND_FRAMEBUFFER_WIDTH := 1920
---    #HWC_EXTEND_FRAMEBUFFER_HEIGHT := 1080
+++    HWC_PRIMARY_FRAMEBUFFER_WIDTH := 1280
+++    HWC_PRIMARY_FRAMEBUFFER_HEIGHT := 720
+++    #HWC_EXTEND_FRAMEBUFFER_WIDTH := 1280
+++    #HWC_EXTEND_FRAMEBUFFER_HEIGHT := 720
HWC_PRIMARY_CONNECTOR_TYPE := "hdmi"
#HWC_EXTEND_CONNECTOR_TYPE := "panel"
#HWC_ENABLE_HEADLESS_MODE := true

最新喜欢:

lxc9206lxc920... xhlqdzxhlqdz zhaoyf13zhaoyf...
If you have nothing to lose, then you can do anything.
沙发#
发布于:2019-07-27 08:19
这个应该可以理解为降低屏幕密度和分辨率,从而使系统加载UI所需的内存更小,更加流畅
[url]http://190.lsal.cn/195/1329.gif?0728100424873[/url]
板凳#
发布于:2020-02-26 10:03
2. device中修改Android APP display区域
(1) files/mesondisplay.cfg中的 "1080p"改为 "720p"(这里9.0不需要修改保留1080p,改了会有问题,详情见回复)

这里改了之后,会出现开机logo位置闪烁的问题,切记切记,这里不要修改。
If you have nothing to lose, then you can do anything.
地板#
发布于:2020-02-27 09:22
经过测试发现,S905X2平台,按照以上修改方法存在一个问题:
在reset操作(就是进入recovery模式下),显示动画会出现重影,错误。

经过研究发现,针对720p的情况,mesondisplay.cfg文件需要分开。正常启动模式和recovery模式调用不同的mesondisplay.cfg。改动如下:

在device/amlogic/franklin/file目录下新复制一个文件,文件名修改为:
mesondisplay_recovery.cfg
文件内容修改为:MBOX gxl 720p

然后修改device/amlogic/franklin/device.mk
PRODUCT_COPY_FILES += \
    device/amlogic/$(PRODUCT_DIR)/recovery/init.recovery.amlogic.rc:root/init.recovery.amlogic.rc \
    device/amlogic/$(PRODUCT_DIR)/recovery/recovery.kl:recovery/root/etc/recovery.kl \
    ---device/amlogic/$(PRODUCT_DIR)/files/mesondisplay.cfg:recovery/root/etc/mesondisplay.cfg \
    +++device/amlogic/$(PRODUCT_DIR)/files/mesondisplay_recovery.cfg:recovery/root/etc/mesondisplay.cfg \
    device/amlogic/common/recovery/busybox:recovery/root/sbin/busybox \
    device/amlogic/$(PRODUCT_DIR)/recovery/remotecfg:recovery/root/sbin/remotecfg \

这样可以修复在recovery模式下动画显示虚影重影的问题。
If you have nothing to lose, then you can do anything.
4楼#
发布于:2020-08-20 21:40

&meson_fb {
 status = "okay";
---display_size_default = <1920 1080 3840 2160 32>;
---mem_size = <0x00800000 0x1980000 0x100000 0x100000 0x800000>;

+++display_size_default = <1280 720 1280 2160 32>;
+++mem_size = <0x00400000 0x1980000 0x100000 0x100000 0x400000>;
 logo_addr = "0x3f800000";
 mem_alloc = <0>;
 pxp_mode = <0>; /** 0:normal mode 1:pxp mode */
};








ret = of_property_read_u32_array(pdev->dev.of_node,
"display_size_default",
&var_screeninfo[0], 5);
if (ret)
osd_log_info("not found display_size_default\n");
else {
fb_def_var[index].xres = var_screeninfo[0];
fb_def_var[index].yres = var_screeninfo[1];
fb_def_var[index].xres_virtual =
var_screeninfo[2];//=xres*2 2倍缓冲区
fb_def_var[index].yres_virtual =
var_screeninfo[3];//=yres*2 2倍缓冲区
fb_def_var[index].bits_per_pixel =
var_screeninfo[4];
osd_log_info("init fbdev bpp is:%d\n",
fb_def_var[index].bits_per_pixel);
if (fb_def_var[index].bits_per_pixel > 32)
fb_def_var[index].bits_per_pixel = 32;
}



0x00800000 = 8388608=1920*1080*4

0x1980000 0x100000 这两个还不知道怎么来的
5楼#
发布于:2020-09-01 15:16
amlogic和mstar mtk合并了 我们也就不回这么辛苦了  难受
6楼#
发布于:2020-09-01 15:57
阿赞88:amlogic和mstar mtk合并了 我们也就不回这么辛苦了  难受回到原帖
辛苦辛苦,哈哈,我没做amlogic了,在做全志的,也是有蛮多坑的。和amlogic有的一拼
If you have nothing to lose, then you can do anything.
7楼#
发布于:2020-09-03 11:46
VastStarGames:辛苦辛苦,哈哈,我没做amlogic了,在做全志的,也是有蛮多坑的。和amlogic有的一拼回到原帖
全志代码还好,比较健壮,风格也很统一, amlogic 感觉  MTK 全志 master的人都有提交代码在里面,每个公司的代码风格都有,只有kernel代码才有代码语法审核
8楼#
发布于:2021-12-20 20:37
大家好,有人知道怎么修改3840x2160吗?
我这边改了内核都跑不过。求教,谢谢。
9楼#
发布于:2021-12-20 21:22
351167317:大家好,有人知道怎么修改3840x2160吗?
我这边改了内核都跑不过。求教,谢谢。
回到原帖
display_size_default = <3480 2160 3480 6480 32>;
mem_size = <0x03F50000 0x1980000 0x100000 0x100000 0x800000>;/*3840x2160*4*2 = 66355200 = 3F48000*/
10楼#
发布于:2021-12-21 11:32
351167317:display_size_default = <3480 2160 3480 6480 32>;
mem_size = <0x03F50000 0x1980000 0x100000 0x100000 0x800000>;/*3840x21...
回到原帖
HWC_PRIMARY_FRAMEBUFFER_WIDTH := 3840
HWC_PRIMARY_FRAMEBUFFER_HEIGHT := 2160
只有配了这两个ui才显示不模糊了。
但是显示不对,一直有一半。
游客

返回顶部