OpenGLRenderer-Konfiguration

In diesem Dokument wird die Leistungsoptimierung beschrieben, mit der Sie Ihre Hardware optimal nutzen können.

OpenGLRenderer (libhwui)-Eigenschaften

In diesem Dokument werden alle Eigenschaften aufgeführt, die Sie zur Steuerung der hardwarebeschleunigten 2D-Rendering-Pipeline von Android verwenden können. Legen Sie diese Eigenschaften in device.mk als PRODUCT_PROPERTY_OVERRIDES fest.

Eigenschaften für alle Android-Versionen

Eigentum Typ Standardwert Beschreibung
ro.zygote.disable_gl_preload boolean false Wird verwendet, um das Vorladen von EGL/GL-Treibern in Zygote beim Booten zu aktivieren/deaktivieren. Wenn diese Eigenschaft auf „false“ gesetzt ist, lädt Zygote die GL-Treiber vorab, indem es eglGetDisplay(EGL_DEFAULT_DISPLAY) aufruft. Das Ziel besteht darin, den Code der dynamischen Bibliotheken in Zygote zu laden, um ihn mit allen anderen Prozessen zu teilen. Wenn ein Treiber die gemeinsame Nutzung nicht unterstützt, legen Sie diese Eigenschaft auf „true“ fest.

Eigenschaften für Android 8.0 und niedriger

Eigentum Typ Standardwert Beschreibung
ro.hwui.disable_scissor_opt boolean false

Wird verwendet, um die Scissor-Optimierung zu aktivieren oder zu deaktivieren. Die akzeptierten Werte sind wahr und falsch. Wenn die Scherenoptimierung aktiviert ist, versucht OpenGLRenderer, die Verwendung von Scheren zu minimieren, indem der GL-Scherentest selektiv aktiviert und deaktiviert wird.

Wenn die Optimierung deaktiviert ist, behält OpenGLRenderer den GL-Scherentest aktiviert und ändert das Scherenrecht nach Bedarf. Einige GPUs (z. B. die SGX 540) erzielen eine bessere Leistung, wenn sie den Scherentest häufiger ändern, als wenn sie den Scherentest häufig aktivieren oder deaktivieren.

