OpenGLRenderer yapılandırması

Bu belgede, donanım performansını optimize etmek için performans ayarlama işlemi açıklanmaktadır.

OpenGLRenderer (libhwui) özellikleri

Bu belgede, Android'in 2D donanım hızlandırmalı oluşturma işlem hattını kontrol etmeye yönelik özellikler açıklanmaktadır. Bu özellikleri device.mk içinde PRODUCT_PROPERTY_OVERRIDES olarak ayarlayın.

Tüm Android sürümleri için özellikler

Özellik Tür Varsayılan Değer Açıklama
ro.zygote.disable_gl_preload boolean false Başlangıçta Zygote'ta EGL/GL sürücülerinin önceden yüklenmesini etkinleştirir veya devre dışı bırakır. Bu özellik false olduğunda Zygote, eglGetDisplay(EGL_DEFAULT_DISPLAY) çağırarak GL sürücülerini önceden yükler. Bu işlem, dinamik kitaplık kodunu Zygote'a yükleyerek diğer tüm işlemlerle paylaşır. Sürücü paylaşımı desteklemiyorsa bu özelliği true olarak ayarlayın.

Android 8.0 ve önceki sürümler için özellikler

Özellik Tür Varsayılan Değer Açıklama
ro.hwui.disable_scissor_opt boolean false

Makas optimizasyonunu etkinleştirir veya devre dışı bırakır. Kabul edilen değerler true ve false'dir. Makas optimizasyonu etkinleştirildiğinde OpenGLRenderer, GL makas testini seçmeli olarak etkinleştirip devre dışı bırakarak makaslamayı en aza indirmeye çalışır.

Devre dışı bırakıldığında OpenGLRenderer, GL makas testini etkin tutar ve makas dikdörtgenini gerektiği gibi değiştirir. Bazı GPU'lar (ör. SGX 540), makas dikdörtgeni sık sık değiştirdiğinizde makas testini sık sık etkinleştirmek veya devre dışı bırakmaktan daha iyi performans gösterir.

