Konfigurasi OpenGLRenderer

Dokumen ini menjelaskan penyesuaian performa untuk mengoptimalkan performa hardware.

Properti OpenGLRenderer (libhwui)

Dokumen ini menjelaskan properti untuk mengontrol pipeline rendering yang diakselerasi 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 Mengaktifkan atau menonaktifkan pemuatan awal driver EGL/GL di Zygote saat waktu booting. Jika properti ini adalah false, Zygote akan memuat driver GL terlebih dahulu dengan memanggil eglGetDisplay(EGL_DEFAULT_DISPLAY). Ini memuat kode library dinamis di Zygote untuk membagikannya ke semua proses lainnya. Jika driver tidak mendukung berbagi, 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

Mengaktifkan atau menonaktifkan pengoptimalan gunting. Nilai yang diterima adalah true dan false. Jika pengoptimalan gunting diaktifkan, OpenGLRenderer akan mencoba meminimalkan guntingan dengan mengaktifkan dan menonaktifkan pengujian gunting GL secara selektif.

Jika dinonaktifkan, OpenGLRenderer akan tetap mengaktifkan pengujian gunting GL dan mengubah rect gunting sesuai kebutuhan. Beberapa GPU (misalnya, SGX 540) memiliki performa yang lebih baik saat mengubah persegi panjang gunting lebih sering daripada mengaktifkan atau menonaktifkan pengujian gunting secara sering.

