OpenGLRenderer 設定

本文說明如何進行效能調整,以最佳化硬體效能。

OpenGLRenderer (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

啟用或停用剪刀最佳化功能。可接受的值為 truefalse。啟用剪刀最佳化功能後,OpenGLRenderer 會嘗試選擇性啟用及停用 GL 剪刀測試,盡量減少剪刀作業。

停用時,OpenGLRenderer 會保持啟用 GL 剪刀測試,並視需要變更剪刀矩形。某些 GPU (例如 SGX 540) 經常變更剪刀矩形,效能會比頻繁啟用或停用剪刀測試更好。

ro.hwui.texture_cache_size float 24 定義每個程序紋理快取的大小 (以 MB 為單位)。建議使用足夠大的快取,以容納多個 32 位元紋理畫面。舉例來說,在 1280x800 的螢幕上,全螢幕緩衝區會使用約 4 MB,因此快取至少應為 20 MB。
ro.hwui.layer_cache_size float 16 定義每個程序層快取的大小 (以 MB 為單位)。建議使用足夠大的快取,以容納四倍的 32 位元螢幕。舉例來說,在 1280x800 的螢幕上,全螢幕緩衝區會使用約 4 MB,因此快取應至少為 16 MB。
ro.hwui.gradient_cache_size float 0.5 定義每個程序漸層快取的大小 (以 MB 為單位)。單一漸層通常會佔用 1 KB 到 4 KB 的記憶體。建議使用足夠大的快取,至少可容納 12 個漸層。
ro.hwui.patch_cache_size integer 128 定義每個程序中 9-patch 快取的大小 (以 KB 為單位)。這個快取只會保留頂點資料,因此可以保持較小。每個頂點由 4 個浮點數組成,或 16 個位元組。
ro.hwui.path_cache_size float 4 定義每個程序路徑快取的大小 (以 MB 為單位)。建議使用足夠大的快取,至少可容納一個畫面 32 位元紋理。舉例來說,在 1280x800 的螢幕上,全螢幕緩衝區會使用約 4 MB,因此快取應至少為 4 MB。
ro.hwui.shape_cache_size float 1 定義每個程序形狀快取的大小 (以 MB 為單位)。這個值會用於多個快取,例如圓形和圓角矩形。建議您使用足夠大的快取,至少能容納一個 8 位元畫面。舉例來說,在 1280x800 的螢幕上,全螢幕緩衝區會使用約 1 MB,因此快取應至少為 1 MB。
ro.hwui.drop_shadow_cache_size float 2 定義每個程序文字陰影快取的大小 (以 MB 為單位)。 建議使用足夠大的快取,以容納兩個 8 位元紋理畫面。舉例來說,在 1280x800 的螢幕上,全螢幕緩衝區會使用約 1 MB,因此快取應至少為 2 MB。
ro.hwui.r_buffer_cache_size float 2 定義每個程序算繪緩衝區快取的大小 (以 MB 為單位)。建議使用足夠大的快取,以容納兩倍的 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 像素的圖片。此外,請使用 2 的乘冪值。
ro.hwui.text_small_cache_height integer 256 定義預設字型快取的高度 (以像素為單位)。上限取決於 GPU 上傳紋理的速度。建議使用至少 256 像素,但最多 1024 像素。
ro.hwui.text_large_cache_width integer 2048 定義大字型快取的寬度 (以像素為單位)。這個快取也用於字元,這些字元過大,無法放入預設字型快取。上限取決於 GPU 上傳紋理的速度。建議使用至少 2048 像素,但最多 4096 像素。此外,請使用 2 的乘冪值。
ro.hwui.text_large_cache_height integer 512 定義大型字型快取的高度 (以像素為單位)。如果字元過大,無法放入預設字型快取,就會使用大型字型快取。上限取決於 GPU 上傳紋理的速度。建議使用至少 512 像素,但最多 2048 像素的圖片。此外,請使用 2 的乘冪值。
hwui.text_gamma_correction string lookup 選取文字 Gamma 校正技術。有四種可能的選擇:
  • lookup3:根據對照表進行修正。黑色和白色文字的 Gamma 校正不同 (請參閱下列門檻)。
  • lookup:根據單一對照表進行修正。
  • shader3:由 GLSL 著色器套用的修正。黑色和白色文字的 Gamma 校正不同 (請參閱下列門檻)。
  • shader:由 GLSL 著色器套用的修正。
在著色器數學運算有限的 GPU 上,查閱 Gamma 校正函式效果最佳。 Shader gamma 校正最適合節省記憶體。建議使用預設的 lookup 技術,在品質、速度和記憶體用量方面取得良好平衡。
hwui.text_gamma float 1.4 定義用於文字 Gamma 校正的 Gamma 值。你可以根據裝置螢幕調整這個值。
hwui.text_gamma.black_threshold integer 64 定義亮度門檻,低於該門檻時會套用黑色 Gamma 校正。值必須介於 0 到 255 之間。
hwui.text_gamma.white_threshold integer 192 定義亮度閾值,超過這個值就會套用白色 Gamma 校正。值必須介於 0 到 255 之間。
hwui.use_gpu_pixel_buffers boolean true 啟用或停用 OpenGL ES 3.0 硬體上的 PBO。轉譯器會使用 PBO 執行非同步紋理上傳作業,特別是字型快取。這項屬性應一律保持啟用狀態,但如果 PBO 導致損毀或效能不佳,您可以在啟動或開發期間停用這項屬性。因此該屬性並非唯讀。