Questo documento descrive l'ottimizzazione delle prestazioni che è possibile eseguire per ottenere il massimo dal proprio hardware.
Proprietà OpenGLRenderer (libhwui).
Questo documento elenca tutte le proprietà che puoi utilizzare per controllare la pipeline di rendering con accelerazione hardware 2D di Android. Imposta queste proprietà in device.mk
come PRODUCT_PROPERTY_OVERRIDES
.
Proprietà per tutte le versioni di Android
Proprietà | Tipo | Valore di default | Descrizione |
---|---|---|---|
ro.zygote.disable_gl_preload | boolean | false | Utilizzato per abilitare/disabilitare il precaricamento dei driver EGL/GL in Zygote all'avvio. Quando questa proprietà è impostata su false, Zygote precaricherà i driver GL richiamando eglGetDisplay(EGL_DEFAULT_DISPLAY). L'obiettivo è caricare il codice delle librerie dinamiche in Zygote per condividerlo con tutti gli altri processi. Se un driver non supporta la condivisione, imposta questa proprietà su true. |
Proprietà per Android 8.0 e versioni precedenti
Proprietà | Tipo | Valore di default | Descrizione |
---|---|---|---|
ro.hwui.disable_scissor_opt | boolean | false | Utilizzato per abilitare o disabilitare l'ottimizzazione delle forbici. I valori accettati sono vero e falso. Quando l'ottimizzazione delle forbici è abilitata, OpenGLRenderer tenta di ridurre al minimo l'uso delle forbici abilitando e disabilitando selettivamente il test delle forbici GL. Quando l'ottimizzazione è disabilitata, OpenGLRenderer mantiene abilitato il test della forbice GL e modifica il rettangolo della forbice secondo necessità. Alcune GPU (ad esempio, l'SGX 540) funzionano meglio quando si cambia il rettangolo a forbice più spesso che quando si abilita o disabilita spesso il test a forbice. |
ro.hwui.texture_cache_size | float | 24 | Definisce la dimensione, in megabyte, della cache delle texture per processo. Ti consigliamo di utilizzare una cache sufficientemente grande da contenere diversi schermi con texture a 32 bit (ad esempio, su uno schermo 1280x800, un buffer a schermo intero utilizza circa 4 MB, quindi la cache dovrebbe essere di almeno 20 MB). |
ro.hwui.layer_cache_size | float | 16 | Definisce la dimensione, in megabyte, della cache dei livelli per processo. Ti consigliamo di utilizzare una cache sufficientemente grande da contenere 4 volte lo schermo a 32 bit. Ad esempio, su uno schermo 1280x800, un buffer a schermo intero utilizza circa 4 MB, quindi la cache dovrebbe essere di almeno 16 MB. |
ro.hwui.gradient_cache_size | 0.5 | float | Definisce la dimensione, in megabyte, della cache dei gradienti per processo. Un singolo gradiente occupa generalmente tra 1 e 4 KB di memoria. Si consiglia di utilizzare una cache sufficientemente grande da contenere almeno dodici gradienti. |
ro.hwui.patch_cache_size | integer | 128 | Definisce la dimensione, in kilobyte, della cache di 9 patch, per processo. Questa cache contiene solo i dati dei vertici e pertanto può essere mantenuta piccola. Ogni vertice è composto da 4 float o 16 byte. |
ro.hwui.path_cache_size | float | 4 | Definisce la dimensione, in megabyte, della cache dei percorsi per processo. Consigliamo di utilizzare una cache sufficientemente grande da contenere almeno uno schermo con texture a 32 bit. Ad esempio, su uno schermo 1280x800, un buffer a schermo intero utilizza circa 4 MB, quindi la cache dovrebbe essere di almeno 4 MB. |
ro.hwui.shape_cache_size | float | 1 | Definisce la dimensione, in megabyte, delle cache delle forme per processo. Questo valore viene utilizzato da diverse cache come cerchi e rettangoli arrotondati. Ti consigliamo di utilizzare una cache sufficientemente grande da contenere almeno uno schermo a 8 bit. Ad esempio, su uno schermo 1280x800, un buffer a schermo intero utilizza circa 1 MB, quindi la cache dovrebbe essere almeno 1 MB. |
ro.hwui.drop_shadow_cache_size | float | 2 | Definisce la dimensione, in megabyte, della cache delle ombre esterne del testo per processo. Ti consigliamo di utilizzare una cache sufficientemente grande da contenere due schermi con texture a 8 bit. Ad esempio, su uno schermo 1280x800, un buffer a schermo intero utilizza circa 1 MB, quindi la cache dovrebbe essere di almeno 2 MB. |
ro.hwui.r_buffer_cache_size | float | 2 | Definisce la dimensione, in megabyte, della cache dei buffer di rendering per processo. Si consiglia di utilizzare una cache sufficientemente grande da contenere il doppio dello schermo in 8 bit. Ad esempio, su uno schermo 1280x800, un buffer a schermo intero utilizza circa 1 MB, quindi la cache dovrebbe essere di almeno 2 MB. La cache può essere inferiore se il dispositivo supporta buffer stencil a 4 bit o 1 bit. |
ro.hwui.texture_cache_flush_rate | float | 0.6 | Definisce la percentuale della cache delle texture da conservare dopo uno svuotamento della memoria. Gli svuotamenti della memoria vengono attivati quando il sistema deve recuperare memoria in tutte le applicazioni. In tali situazioni consigliamo di rilasciare circa il 50% della cache. |
ro.hwui.text_small_cache_width | integer | 1024 | Definisce la larghezza in pixel della cache dei caratteri predefinita. Il limite superiore dipende dalla velocità con cui la GPU può caricare le texture. Si consiglia di utilizzare almeno 1024 pixel ma al massimo 2048 pixel. Dovresti anche usare una potenza di due valori. |
ro.hwui.text_small_cache_height | integer | 256 | Definisce l'altezza in pixel della cache dei caratteri predefinita. Il limite superiore dipende dalla velocità con cui la GPU può caricare le texture. Si consiglia di utilizzare almeno 256 pixel ma al massimo 1024 pixel. |
ro.hwui.text_large_cache_width | integer | 2048 | Definisce la larghezza in pixel della cache dei caratteri grandi. Questa cache viene utilizzata per i glifi troppo grandi per adattarsi alla cache dei caratteri predefinita. Il limite superiore dipende dalla velocità con cui la GPU può caricare le texture. Si consiglia di utilizzare almeno 2048 pixel ma al massimo 4096 pixel. Dovresti anche usare una potenza di due valori. |
ro.hwui.text_large_cache_height | integer | 512 | Definisce l'altezza in pixel della cache dei caratteri grandi. La cache dei caratteri grande viene utilizzata per i glifi troppo grandi per rientrare nella cache dei caratteri predefinita. Il limite superiore dipende dalla velocità con cui la GPU può caricare le texture. Si consiglia di utilizzare almeno 512 pixel ma al massimo 2048 pixel. Dovresti anche usare una potenza di due valori. |
hwui.text_gamma_correction | string | lookup | Seleziona la tecnica di correzione gamma del testo. Ci sono quattro scelte possibili:
lookup predefinita, che offre un buon compromesso in termini di qualità, velocità e utilizzo della memoria. |
hwui.text_gamma | float | 1.4 | Definisce il valore gamma utilizzato per la correzione gamma del testo. Questo valore può essere regolato in base al display utilizzato dal dispositivo. |
hwui.text_gamma.black_threshold | integer | 64 | Definisce la soglia di luminanza al di sotto della quale viene applicata la correzione gamma del nero. Il valore deve essere definito nell'intervallo 0..255. |
hwui.text_gamma.white_threshold | integer | 192 | Definisce la soglia di luminanza al di sopra della quale viene applicata la correzione della gamma del bianco. Il valore deve essere definito nell'intervallo 0..255. |
hwui.use_gpu_pixel_buffers | boolean | true | Utilizzato per abilitare o disabilitare l'uso di PBO sull'hardware OpenGL ES 3.0. I PBO vengono utilizzati dal renderer per eseguire caricamenti asincroni di texture, in particolare per la cache dei caratteri. Questa proprietà dovrebbe rimanere sempre abilitata ma può essere disabilitata durante il caricamento o lo sviluppo se l'uso dei PBO provoca danneggiamenti o prestazioni pessime. Questo è il motivo per cui la proprietà non è di sola lettura. |