ro.hwui.texture_cache_size float 24 İşlem başına doku önbelleğinin boyutunu (megabayt cinsinden) tanımlar. 32 bit dokulara sahip birkaç ekranı tutacak kadar büyük bir önbellek kullanmanızı öneririz. Örneğin, 1280x800 çözünürlüklü bir ekranda tam ekran arabellek yaklaşık 4 MB kullanır. Bu nedenle, önbellek en az 20 MB olmalıdır.
ro.hwui.layer_cache_size float 16 İşlem başına katman önbelleğinin boyutunu (megabayt cinsinden) tanımlar. 32 bit'te ekranın dört katını tutacak kadar büyük bir önbellek kullanmanızı öneririz. Örneğin, 1280x800 çözünürlüklü bir ekranda tam ekran arabellek yaklaşık 4 MB kullanır. Bu nedenle, önbellek en az 16 MB olmalıdır.
ro.hwui.gradient_cache_size float 0.5 İşlem başına gradyan önbelleğinin boyutunu (megabayt cinsinden) tanımlar. Tek bir gradyan genellikle 1 KB ile 4 KB arasında bellek alanı kaplar. En az 12 gradyanı tutacak kadar büyük bir önbellek kullanmanızı öneririz.
ro.hwui.patch_cache_size integer 128 İşlem başına 9 yamalı önbelleğin boyutunu kilobayt cinsinden tanımlar. Bu önbellekte yalnızca köşe verileri bulunur. Bu nedenle, önbelleği küçük tutabilirsiniz. Her köşe 4 kayan nokta veya 16 bayttan oluşur.
ro.hwui.path_cache_size float 4 İşlem başına yollar önbelleğinin boyutunu megabayt cinsinden tanımlar. En az bir ekran 32 bit doku içerecek kadar büyük bir önbellek kullanmanızı öneririz. Örneğin, 1280x800 çözünürlüklü bir ekranda tam ekran arabellek yaklaşık 4 MB kullanır. Bu nedenle, önbellek en az 4 MB olmalıdır.
ro.hwui.shape_cache_size float 1 İşlem başına şekil önbelleğinin boyutunu (megabayt cinsinden) tanımlar. Bu değer, daireler ve yuvarlak dikdörtgenler gibi çeşitli önbellekler tarafından kullanılır. En az bir 8 bitlik ekranı tutacak kadar büyük bir önbellek kullanmanızı öneririz. Örneğin, 1280x800 çözünürlüklü bir ekranda tam ekran arabellek yaklaşık 1 MB kullanır. Bu nedenle, önbellek en az 1 MB olmalıdır.
ro.hwui.drop_shadow_cache_size float 2 İşlem başına metin gölge önbelleğinin boyutunu megabayt cinsinden tanımlar. 8 bitlik iki ekran dokuyu barındıracak kadar büyük bir önbellek kullanmanızı öneririz. Örneğin, 1280x800 çözünürlüklü bir ekranda tam ekran arabellek yaklaşık 1 MB kullanır. Bu nedenle, önbellek en az 2 MB olmalıdır.
ro.hwui.r_buffer_cache_size float 2 İşlem başına oluşturma arabellekleri önbelleğinin boyutunu (megabayt cinsinden) tanımlar. 8 bitlik bir ekranın iki katını tutacak kadar büyük bir önbellek kullanmanızı öneririz. Örneğin, 1280x800 çözünürlüklü bir ekranda tam ekran arabellek yaklaşık 1 MB yer kaplar. Bu nedenle, önbellek en az 2 MB olmalıdır. Cihaz 4 bit veya 1 bit şablon arabelleklerini destekliyorsa önbellek daha küçük olabilir.
ro.hwui.texture_cache_flush_rate float 0.6 Bellek temizleme işleminden sonra tutulacak doku önbelleğinin yüzdesini tanımlar. Sistem, tüm uygulamalarda belleği geri kazanması gerektiğinde bellek temizleme işlemlerini tetikler. Bu gibi durumlarda önbelleğin yaklaşık% 50'sinin serbest bırakılmasını öneririz.
ro.hwui.text_small_cache_width integer 1024 Varsayılan yazı tipi önbelleğinin genişliğini piksel cinsinden tanımlar. Üst sınır, GPU'nun dokuları ne kadar hızlı yükleyebileceğine bağlıdır. En az 1.024 piksel, en fazla 2.048 piksel kullanmanızı öneririz. Ayrıca, 2'nin kuvveti olan bir değer kullanın.
ro.hwui.text_small_cache_height integer 256 Varsayılan yazı tipi önbelleğinin yüksekliğini piksel cinsinden tanımlar. Üst sınır, GPU'nun dokuları ne kadar hızlı yükleyebileceğine bağlıdır. En az 256 piksel, en fazla 1.024 piksel kullanmanızı öneririz.
ro.hwui.text_large_cache_width integer 2048 Büyük yazı tipi önbelleğinin genişliğini piksel cinsinden tanımlar. Bu önbellek, varsayılan yazı tipi önbelleğine sığamayacak kadar büyük glifler için de kullanılır. Üst sınır, GPU'nun dokuları ne kadar hızlı yükleyebileceğine bağlıdır. En az 2048 piksel, en fazla 4096 piksel kullanmanızı öneririz. Ayrıca, 2'nin kuvveti olan bir değer kullanın.
ro.hwui.text_large_cache_height integer 512 Büyük yazı tipi önbelleğinin yüksekliğini piksel cinsinden tanımlar. Büyük yazı tipi önbelleği, varsayılan yazı tipi önbelleğine sığamayacak kadar büyük glifler için kullanılır. Üst sınır, GPU'nun dokuları ne kadar hızlı yükleyebileceğine bağlıdır. En az 512 piksel, en fazla 2.048 piksel kullanmanızı öneririz. Ayrıca, ikinin kuvveti olan bir değer kullanın.
hwui.text_gamma_correction string lookup Metin gama düzeltme tekniğini seçer. Dört olası seçenek vardır:
  • lookup3: Arama tablolarına dayalı düzeltme. Siyah ve beyaz metin için gama düzeltme farklıdır (eşikleri aşağıda görebilirsiniz).
  • lookup: Tek bir arama tablosuna dayalı düzeltme.
  • shader3: GLSL gölgelendiricisi tarafından uygulanan düzeltme. Siyah ve beyaz metin için gama düzeltme farklıdır (eşikleri aşağıda görebilirsiniz).
  • shader: GLSL gölgelendiricisi tarafından uygulanan düzeltme.
Gama düzeltmeleri işlevi, sınırlı gölgelendirici matematiğine sahip GPU'larda en iyi şekilde çalışır. Bellek tasarrufu için en iyi yöntem, gölgelendirici gama düzeltmeleridir. Kalite, hız ve bellek kullanımı açısından iyi bir denge sunan varsayılan lookup tekniğini kullanmanızı öneririz.
hwui.text_gamma float 1.4 Metin gama düzeltmesi için kullanılan gama değerini tanımlar. Bu değeri cihazın ekranına göre ayarlayabilirsiniz.
hwui.text_gamma.black_threshold integer 64 Siyah gama düzeltmesinin uygulandığı parlaklık eşiğini tanımlar. Değer 0-255 aralığında olmalıdır.
hwui.text_gamma.white_threshold integer 192 Beyaz gama düzeltmesinin uygulanacağı parlaklık eşiğini tanımlar. Değer 0-255 aralığında olmalıdır.
hwui.use_gpu_pixel_buffers boolean true OpenGL ES 3.0 donanımında PBO'ların kullanılmasını etkinleştirir veya devre dışı bırakır. Oluşturucu, özellikle yazı tipi önbelleği için doku yüklemelerini eşzamansız olarak gerçekleştirmek üzere PBO'ları kullanır. Bu özellik her zaman etkin kalmalıdır ancak PBO'lar bozulmalara veya düşük performansa neden olursa başlatma ya da geliştirme sırasında devre dışı bırakabilirsiniz. Bu nedenle mülk salt okunur değildir.