ro.hwui.texture_cache_size float 24 Menentukan ukuran, dalam megabyte, cache tekstur per proses. Sebaiknya gunakan cache yang cukup besar untuk menampung beberapa layar tekstur 32-bit. Misalnya, pada layar 1280x800, buffer layar penuh menggunakan sekitar 4 MB, jadi cache harus berukuran minimal 20 MB.
ro.hwui.layer_cache_size float 16 Menentukan ukuran cache lapisan per proses, dalam megabyte. Sebaiknya gunakan cache yang cukup besar untuk menampung empat kali layar dalam 32 bit. Misalnya, pada layar 1280x800, buffer layar penuh menggunakan sekitar 4 MB, sehingga cache harus berukuran minimal 16 MB.
ro.hwui.gradient_cache_size float 0.5 Menentukan ukuran, dalam megabyte, dari cache gradien per proses. Satu gradien biasanya menggunakan memori antara 1 KB dan 4 KB. Sebaiknya gunakan cache yang cukup besar untuk menyimpan setidaknya 12 gradien.
ro.hwui.patch_cache_size integer 128 Menentukan ukuran, dalam kilobyte, cache 9-patch per proses. Cache ini hanya menyimpan data verteks, sehingga Anda dapat menjaganya tetap kecil. Setiap verteks terdiri dari 4 float, atau 16 byte.
ro.hwui.path_cache_size float 4 Menentukan ukuran cache jalur per proses, dalam megabyte. Sebaiknya gunakan cache yang cukup besar untuk menyimpan setidaknya satu layar tekstur 32-bit. Misalnya, pada layar 1280x800, buffer layar penuh menggunakan sekitar 4 MB, jadi cache harus berukuran minimal 4 MB.
ro.hwui.shape_cache_size float 1 Menentukan ukuran, dalam megabyte, dari cache bentuk per proses. Nilai ini digunakan oleh beberapa cache, seperti lingkaran dan persegi panjang membulat. Sebaiknya gunakan cache yang cukup besar untuk menampung setidaknya satu layar 8-bit. Misalnya, pada layar 1280x800, buffer layar penuh menggunakan sekitar 1 MB, jadi cache harus berukuran minimal 1 MB.
ro.hwui.drop_shadow_cache_size float 2 Menentukan ukuran, dalam megabyte, cache bayangan drop teks per proses. Sebaiknya gunakan cache yang cukup besar untuk menyimpan dua layar tekstur 8-bit. Misalnya, pada layar 1280x800, buffer layar penuh menggunakan sekitar 1 MB, jadi cache harus berukuran minimal 2 MB.
ro.hwui.r_buffer_cache_size float 2 Menentukan ukuran, dalam megabyte, dari cache buffer render per proses. Sebaiknya gunakan cache yang cukup besar untuk menampung dua kali layar dalam 8 bit. Misalnya, pada layar 1280x800, buffer layar penuh menggunakan sekitar 1 MB, jadi cache harus berukuran minimal 2 MB. Cache dapat lebih kecil jika perangkat mendukung buffer stensil 4-bit atau 1-bit.
ro.hwui.texture_cache_flush_rate float 0.6 Menentukan persentase cache tekstur yang akan dipertahankan setelah penghapusan memori. Sistem memicu penghapusan memori saat perlu merebut kembali memori di semua aplikasi. Sebaiknya kosongkan sekitar 50% cache dalam situasi tersebut.
ro.hwui.text_small_cache_width integer 1024 Menentukan lebar cache font default, dalam piksel. Batas atas bergantung pada seberapa cepat GPU dapat mengupload tekstur. Sebaiknya gunakan ukuran minimal 1024 piksel dan maksimal 2048 piksel. Selain itu, gunakan nilai pangkat dua.
ro.hwui.text_small_cache_height integer 256 Menentukan tinggi cache font default, dalam piksel. Batas atas bergantung pada seberapa cepat GPU dapat mengupload tekstur. Sebaiknya gunakan ukuran minimal 256 piksel dan maksimal 1024 piksel.
ro.hwui.text_large_cache_width integer 2048 Menentukan lebar cache font besar, dalam piksel. Cache ini digunakan untuk glif yang terlalu besar untuk dimuat dalam cache font default. Batas atas bergantung pada seberapa cepat GPU dapat mengupload tekstur. Sebaiknya gunakan minimal 2048 piksel, tetapi maksimal 4096 piksel. Selain itu, gunakan nilai pangkat dua.
ro.hwui.text_large_cache_height integer 512 Menentukan tinggi cache font besar, dalam piksel. Cache font besar juga digunakan untuk glif yang terlalu besar untuk dimuat dalam cache font default. Batas atas bergantung pada seberapa cepat GPU dapat mengupload tekstur. Sebaiknya gunakan ukuran minimal 512 piksel dan maksimal 2048 piksel. Selain itu, gunakan nilai pangkat dua.
hwui.text_gamma_correction string lookup Memilih teknik koreksi gamma teks. Ada empat kemungkinan pilihan:
  • lookup3: Koreksi berdasarkan tabel lookup. Koreksi Gamma berbeda untuk teks hitam dan putih (lihat nilai minimum sebagai berikut).
  • lookup: Koreksi berdasarkan satu tabel lookup.
  • shader3: Koreksi yang diterapkan oleh shader GLSL. Koreksi gamma berbeda untuk teks hitam dan putih (lihat nilai minimum sebagai berikut).
  • shader: Koreksi yang diterapkan oleh shader GLSL.
Fungsi koreksi gamma pencarian paling baik dilakukan di GPU dengan matematika shader terbatas. Koreksi gamma shader paling baik 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. Anda dapat menyesuaikan nilai ini berdasarkan layar perangkat.
hwui.text_gamma.black_threshold integer 64 Menentukan batas luminans di bawahnya koreksi gamma hitam diterapkan. Nilai harus dalam rentang 0-255.
hwui.text_gamma.white_threshold integer 192 Menentukan nilai minimum luminans di atasnya koreksi gamma putih diterapkan. Nilai harus dalam rentang 0-255.
hwui.use_gpu_pixel_buffers boolean true Mengaktifkan atau menonaktifkan penggunaan PBO di hardware OpenGL ES 3.0. Renderer menggunakan PBO untuk melakukan upload tekstur asinkron, terutama untuk cache font. Properti ini harus selalu diaktifkan, tetapi Anda dapat menonaktifkannya selama pengaktifan atau pengembangan jika PBO menyebabkan kerusakan atau performa yang buruk. Itulah sebabnya properti tidak bersifat hanya baca.