OpenGLRenderer-Konfiguration

In diesem Dokument wird die Leistungsoptimierung beschrieben, um die Hardwareleistung zu optimieren.

OpenGLRenderer-Attribute (libhwui)

In diesem Dokument werden Attribute zum Steuern der 2D-Hardwarebeschleunigten Rendering-Pipeline von Android beschrieben. Legen Sie diese Attribute in der Datei device.mk als PRODUCT_PROPERTY_OVERRIDES fest.

Attribute für alle Android-Versionen

Attribut Typ Standardwert Beschreibung
ro.zygote.disable_gl_preload boolean false Aktiviert oder deaktiviert das Vorladen von EGL/GL-Treibern in Zygote beim Start. Wenn dieses Attribut false ist, lädt Zygote die GL-Treiber vor, indem eglGetDisplay(EGL_DEFAULT_DISPLAY) aufgerufen wird. Dadurch wird der Code der dynamischen Bibliothek in Zygote geladen, um ihn für alle anderen Prozesse freizugeben. Wenn ein Treiber die Freigabe nicht unterstützt, legen Sie dieses Attribut auf true fest.

Attribute für Android 8.0 und niedriger

Attribut Typ Standardwert Beschreibung
ro.hwui.disable_scissor_opt boolean false

Aktiviert oder deaktiviert die Scherenoptimierung. Zulässige Werte sind true und false. Wenn die Scherenoptimierung aktiviert ist, versucht OpenGLRenderer , das Scheren zu minimieren, indem der GL-Scherentest selektiv aktiviert und deaktiviert wird.

Wenn die Option deaktiviert ist, bleibt der GL-Scherentest aktiviert und das Scherengebiet wird nach Bedarf geändert. Einige GPUs (z. B. die SGX 540) funktionieren besser, wenn das Scherengebiet häufiger geändert wird, als wenn der Scherentest häufig aktiviert oder deaktiviert wird.

