本文档介绍了您可以执行的性能调整,以充分利用您的硬件。
OpenGLRenderer (libhwui) 属性
本文档列出了可用于控制 Android 2D 硬件加速渲染管道的所有属性。在 device.mk
中将这些属性设置为 PRODUCT_PROPERTY_OVERRIDES
。
所有 Android 版本的属性
属性 | 类型 | 默认值 | 说明 |
---|---|---|---|
ro.zygote.disable_gl_preload |
布尔值 |
false |
用于在启动时启用/停用 Zygote 中 EGL/GL 驱动程序的预加载。当此属性设置为 false 时,Zygote 将通过调用 eglGetDisplay(EGL_DEFAULT_DISPLAY) 预加载 GL 驱动程序。目标是在 Zygote 中加载动态库代码,以便与其他所有进程共享。如果驱动程序不支持共享,请将此属性设置为 true。 |
Android 8.0 及更低版本的属性
属性 | 类型 | 默认值 | 说明 |
---|---|---|---|
ro.hwui.disable_scissor_opt |
布尔值 |
false |
用于启用或停用剪刀优化。接受的值为 true 和 false。启用剪刀优化后,OpenGLRenderer 会尝试通过选择性地启用和停用 GL 剪刀测试来最大限度地减少剪刀操作的使用。 停用优化后,OpenGLRenderer 会保持 GL 剪刀测试处于启用状态,并根据需要更改剪刀矩形。当更频繁地更改剪刀矩形而不是经常启用或停用剪刀测试时,某些 GPU(例如,SGX 540)的性能会更好。 |
ro.hwui.texture_cache_size |
浮点数 |
24 |
定义每个进程纹理缓存的大小(以兆字节为单位)。我们建议使用足够大的缓存来容纳多个屏幕的 32 位纹理(例如,在 1280x800 显示屏上,一个全屏缓冲区大约使用 4 MB,因此缓存应至少为 20 MB。) |
ro.hwui.layer_cache_size |
浮点数 |
16 |
定义每个进程图层缓存的大小(以兆字节为单位)。我们建议使用足够大的缓存来容纳 4 倍屏幕大小的 32 位纹理。例如,在 1280x800 显示屏上,一个全屏缓冲区大约使用 4 MB,因此缓存应至少为 16 MB。 |
ro.hwui.gradient_cache_size |
0.5 |
浮点数 |
定义每个进程渐变缓存的大小(以兆字节为单位)。单个渐变通常占用 1 到 4 KB 的内存。建议使用足够大的缓存来容纳至少十二个渐变。 |
ro.hwui.patch_cache_size |
整数 |
128 |
定义每个进程的 9-patch 缓存的大小(以千字节为单位)。此缓存仅保存顶点数据,因此可以保持较小。每个顶点由 4 个浮点数或 16 个字节组成。 |
ro.hwui.path_cache_size |
浮点数 |
4 |
定义每个进程路径缓存的大小(以兆字节为单位)。我们建议使用足够大的缓存来容纳至少一个屏幕大小的 32 位纹理。例如,在 1280x800 显示屏上,一个全屏缓冲区大约使用 4 MB,因此缓存应至少为 4 MB。 |
ro.hwui.shape_cache_size |
浮点数 |
1 |
定义每个进程形状缓存的大小(以兆字节为单位)。此值由多个缓存(例如圆形和圆角矩形)使用。我们建议使用足够大的缓存来容纳至少一个 8 位屏幕。例如,在 1280x800 显示屏上,一个全屏缓冲区大约使用 1 MB,因此缓存应至少为 1 MB。 |
ro.hwui.drop_shadow_cache_size |
浮点数 |
2 |
定义每个进程文本阴影缓存的大小,以兆字节为单位。我们建议使用足够大的缓存来容纳两个屏幕的 8 位纹理。例如,在 1280x800 显示屏上,一个全屏缓冲区大约使用 1 MB,因此缓存应至少为 2 MB。 |
ro.hwui.r_buffer_cache_size |
浮点数 |
2 |
定义每个进程的渲染缓冲区缓存的大小,以兆字节为单位。建议使用足够大的缓存来容纳两倍屏幕大小的 8 位数据。例如,在 1280x800 显示屏上,一个全屏缓冲区大约使用 1 MB,因此缓存应至少为 2 MB。如果设备支持 4 位或 1 位模板缓冲区,则缓存可以更小。 |
ro.hwui.texture_cache_flush_rate |
浮点数 |
0.6 |
定义内存刷新后要保留的纹理缓存的百分比。当系统需要回收所有应用程序的内存时,会触发内存刷新。我们建议在这种情况下释放大约 50% 的缓存。 |
ro.hwui.text_small_cache_width |
整数 |
1024 |
定义默认字体缓存的宽度,以像素为单位。上限取决于 GPU 上传纹理的速度。我们建议至少使用 1024 像素,但最多使用 2048 像素。您还应该使用 2 的幂值。 |
ro.hwui.text_small_cache_height |
整数 |
256 |
定义默认字体缓存的高度,以像素为单位。上限取决于 GPU 上传纹理的速度。我们建议至少使用 256 像素,但最多使用 1024 像素。 |
ro.hwui.text_large_cache_width |
整数 |
2048 |
定义大字体缓存的宽度,以像素为单位。此缓存用于太大而无法放入默认字体缓存的字形。上限取决于 GPU 上传纹理的速度。我们建议至少使用 2048 像素,但最多使用 4096 像素。您还应该使用 2 的幂值。 |
ro.hwui.text_large_cache_height |
整数 |
512 |
定义大字体缓存的高度,以像素为单位。大字体缓存用于太大而无法放入默认字体缓存的字形。上限取决于 GPU 上传纹理的速度。我们建议至少使用 512 像素,但最多使用 2048 像素。您还应该使用 2 的幂值。 |
hwui.text_gamma_correction |
string |
lookup |
选择文本伽玛校正技术。有四种可能的选择:
lookup 技术,它在质量、速度和内存使用方面提供了良好的折衷方案。 |
hwui.text_gamma |
浮点数 |
1.4 |
定义用于文本伽玛校正的伽玛值。此值可以根据设备使用的显示器进行调整。 |
hwui.text_gamma.black_threshold |
整数 |
64 |
定义应用黑色伽玛校正的亮度阈值。该值必须在 0..255 范围内定义。 |
hwui.text_gamma.white_threshold |
整数 |
192 |
定义应用白色伽玛校正的亮度阈值。该值必须在 0..255 范围内定义。 |
hwui.use_gpu_pixel_buffers |
布尔值 |
true |
用于在 OpenGL ES 3.0 硬件上启用或禁用 PBO 的使用。渲染器使用 PBO 执行异步纹理上传,特别是对于字体缓存。此属性应始终保持启用状态,但如果使用 PBO 导致损坏或性能极差,则可以在启动或开发期间禁用它。这就是为什么该属性不是只读的原因。 |