UI performance tuning in hwui hardware render for Lollipop

Document created by Ivan.liu Employee on Jan 28, 2015
Version 1Show Document
  • View in full screen mode

ro.hwui.disable_scissor_opt
For Vivante GPU, the scissor should be enabled.
The default value is enabled, So, keep the default value.

ro.hwui.texture_cache_size
ro.hwui.layer_cache_size
ro.hwui.r_buffer_cache_size
ro.hwui.path_cache_size
ro.hwui.drop_shadow_cache_size
These parameters depend on display resolution.
The default value is calculated according to 720P resolution which near 1024x768 resolution on our platform.

ro.hwui.text_small_cache_width
ro.hwui.text_small_cache_height
ro.hwui.text_large_cache_width
ro.hwui.text_large_cache_height
These variables depends on screen resolution, density(similar to ppi) and language used.
On a larger resolution screen, there might be more characters painted on it.
Better to have larger font cache size.
On a larger density config, it tends to use larger fonts.
If the language has more different characters (symbols), it may need larger texture size to cache the fonts. For example, English may only have 52 characters, but Chinese have more than 10K and each will occupy more memory cache than English character.

If cache size is too small, performance may drop because the font renderer will flush existed cache and upload new ones.
If cache size is too large, it just wastes memory.
It's OK to flush existed cache sometimes. But it's better to have only one (or
no) flush for rendering a single screen.

The default value is optimum on out platform with 1024x768 display resolution.
BTW, texture size limitation on current Vivante GPU are 8192 x 8192.

Attachments

    Outcomes