OpenGLRenderer-Konfiguration

In diesem Dokument wird die Leistungsoptimierung zur Optimierung der Hardwareleistung beschrieben.

OpenGLRenderer-Eigenschaften (libhwui)

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

Eigenschaften für alle Android-Versionen

Attribut Eingeben Standardwert Beschreibung
ro.zygote.disable_gl_preload boolean false Aktiviert oder deaktiviert das Vorladen von EGL-/GL-Treibern in Zygote beim Booten. Wenn diese Property 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 Fahrer die Freigabe nicht unterstützt, setzen Sie diese Property auf true.

Properties für Android 8.0 und niedriger

Attribut Eingeben 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 deaktiviert, behält OpenGLRenderer den GL-Scissor-Test aktiviert und ändert das Scissor-Rechteck nach Bedarf. Einige GPUs (z. B. die SGX 540) funktionieren besser, wenn das Scissor-Rechteck häufiger geändert wird, als wenn der Scissor-Test häufig aktiviert oder deaktiviert wird.

ro.hwui.texture_cache_size float 24 Definiert die Größe des prozessbezogenen Textur-Cache in Megabyte. Wir empfehlen, einen Cache zu verwenden, der groß genug ist, um mehrere Bildschirme mit 32-Bit-Texturen aufzunehmen. Auf einem 1280 × 800-Display belegt 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 Cache für die einzelnen Prozessebenen in Megabyte. Wir empfehlen, einen Cache zu verwenden, der groß genug ist, um das Vierfache des Bildschirms in 32 Bit zu speichern. Auf einem 1280 × 800-Display belegt 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 Gradienten-Cache 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 Verläufe zu speichern.
ro.hwui.patch_cache_size integer 128 Definiert die Größe des 9‑Patches-Cache pro Prozess in Kilobyte. Dieser Cache enthält nur Vertex-Daten, sodass er klein gehalten werden kann. Jeder Knoten besteht aus 4 Floats oder 16 Bytes.
ro.hwui.path_cache_size float 4 Definiert die Größe des Pfad-Cache 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 belegt 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 Formencache 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 1.280 × 800 Pixeln belegt 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 Textschatten-Cache 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 belegt 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 Cache 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 1280 × 800-Display belegt 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-Schablonenpuffer unterstützt.
ro.hwui.texture_cache_flush_rate float 0.6 Definiert den Prozentsatz des Textur-Cache, der nach dem Leeren des Arbeitsspeichers beibehalten werden soll. Das System löst das Leeren des Arbeitsspeichers aus, wenn es Arbeitsspeicher für alle Anwendungen freigeben muss. Wir empfehlen, in solchen Situationen etwa 50% des Cache freizugeben.
ro.hwui.text_small_cache_width integer 1024 Definiert die Breite des Standard-Schriftartencaches in Pixeln. Die Obergrenze hängt davon ab, wie schnell die GPU Texturen hochladen kann. Wir empfehlen, mindestens 1.024 Pixel, aber höchstens 2.048 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 Pixeln. Die Obergrenze hängt davon ab, wie schnell die GPU Texturen hochladen kann. Wir empfehlen, mindestens 256 Pixel und höchstens 1.024 Pixel zu verwenden.
ro.hwui.text_large_cache_width integer 2048 Definiert die Breite des großen Schriftartencaches in Pixeln. Dieser Cache wird für Glyphen verwendet, die zu groß sind, um in den Standard-Schriftart-Cache zu passen. Die Obergrenze hängt davon ab, wie schnell die GPU Texturen hochladen kann. Wir empfehlen, mindestens 2.048 Pixel, aber höchstens 4.096 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 Pixeln. Der Cache für große Schriftarten wird für Glyphen verwendet, die zu groß für den Standardschriftartencache sind. Die Obergrenze hängt davon ab, wie schnell die GPU Texturen hochladen kann. Wir empfehlen, mindestens 512 Pixel, aber höchstens 2.048 Pixel zu verwenden. Verwenden Sie außerdem einen Wert, der eine Zweierpotenz ist.
hwui.text_gamma_correction string lookup Wählt die Text-Gammakorrekturtechnik 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 Grenzwerte unten).
  • lookup: Eine Korrektur basierend auf einer einzelnen Nachschlagetabelle.
  • shader3: Eine Korrektur, die von einem GLSL-Shader angewendet wird. Die Gammakorrektur unterscheidet sich für schwarzen und weißen Text (siehe Grenzwerte unten).
  • shader: Eine Korrektur, die von einem GLSL-Shader angewendet wird.
Die Funktion für die Suche nach Gammakorrekturen funktioniert am besten auf GPUs mit begrenzter Shader-Mathematik. Shader-Gammakorrekturen sind am besten geeignet, um Arbeitsspeicher zu sparen. Wir empfehlen die Verwendung der Standardtechnik lookup, die einen guten Kompromiss in Bezug auf Qualität, Geschwindigkeit und Arbeitsspeicherverbrauch bietet.
hwui.text_gamma float 1.4 Definiert den Gammastärke-Wert, der für die Gammastärke-Korrektur 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 Schwarz-Gammakorrektur angewendet wird. Der Wert muss im Bereich 0–255 liegen.
hwui.text_gamma.white_threshold integer 192 Definiert den Helligkeitsschwellenwert, oberhalb dessen die Weiß-Gammakorrektur angewendet wird. Der Wert muss im Bereich 0–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 für asynchrone Textur-Uploads, insbesondere für den Schriftart-Cache. Diese Eigenschaft sollte immer aktiviert bleiben. Sie können sie jedoch während der Inbetriebnahme oder Entwicklung deaktivieren, wenn PBOs zu Beschädigungen oder einer schlechten Leistung führen. Deshalb ist das Attribut nicht schreibgeschützt.