本文說明如何進行效能調整,以最佳化硬體效能。
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 |
啟用或停用剪刀最佳化功能。可接受的值為 停用時,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 校正技術。有四種可能的選擇:
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 導致損毀或效能不佳,您可以在啟動或開發期間停用這項屬性。因此該屬性並非唯讀。 |