OpenGL渲染器配置

本文檔介紹了您可以進行的效能調整,以充分利用您的硬體。

OpenGL渲染器 (libhwui) 屬性

本文檔列出了可用於控制 Android 2D 硬體加速渲染管道的所有屬性。在device.mk中將這些屬性設為PRODUCT_PROPERTY_OVERRIDES

所有 Android 版本的屬性

財產類型預設值描述
ro.zygote.disable_gl_preload boolean false用於啟動時啟用/停用 Zygote 中 EGL/GL 驅動程式的預先載入。當此屬性設定為 false 時,Zygote 將透過呼叫 eglGetDisplay(EGL_DEFAULT_DISPLAY) 預先載入 GL 驅動程式。目標是在 Zygote 中載入動態庫程式碼以與所有其他進程共用。如果驅動程式不支援共用,請將此屬性設為 true。

Android 8.0 及更低版本的屬性

財產類型預設值描述
ro.hwui.disable_scissor_opt boolean false

用於啟用或停用剪刀優化。接受的值是 true 和 false。當啟用剪刀最佳化時,OpenGLRenderer會嘗試透過選擇性地啟用和停用GL剪刀測試來最小化剪刀的使用。

當最佳化已停用時,OpenGLRenderer 保持 GL 剪刀測試啟用並根據需要變更剪刀矩形。某些 GPU(例如 SGX 540)在更頻繁地更改剪刀矩形時比經常啟用或停用剪刀測試時表現更好。

ro.hwui.texture_cache_size float 24定義每個進程紋理快取的大小(以兆位元組為單位)。我們建議使用足夠大的快取來容納多個螢幕的 32 位元紋理(例如,在 1280x800 顯示器上,全螢幕緩衝區使用大約 4 MB,因此快取應至少為 20 MB。)
ro.hwui.layer_cache_size float 16定義每個進程層快取的大小(以兆位元組為單位)。我們建議使用足夠大的緩存,以容納 32 位元螢幕的 4 倍。例如,在 1280x800 顯示器上,全螢幕緩衝區使用約 4 MB,因此快取應至少為 16 MB。
ro.hwui.gradient_cache_size 0.5 float定義每個進程梯度快取的大小(以兆位元組為單位)。單一梯度通常佔用 1 到 4 KB 的記憶體。建議使用足夠大的快取來容納至少十二個梯度。
ro.hwui.patch_cache_size integer 128定義每個進程的 9 個補丁快取的大小(以千位元組為單位)。此快取僅保存頂點數據,因此可以保持較小。每個頂點由 4 個浮點數或 16 個位元組組成。
ro.hwui.path_cache_size float 4定義每個進程路徑快取的大小(以兆位元組為單位)。我們建議使用足夠大的快取來容納至少一個螢幕的 32 位元紋理。例如,在 1280x800 顯示器上,全螢幕緩衝區使用約 4 MB,因此快取應至少為 4 MB。
ro.hwui.shape_cache_size float 1定義每個進程形狀快取的大小(以兆位元組為單位)。該值由多個快取使用,例如圓形和圓角矩形。我們建議使用足夠大的快取來容納至少一個 8 位元螢幕。例如,在 1280x800 顯示器上,全螢幕緩衝區大約使用 1 MB,因此快取應至少為 1 MB。
ro.hwui.drop_shadow_cache_size float 2定義每個進程文字投影快取的大小(以兆位元組為單位)。我們建議使用足夠大的快取來容納兩個螢幕的 8 位元紋理。例如,在 1280x800 顯示器上,全螢幕緩衝區使用大約 1 MB,因此快取應至少為 2 MB。
ro.hwui.r_buffer_cache_size float 2定義每個行程的渲染緩衝區快取的大小(以兆位元組為單位)。建議使用足夠大的快取以容納兩倍於 8 位元的螢幕。例如,在 1280x800 顯示器上,全螢幕緩衝區使用大約 1 MB,因此快取應至少為 2 MB。如果裝置支援 4 位元或 1 位元模板緩衝區,則快取可以更小。
ro.hwui.texture_cache_flush_rate float 0.6定義記憶體刷新後要保留的紋理快取的百分比。當系統需要跨所有應用程式回收記憶體時,就會觸發記憶體刷新。我們建議在這種情況下釋放大約 50% 的快取。
ro.hwui.text_small_cache_width integer 1024定義預設字體快取的寬度(以像素為單位)。上限取決於 GPU 上傳紋理的速度。我們建議至少使用 1024 像素但最多 2048 像素。您還應該使用二值的冪。
ro.hwui.text_small_cache_height integer 256定義預設字體快取的高度(以像素為單位)。上限取決於 GPU 上傳紋理的速度。我們建議至少使用 256 像素但最多 1024 像素。
ro.hwui.text_large_cache_width integer 2048定義大字體快取的寬度(以像素為單位)。此快取用於太大而無法放入預設字體快取的字形。上限取決於 GPU 上傳紋理的速度。我們建議使用至少 2048 像素但最多 4096 像素。您還應該使用二值的冪。
ro.hwui.text_large_cache_height integer 512定義大字體快取的高度(以像素為單位)。大字體快取用於太大而無法放入預設字體快取的字形。上限取決於 GPU 上傳紋理的速度。我們建議使用至少 512 像素但最多 2048 像素。您還應該使用二值的冪。
hwui.text_gamma_correction string lookup選擇文字伽瑪校正技術。有四種可能的選擇:
  • lookup3 :基於查找表的修正。黑白文字的伽瑪校正不同(請參閱下面的閾值)。
  • lookup :基於單一查找表的校正。
  • shader3 :GLSL 著色器應用的校正。黑白文字的伽瑪校正不同(請參閱下面的閾值)。
  • shader :GLSL 著色器應用的校正。
尋找伽瑪校正在著色器數學有限的 GPU 上效果最佳。著色器伽瑪校正最能節省記憶體。我們建議使用預設lookup技術,它在品質、速度和記憶體使用方面提供了良好的折衷。
hwui.text_gamma float 1.4定義用於文本伽瑪校正的伽瑪值。可根據設備使用的顯示器調整該值。
hwui.text_gamma.black_threshold integer 64定義亮度閾值,低於該閾值將應用黑色伽馬校正。該值必須定義在 0..255 範圍內。
hwui.text_gamma.white_threshold integer 192定義應用白色伽瑪校正的亮度閾值。該值必須定義在 0..255 範圍內。
hwui.use_gpu_pixel_buffers boolean true用於啟用或停用 OpenGL ES 3.0 硬體上 PBO 的使用。渲染器使用 PBO 來執行非同步紋理上傳,尤其是字體快取。此屬性應始終保持啟用狀態,但如果使用 PBO 導致損壞或效能不佳,則可以在啟動或開發過程中停用該屬性。這就是該屬性不是唯讀的原因。