Questo documento descrive le ottimizzazioni del rendimento che puoi eseguire per ottenere il massimo dal tuo 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à | Digitazione | Valore predefinito | Descrizione |
---|---|---|---|
ro.zygote.disable_gl_preload |
boolean |
false |
Utilizzato per attivare/disattivare il precaricamento dei driver EGL/GL in Zygote all'avvio. Se questa proprietà è impostata su false, Zygote precarica i driver GL chiamando 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à | Digitazione | Valore predefinito | Descrizione |
---|---|---|---|
ro.hwui.disable_scissor_opt |
boolean |
false |
Utilizzato per attivare o disattivare l'ottimizzazione delle forbici. I valori accettati sono true e false. Quando l'ottimizzazione delle operazioni di ritaglio è attiva, OpenGLRenderer tenta di ridurle al minimo attivando e disattivando in modo selettivo il test di ritaglio GL. Quando l'ottimizzazione è disattivata, OpenGLRenderer mantiene attivo il test di ritaglio GL e modifica il rettangolo di ritaglio in base alle esigenze. Alcune GPU (ad esempio la SGX 540) hanno un rendimento migliore se si modifica il rettangolo di ritaglio più spesso rispetto all'attivazione o alla disattivazione frequente del test di ritaglio. |
ro.hwui.texture_cache_size |
float |
24 |
Definisce le dimensioni, in megabyte, della cache delle texture per processo. Ti consigliamo di utilizzare una cache sufficientemente grande da contenere texture a 32 bit per più schermi (ad esempio, su un display 1280 x 800, un buffer a schermo intero utilizza circa 4 MB, quindi la cache deve essere di almeno 20 MB). |
ro.hwui.layer_cache_size |
float |
16 |
Definisce le dimensioni, in megabyte, della cache dei livelli per processo. Ti consigliamo di utilizzare una cache sufficientemente grande da contenere 4 volte lo schermo in 32 bit. Ad esempio, su un display 1280 x 800, un buffer a schermo intero utilizza circa 4 MB, quindi la cache deve essere di almeno 16 MB. |
ro.hwui.gradient_cache_size |
0.5 |
float |
Definisce le dimensioni, in megabyte, della cache dei gradienti per processo. Un singolo gradiente occupa in genere tra 1 e 4 KB di memoria. Ti consigliamo di utilizzare una cache sufficientemente grande da contenere almeno dodici gradienti. |
ro.hwui.patch_cache_size |
integer |
128 |
Definisce le dimensioni, in kilobyte, della cache di 9 patch per processo. Questa cache contiene solo i dati dei vertici e può quindi essere mantenuta di piccole dimensioni. Ogni vertice è costituito da 4 valori float o 16 byte. |
ro.hwui.path_cache_size |
float |
4 |
Definisce le dimensioni, in megabyte, della cache dei percorsi per processo. Ti consigliamo di utilizzare una cache sufficientemente grande da contenere almeno una schermata di texture a 32 bit. Ad esempio, su un display 1280 x 800, un buffer a schermo intero utilizza circa 4 MB, quindi la cache deve essere di almeno 4 MB. |
ro.hwui.shape_cache_size |
float |
1 |
Definisce le dimensioni, 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 un display 1280x800, un buffer a schermo intero utilizza circa 1 MB, quindi la cache deve essere di almeno 1 MB. |
ro.hwui.drop_shadow_cache_size |
float |
2 |
Definisce le dimensioni, in megabyte, della cache delle ombreggiature del testo per processo. Ti consigliamo di utilizzare una cache sufficientemente grande da contenere due schermate di texture a 8 bit. Ad esempio, su un display 1280 x 800, un buffer a schermo intero utilizza circa 1 MB, quindi la cache deve essere di almeno 2 MB. |
ro.hwui.r_buffer_cache_size |
float |
2 |
Definisce le dimensioni, in megabyte, della cache dei buffer di rendering per processo. È consigliabile utilizzare una cache sufficientemente grande da contenere il doppio dello schermo in 8 bit. Ad esempio, su un display da 1280 x 800, un buffer a schermo intero utilizza circa 1 MB, quindi la cache deve essere di almeno 2 MB. La cache può essere più piccola 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 mantenere dopo uno svuotamento della memoria. I flussi di memoria vengono attivati quando il sistema deve recuperare la memoria in tutte le applicazioni. In questi casi, ti 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. Consigliamo di utilizzare almeno 1024 pixel, ma non più di 2048 pixel. Devi anche utilizzare un valore di potenza di due. |
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. Consigliamo di utilizzare almeno 256 pixel, ma non più di 1024. |
ro.hwui.text_large_cache_width |
integer |
2048 |
Definisce la larghezza in pixel della cache dei caratteri di grandi dimensioni. Questa cache viene utilizzata per gli glifi troppo grandi per essere inseriti nella cache dei caratteri predefinita. Il limite superiore dipende dalla velocità con cui la GPU può caricare le texture. Consigliamo di utilizzare almeno 2048 pixel, ma non più di 4096 pixel. Devi anche utilizzare un valore di potenza di due. |
ro.hwui.text_large_cache_height |
integer |
512 |
Definisce l'altezza in pixel della cache dei caratteri di grandi dimensioni. La cache dei caratteri di grandi dimensioni viene utilizzata per i glifi troppo grandi per essere inseriti nella cache dei caratteri predefinita. Il limite superiore dipende dalla velocità con cui la GPU può caricare le texture. Ti consigliamo di utilizzare almeno 512 pixel, ma non più di 2048 pixel. Devi anche utilizzare un valore di potenza di due. |
hwui.text_gamma_correction |
string |
lookup |
Consente di selezionare la tecnica di correzione della gamma del testo. Esistono quattro possibili scelte:
lookup , 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 modificato 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 attivare o disattivare l'utilizzo di PBO sull'hardware OpenGL ES 3.0. I PBO vengono utilizzati dal renderer per eseguire caricamenti di texture asincroni, in particolare per la cache dei caratteri. Questa proprietà deve rimanere sempre attiva, ma può essere disattivata durante l'inizializzazione o lo sviluppo se l'utilizzo dei PBO causa danneggiamenti o prestazioni scadenti. Ecco perché la proprietà non è di sola lettura. |