ro.hwui.texture_cache_size float 24 Definiert die Größe des Texturcaches pro Prozess in Megabyte. Wir empfehlen, einen Cache zu verwenden, der groß genug ist, um mehrere Bildschirme mit 32-Bit Texturen zu speichern. Auf einem Display mit 1280 × 800 Pixeln verwendet ein Vollbildpuffer beispielsweise etwa 4 MB. Der Cache sollte also mindestens 20 MB groß sein.
ro.hwui.layer_cache_size float 16 Definiert die Größe des Ebenencaches pro Prozess in Megabyte. Wir empfehlen, einen Cache zu verwenden, der groß genug ist, um das Vierfache des Bildschirms in 32 Bit zu speichern. Auf einem Display mit 1280 × 800 Pixeln verwendet ein Vollbildpuffer beispielsweise etwa 4 MB. Der Cache sollte also mindestens 16 MB groß sein.
ro.hwui.gradient_cache_size float 0.5 Definiert die Größe des Farbverlaufscaches pro Prozess in Megabyte. Ein einzelner Farbverlauf belegt in der Regel zwischen 1 KB und 4 KB Arbeitsspeicher. Wir empfehlen, einen Cache zu verwenden, der groß genug ist, um mindestens 12 Farbverläufe zu speichern.
ro.hwui.patch_cache_size integer 128 Definiert die Größe des 9-Patch-Caches pro Prozess in Kilobyte. Dieser Cache enthält nur Vertex-Daten. Sie können ihn also klein halten. Jeder Vertex besteht aus 4 Gleitkommazahlen oder 16 Byte.
ro.hwui.path_cache_size float 4 Definiert die Größe des Pfadcaches pro Prozess in Megabyte. Wir empfehlen, einen Cache zu verwenden, der groß genug ist, um mindestens einen Bildschirm mit 32-Bit Texturen zu speichern. Auf einem Display mit 1280 × 800 Pixeln verwendet ein Vollbildpuffer beispielsweise etwa 4 MB. Der Cache sollte also mindestens 4 MB groß sein.
ro.hwui.shape_cache_size float 1 Definiert die Größe des Formencaches pro Prozess in Megabyte. Dieser Wert wird von mehreren Caches verwendet, z. B. für Kreise und abgerundete Rechtecke. Wir empfehlen, einen Cache zu verwenden, der groß genug ist, um mindestens einen 8-Bit-Bildschirm zu speichern. Auf einem Display mit 1280 × 800 Pixeln verwendet ein Vollbildpuffer beispielsweise etwa 1 MB. Der Cache sollte also mindestens 1 MB groß sein.
ro.hwui.drop_shadow_cache_size float 2 Definiert die Größe des Caches für Textschatten pro Prozess in Megabyte. Wir empfehlen, einen Cache zu verwenden, der groß genug ist, um zwei Bildschirme mit 8-Bit Texturen zu speichern. Auf einem Display mit 1280 × 800 Pixeln verwendet ein Vollbildpuffer beispielsweise etwa 1 MB. Der Cache sollte also mindestens 2 MB groß sein.
ro.hwui.r_buffer_cache_size float 2 Definiert die Größe des Caches für Renderpuffer pro Prozess in Megabyte. Wir empfehlen, einen Cache zu verwenden, der groß genug ist, um das Doppelte des Bildschirms in 8 Bit zu speichern. Auf einem Display mit 1280 × 800 Pixeln verwendet ein Vollbildpuffer beispielsweise etwa 1 MB. Der Cache sollte also mindestens 2 MB groß sein. Der Cache kann kleiner sein, wenn das Gerät 4-Bit- oder 1-Bit-Stencil-Puffer unterstützt.
ro.hwui.texture_cache_flush_rate float 0.6 Definiert den Prozentsatz des Texturcaches, der nach dem Leeren des Arbeitsspeichers beibehalten werden soll. Das System löst das Leeren des Arbeitsspeichers aus, wenn Arbeitsspeicher für alle Anwendungen freigegeben werden muss. Wir empfehlen, in solchen Situationen etwa 50% des Caches freizugeben.
ro.hwui.text_small_cache_width integer 1024 Definiert die Breite des Standard-Schriftartencaches in Pixel. Die Obergrenze hängt davon ab, wie schnell die GPU Texturen hochladen kann. Wir empfehlen, mindestens 1024 Pixel, aber höchstens 2048 Pixel zu verwenden. Verwenden Sie außerdem einen Wert, der eine Zweierpotenz ist.
ro.hwui.text_small_cache_height integer 256 Definiert die Höhe des Standard-Schriftartencaches in Pixel. Die Obergrenze hängt davon ab, wie schnell die GPU Texturen hochladen kann. Wir empfehlen, mindestens 256 Pixel, aber höchstens 1024 Pixel zu verwenden.
ro.hwui.text_large_cache_width integer 2048 Definiert die Breite des großen Schriftartencaches in Pixel. Dieser Cache wird auch für Glyphen verwendet, die zu groß für den Standard-Schriftartencache sind. Die Obergrenze hängt davon ab, wie schnell die GPU Texturen hochladen kann. Wir empfehlen, mindestens 2048 Pixel, aber höchstens 4096 Pixel zu verwenden. Verwenden Sie außerdem einen Wert, der eine Zweierpotenz ist.
ro.hwui.text_large_cache_height integer 512 Definiert die Höhe des großen Schriftartencaches in Pixel. Der große Schriftarten Cache wird für Glyphen verwendet, die zu groß für den Standard-Schriftartencache sind. Die Obergrenze hängt davon ab, wie schnell die GPU Texturen hochladen kann. Wir empfehlen mindestens 512 Pixel, aber höchstens 2048 Pixel zu verwenden. Verwenden Sie außerdem einen Wert, der eine Zweierpotenz ist.
hwui.text_gamma_correction string lookup Wählt die Technik zur Gammakorrektur von Text aus. Es gibt vier mögliche Optionen:
  • lookup3: Eine Korrektur basierend auf Nachschlagetabellen. Die Gammakorrektur unterscheidet sich für schwarzen und weißen Text (siehe Schwellenwerte unten).
  • lookup: Eine Korrektur basierend auf einer einzelnen Suchtabelle.
  • shader3: Eine Korrektur, die von einem GLSL-Shader angewendet wird. Die Gammakorrektur unterscheidet sich für schwarzen und weißen Text (siehe Schwellenwerte unten).
  • shader: Eine Korrektur, die von einem GLSL-Shader angewendet wird.
Gammakorrekturen mit Nachschlagetabellen funktionieren am besten auf GPUs mit begrenzter Shader-Mathematik. Shader-Gammakorrekturen eignen sich am besten, um Arbeitsspeicher zu sparen. Wir empfehlen, die Standardtechnik lookup zu verwenden, die einen guten Kompromiss in Bezug auf Qualität, Geschwindigkeit und Arbeitsspeichernutzung bietet.
hwui.text_gamma float 1.4 Definiert den Gammawert, der für die Gammakorrektur von Text verwendet wird. Sie können diesen Wert an das Display des Geräts anpassen.
hwui.text_gamma.black_threshold integer 64 Definiert den Luminanzschwellenwert, unter dem die Gammakorrektur für Schwarz angewendet wird angewendet. Der Wert muss im Bereich von 0 bis 255 liegen.
hwui.text_gamma.white_threshold integer 192 Definiert den Luminanzschwellenwert, über dem die Gammakorrektur für Weiß angewendet wird. Der Wert muss im Bereich von 0 bis 255 liegen.
hwui.use_gpu_pixel_buffers boolean true Aktiviert oder deaktiviert die Verwendung von PBOs auf OpenGL ES 3.0-Hardware. Der Renderer verwendet PBOs, um asynchrone Textur-Uploads durchzuführen, insbesondere für den Schriftartencache. Dieses Attribut sollte immer aktiviert bleiben. Sie können es jedoch während der Inbetriebnahme oder Entwicklung deaktivieren, wenn PBOs zu Beschädigungen oder einer schlechten Leistung führen. Aus diesem Grund ist das Attribut nicht schreibgeschützt.