ro.hwui.texture_cache_size float 24 Definiert die Größe des Texturcaches pro Prozess in Megabyte. Wir empfehlen die Verwendung eines Caches, der groß genug ist, um mehrere Bildschirme mit 32-Bit-Texturen aufzunehmen (bei einem 1280x800-Display verbraucht ein Vollbildpuffer beispielsweise etwa 4 MB, daher sollte der Cache mindestens 20 MB groß sein).
ro.hwui.layer_cache_size float 16 Definiert die Größe des Caches pro Prozessschicht in Megabyte. Wir empfehlen die Verwendung eines Caches, der groß genug ist, um das Vierfache des Bildschirms in 32 Bit aufzunehmen. Bei einem 1280x800-Display benötigt ein Vollbildpuffer beispielsweise etwa 4 MB, daher sollte der Cache mindestens 16 MB groß sein.
ro.hwui.gradient_cache_size 0.5 float Definiert die Größe des Gradienten-Cache pro Prozess in Megabyte. Ein einzelner Farbverlauf belegt im Allgemeinen zwischen 1 und 4 KB Speicher. Es wird empfohlen, einen Cache zu verwenden, der groß genug ist, um mindestens zwölf Farbverläufe aufzunehmen.
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 und kann daher klein gehalten werden. Jeder Scheitelpunkt besteht aus 4 Floats oder 16 Bytes.
ro.hwui.path_cache_size float 4 Definiert die Größe des Cache pro Prozesspfad in Megabyte. Wir empfehlen die Verwendung eines Caches, der groß genug ist, um mindestens einen Bildschirm mit 32-Bit-Texturen aufzunehmen. Bei einem 1280x800-Display benötigt ein Vollbildpuffer beispielsweise etwa 4 MB, daher sollte der Cache mindestens 4 MB groß sein.
ro.hwui.shape_cache_size float 1 Definiert die Größe der Shape-Caches pro Prozess in Megabyte. Dieser Wert wird von mehreren Caches wie Kreisen und abgerundeten Rechtecken verwendet. Wir empfehlen die Verwendung eines Caches, der groß genug ist, um mindestens einen 8-Bit-Bildschirm aufzunehmen. Bei einem 1280x800-Display verbraucht ein Vollbildpuffer beispielsweise etwa 1 MB, daher sollte der Cache mindestens 1 MB groß sein.
ro.hwui.drop_shadow_cache_size float 2 Definiert die Größe des Text-Schatten-Cache pro Prozess in Megabyte. Wir empfehlen die Verwendung eines Caches, der groß genug ist, um zwei Bildschirme mit 8-Bit-Texturen aufzunehmen. Bei einem 1280x800-Display benötigt ein Vollbildpuffer beispielsweise etwa 1 MB, daher sollte der Cache mindestens 2 MB groß sein.
ro.hwui.r_buffer_cache_size float 2 Definiert die Größe des Renderpuffer-Cache pro Prozess in Megabyte. Es wird empfohlen, einen Cache zu verwenden, der groß genug ist, um das Doppelte des Bildschirms in 8 Bit aufzunehmen. Auf einem 1280x800-Display verbraucht ein Vollbildpuffer beispielsweise etwa 1 MB, daher sollte der Cache 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 Texturcaches, der nach einer Speicherleerung beibehalten werden soll. Speicherleerung wird ausgelöst, wenn das System Speicher für alle Anwendungen freigeben muss. Wir empfehlen, in solchen Situationen etwa 50 % des Caches freizugeben.
ro.hwui.text_small_cache_width integer 1024 Definiert die Breite des Standard-Schriftartcaches in Pixel. Die Obergrenze hängt davon ab, wie schnell die GPU Texturen hochladen kann. Wir empfehlen die Verwendung von mindestens 1024 Pixeln, höchstens jedoch 2048 Pixeln. Sie sollten auch einen Zweierpotenzwert verwenden.
ro.hwui.text_small_cache_height integer 256 Definiert die Höhe des Standard-Schriftartcaches in Pixel. Die Obergrenze hängt davon ab, wie schnell die GPU Texturen hochladen kann. Wir empfehlen die Verwendung von mindestens 256 Pixeln, höchstens jedoch 1024 Pixeln.
ro.hwui.text_large_cache_width integer 2048 Definiert die Breite des Caches für große Schriftarten in Pixeln. Dieser Cache wird für Glyphen verwendet, die zu groß sind, um in den Standardschriftart-Cache zu passen. Die Obergrenze hängt davon ab, wie schnell die GPU Texturen hochladen kann. Wir empfehlen die Verwendung von mindestens 2048 Pixeln, höchstens jedoch 4096 Pixeln. Sie sollten auch einen Zweierpotenzwert verwenden.
ro.hwui.text_large_cache_height integer 512 Definiert die Höhe des großen Schriftartcaches in Pixel. Der große Schriftarten-Cache wird für Glyphen verwendet, die zu groß sind, um in den Standardschriftart-Cache zu passen. Die Obergrenze hängt davon ab, wie schnell die GPU Texturen hochladen kann. Wir empfehlen die Verwendung von mindestens 512 Pixeln, höchstens jedoch 2048 Pixeln. Sie sollten auch einen Zweierpotenzwert verwenden.
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 ist für schwarzen und weißen Text unterschiedlich (siehe Schwellenwerte unten).
  • lookup : Eine Korrektur basierend auf einer einzelnen Nachschlagetabelle.
  • shader3 : Eine von einem GLSL-Shader angewendete Korrektur. Die Gammakorrektur ist für schwarzen und weißen Text unterschiedlich (siehe Schwellenwerte unten).
  • shader : Eine von einem GLSL-Shader angewendete Korrektur.
Lookup-Gammakorrekturen funktionieren am besten auf GPUs mit begrenzter Shader-Berechnung. Shader-Gamma-Korrekturen eignen sich am besten, um Speicherplatz zu sparen. Wir empfehlen die Verwendung der Standard- lookup , die einen guten Kompromiss hinsichtlich Qualität, Geschwindigkeit und Speichernutzung bietet.
hwui.text_gamma float 1.4 Definiert den Gammawert, der für die Textgammakorrektur verwendet wird. Dieser Wert kann basierend auf der vom Gerät verwendeten Anzeige angepasst werden.
hwui.text_gamma.black_threshold integer 64 Definiert den Luminanzschwellenwert, unterhalb dessen die Schwarz-Gammakorrektur angewendet wird. Der Wert muss im Bereich 0..255 definiert werden.
hwui.text_gamma.white_threshold integer 192 Definiert den Luminanzschwellenwert, ab dem die Weiß-Gammakorrektur angewendet wird. Der Wert muss im Bereich 0..255 definiert werden.
hwui.use_gpu_pixel_buffers boolean true Wird verwendet, um die Verwendung von PBOs auf OpenGL ES 3.0-Hardware zu aktivieren oder zu deaktivieren. PBOs werden vom Renderer verwendet, um asynchrone Textur-Uploads durchzuführen, insbesondere für den Schriftarten-Cache. Diese Eigenschaft sollte immer aktiviert bleiben, kann jedoch während des Starts oder der Entwicklung deaktiviert werden, wenn die Verwendung von PBOs zu Beschädigungen oder schlechter Leistung führt. Aus diesem Grund ist die Eigenschaft nicht schreibgeschützt.