打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android Graphic UI with GPU Hardware Acceleration | Freescale Community

Graphics are a big topic in the Android platform, containing java/jni graphic framework and 2d/3d graphic engines (skia, OpenGL-ES, renderscript).

This document describes the general Android graphic stack and UI features on Freescale devices.

 

1. Android Graphic Stacks

  • All Android 3D apps and games have the following graphic stack:

  • Android system UI and all Apps UI follow 2D graphic stack as below, the hardware render will accelerate Android 2D UI with GPU HW OpenGL-ES 2.0 to improve the whole UI performance.

Hardware acceleration can be disabled on i.mx6 in device/fsl/imx6/soc/imx6dq.mk

USE_OPENGL_RENDERER := false

Then rebuild frameworks/base/core/jni, and replace libandroid_runtime.so

  • Surfaceflinger is responsible of all surface layers composition, and  then generate the framebuffer pixmap for display devices. these graphic surface layers are from 2D/3D apps.

  • Hwcomposer is the alternative module of Surfaceflinger with OpenGL-ES. Hwcomposer is used to combine the specific surface layers supported by specific vendor devices. Freescale i.MX6 devices use GPU 2D to combine most surface layers, and the system power can be reduced with GPU 2D instead of GPU 3D. The typical power saving case is video playback.

 

Hwcomposer with GPU 2D can offload GPU 3D task when running game and benchmarks, it is proved to improve the overall system performance about 20%.

2. Performance measurment

  • Show FPS for Android system performance

 

For NFS boot you can set “debug.sf.showfps” to 1 in init.freescale.rc (“setprop debug.sf.showfps 1”) and then reboot the system. For SD or EMMC boot, you can issue command “setprop debug.sf.showfps 1” in console, then find system_server thread by top and kill it to reset the system.

 

  • Graphic benchmarks for 3D capability measurement

Quadrant

Full test benchmark cover CPU, Memory, IO, 2D and 3D

GLBenchmark

http://www.glbenchmark.com/

NenaMark2

https://market.android.com/details?id=se.nena.nenamark2

An3DBench

http://www.androidzoom.com/android_applications/tools/an3dbench_hnog.html

AnTutu

http://www.antutu.com/software.html

3DMark

http://www.futuremark.com/benchmarks/3dmark06/introduction/

  • Browser benchmarks

http://www.webkit.org/perf/sunspider/sunspider.html

http://v8.googlecode.com/svn/data/benchmarks/current/run.html

http://www.craftymind.com/guimark2/

http://www.craftymind.com/factory/guimark/GUIMark_HTML4.html

http://themaninblue.com/writing/perspective/2010/03/22/

 

3.  Android UI features

  • Dual display with same content

This feature is supported in the default image in Android i.MX 6 release package. In this feature, LVDS panel and HDMI output can be supported simultaneously. It is only enabled when the HDMI TV has been connected with the board.

  • Overscan for TV devices

Some TVs may miss display the contents in overscan area. To avoid the contents in overscan area being lost, the common implement is by underscanning with an adjustable black border and letitng the viewer adjust the width of the black border. The downscan operation is done by surfaceflinger when it does surface composition through HW OpenGL ES. There is no performance impact since all the work is done by GPU HW. Overscan can be configured in display setting in visual mode:

  • 32 bits color depth

32bpp UI can be supported by adding “bpp=32” in uboot as below:

setenv bootargs ‘… video=mxcdi1fb:RGB666,XGA,bpp=32 …’, also can configure it in display setting.

 

Enable 32bpp frame buffer and application surface buffer will be allocate to RGBA8888 format instead of default RGB565 format, that means more system memory is allocated.

 

After enabling 32bpp, if some applications still don't have better UI quality, check to see if  there is hard code to request RGB565 format surface (should request RGBA8888 format to get better quality).

 

Sample code is attached to test for 32bpp (left is on 16bpp, right is on 32bpp)

 

  • Display Visual Setting

The display setting is the add-on feature in FSL Android release, it is very convenient for end-users to change display property, mostly for the following features:

Dual display enablement

Display color depth setting(16bpp, 32bpp)

Overscan adjustment in horizontal and vertical orientation

 

4. Issue Diagnosis

 

  • Application Compatibility

Some Android applications may not run correctly on some Android releases. It may cause application compatibility, so check the application in other platforms.

 

For example Neocore and Asphalt 5 can run on Eclair, Froyo, and Gingerbread, but will not correctly run on Honeycomb.

 

  • GPU Compatibility

 

Some game UIs may not correctly display on our Android release. When encountering this kind of issue, the customer can check whether it is caused by the game using an OpenGL extension which our GPU does not support. They can download another data package (for example not extension data package) to have a check.

 

  • Others

 

Enlarge GPU memory if you encounter UI abnormally displaying after running an application for a while. Some applications need Wifi connections, so monitor the console log to see whether there are any error reports.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android各个版本的区别-API变更
Learning about Android Graphics Subsystem | M...
wifi 层次
Android的硬件加速
Android应用程序UI硬件加速渲染技术简要介绍和学习计划
SDL 1.2 to 2.0 Migration Guide
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服