Konfigurasi OpenGLRenderer

Dokumen ini menjelaskan penyesuaian performa yang dapat Anda lakukan untuk mendapatkan hasil maksimal dari hardware.

Properti OpenGLRenderer (libhwui)

Dokumen ini mencantumkan semua properti yang dapat Anda gunakan untuk mengontrol pipeline rendering akselerasi hardware 2D Android. Tetapkan properti ini di device.mk sebagai PRODUCT_PROPERTY_OVERRIDES.

Properti untuk semua versi Android

Properti Jenis Nilai Default Deskripsi
ro.zygote.disable_gl_preload boolean false Digunakan untuk mengaktifkan/menonaktifkan pramuat driver EGL/GL di Zygote pada waktu booting. Jika properti ini ditetapkan ke salah (false), Zygote akan memuat driver GL secara otomatis dengan memanggil eglGetDisplay(EGL_DEFAULT_DISPLAY). Tujuannya adalah memuat kode library dinamis di Zygote untuk membagikannya dengan semua proses lainnya. Jika driver tidak mendukung untuk dibagikan, tetapkan properti ini ke true.

Properti untuk Android 8.0 dan yang lebih lama

Properti Jenis Nilai Default Deskripsi
ro.hwui.disable_scissor_opt boolean false

Digunakan untuk mengaktifkan atau menonaktifkan pengoptimalan gunting. Nilai yang diterima adalah benar dan salah. Saat pengoptimalan gunting diaktifkan, OpenGLRenderer akan mencoba meminimalkan penggunaan gunting dengan mengaktifkan dan menonaktifkan pengujian gunting GL secara selektif.

Saat pengoptimalan dinonaktifkan, OpenGLRenderer akan tetap mengaktifkan pengujian gunting GL dan mengubah persegi panjang gunting sesuai kebutuhan. Beberapa GPU (misalnya, SGX 540) berperforma lebih baik saat mengubah scissor rect lebih sering daripada sering mengaktifkan atau menonaktifkan pengujian scissor.

