本文將說明如何調整效能,充分發揮硬體效能。
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 |
用於啟用或停用剪刀最佳化功能。可接受的值為 true 和 false。啟用剪刀最佳化功能後,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 位元螢幕 4 倍大小的快取。舉例來說,在 1280x800 顯示器上,全螢幕緩衝區會使用約 4 MB 的空間,因此快取應至少為 16 MB。 |
ro.hwui.gradient_cache_size |
0.5 |
float |
定義每個程序漸層快取的大小 (以 MB 為單位)。單一漸層通常會佔用 1 到 4 KB 的記憶體。建議使用至少可容納十二個漸層的快取。 |
ro.hwui.patch_cache_size |
integer |
128 |
定義每個程序的 9-patches 快取大小 (以 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 |
選取文字伽馬校正技術。您有四種選擇:
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 導致資料毀損或效能不佳,則可在啟動或開發期間停用。因此,這個屬性並非唯讀。 |