ro.hwui.texture_cache_size float 24 Menentukan ukuran, dalam megabyte, cache tekstur per proses. Sebaiknya gunakan cache yang cukup besar untuk menyimpan beberapa layar tekstur 32-bit (misalnya, pada layar 1280x800, buffer layar penuh menggunakan sekitar 4 MB sehingga cache harus minimal 20 MB.)
ro.hwui.layer_cache_size float 16 Menentukan ukuran, dalam megabyte, cache per lapisan proses. Sebaiknya gunakan cache yang cukup besar untuk menyimpan 4 kali layar dalam 32 bit. Misalnya, pada layar 1280x800, buffering layar penuh menggunakan sekitar 4 MB, sehingga cache harus minimal 16 MB.
ro.hwui.gradient_cache_size 0.5 float Menentukan ukuran, dalam megabyte, cache gradien per proses. Satu gradien umumnya menempati memori antara 1 dan 4 KB. Sebaiknya gunakan cache yang cukup besar untuk menyimpan setidaknya dua belas gradien.
ro.hwui.patch_cache_size integer 128 Menentukan ukuran, dalam kilobyte, cache 9 patch, per proses. Cache ini hanya menyimpan data vertex sehingga dapat disimpan dalam ukuran kecil. Setiap vertex terdiri dari 4 float, atau 16 byte.
ro.hwui.path_cache_size float 4 Menentukan ukuran, dalam megabyte, cache jalur per proses. Sebaiknya gunakan cache yang cukup besar untuk menyimpan setidaknya satu layar tekstur 32-bit. Misalnya, pada layar 1280x800, buffering layar penuh menggunakan sekitar 4 MB, sehingga cache harus berukuran minimal 4 MB.
ro.hwui.shape_cache_size float 1 Menentukan ukuran, dalam megabyte, cache bentuk per proses. Nilai ini digunakan oleh beberapa cache seperti lingkaran dan persegi panjang membulat. Sebaiknya gunakan cache yang cukup besar untuk menyimpan setidaknya satu layar 8-bit. Misalnya, pada layar 1280x800, buffering layar penuh menggunakan sekitar 1 MB, sehingga cache harus berukuran minimal 1 MB.
ro.hwui.drop_shadow_cache_size float 2 Menentukan ukuran, dalam megabyte, cache bayangan teks per proses. Sebaiknya gunakan cache yang cukup besar untuk menyimpan dua layar tekstur 8-bit. Misalnya, pada layar 1280x800, buffering layar penuh menggunakan sekitar 1 MB, sehingga cache harus minimal 2 MB.
ro.hwui.r_buffer_cache_size float 2 Menentukan ukuran, dalam megabyte, cache buffer render per proses. Sebaiknya gunakan cache yang cukup besar untuk menyimpan dua kali layar dalam 8 bit. Misalnya, pada layar 1280x800, buffering layar penuh menggunakan sekitar 1 MB sehingga cache harus minimal 2 MB. Cache dapat lebih kecil jika perangkat mendukung buffering stencil 4 bit atau 1 bit.
ro.hwui.texture_cache_flush_rate float 0.6 Menentukan persentase cache tekstur yang akan disimpan setelah penghapusan memori. Pembersihan memori dipicu saat sistem perlu mengambil kembali memori di semua aplikasi. Sebaiknya hapus sekitar 50% cache dalam situasi tersebut.
ro.hwui.text_small_cache_width integer 1024 Menentukan lebar dalam piksel dari cache font default. Batas atas bergantung pada seberapa cepat GPU dapat mengupload tekstur. Sebaiknya gunakan minimal 1024 piksel, tetapi maksimal 2048 piksel. Anda juga harus menggunakan nilai pangkat dua.
ro.hwui.text_small_cache_height integer 256 Menentukan tinggi dalam piksel dari cache font default. Batas atas bergantung pada seberapa cepat GPU dapat mengupload tekstur. Sebaiknya gunakan minimal 256 piksel, tetapi maksimal 1.024 piksel.
ro.hwui.text_large_cache_width integer 2048 Menentukan lebar cache font besar dalam piksel. Cache ini digunakan untuk glyph yang terlalu besar untuk muat dalam cache font default. Batas atas bergantung pada seberapa cepat GPU dapat mengupload tekstur. Sebaiknya gunakan minimal 2048 piksel, tetapi maksimal 4096 piksel. Anda juga harus menggunakan nilai pangkat dua.
ro.hwui.text_large_cache_height integer 512 Menentukan tinggi dalam piksel cache font besar. Cache font besar digunakan untuk glyph yang terlalu besar untuk dimuat dalam cache font default. Batas atas bergantung pada seberapa cepat GPU dapat mengupload tekstur. Sebaiknya gunakan minimal 512 piksel, tetapi maksimal 2048 piksel. Anda juga harus menggunakan nilai pangkat dua.
hwui.text_gamma_correction string lookup Memilih teknik koreksi gamma teks. Ada empat kemungkinan pilihan:
  • lookup3: Koreksi berdasarkan tabel pencarian. Koreksi gamma berbeda untuk teks hitam dan putih (lihat nilai minimum di bawah).
  • lookup: Koreksi berdasarkan satu tabel pencarian.
  • shader3: Koreksi yang diterapkan oleh shader GLSL. Koreksi gamma berbeda untuk teks hitam dan putih (lihat nilai minimum di bawah).
  • shader: Koreksi yang diterapkan oleh shader GLSL.
Koreksi gamma lookup berfungsi paling baik di GPU dengan matematika shader terbatas. Koreksi gamma shader adalah cara terbaik untuk menghemat memori. Sebaiknya gunakan teknik lookup default, yang menawarkan kompromi yang baik dalam hal kualitas, kecepatan, dan penggunaan memori.
hwui.text_gamma float 1.4 Menentukan nilai gamma yang digunakan untuk koreksi gamma teks. Nilai ini dapat disesuaikan berdasarkan tampilan yang digunakan oleh perangkat.
hwui.text_gamma.black_threshold integer 64 Menentukan nilai minimum luminans di bawahnya koreksi gamma hitam diterapkan. Nilai harus ditentukan dalam rentang 0..255.
hwui.text_gamma.white_threshold integer 192 Menentukan nilai minimum luminans yang di atas nilai tersebut koreksi gamma putih diterapkan. Nilai harus ditentukan dalam rentang 0..255.
hwui.use_gpu_pixel_buffers boolean true Digunakan untuk mengaktifkan atau menonaktifkan penggunaan PBO pada hardware OpenGL ES 3.0. PBO digunakan oleh perender untuk melakukan upload tekstur asinkron, terutama untuk cache font. Properti ini harus selalu diaktifkan, tetapi dapat dinonaktifkan selama pengaktifan atau pengembangan jika penggunaan PBO menyebabkan kerusakan atau performa yang buruk. Itulah sebabnya properti ini tidak bersifat hanya baca.