Konfiguracja OpenGLRenderera

W tym dokumencie opisano dostrajanie wydajności, które można wykonać, aby w pełni wykorzystać możliwości swojego sprzętu.

Właściwości OpenGLRenderera (libhwui).

W tym dokumencie wymieniono wszystkie właściwości, których można użyć do kontrolowania potoku renderowania 2D ze sprzętową akceleracją w systemie Android. Ustaw te właściwości w device.mk jako PRODUCT_PROPERTY_OVERRIDES .

Właściwości dla wszystkich wersji Androida

Nieruchomość Typ Domyślna wartość Opis
ro.zygote.disable_gl_preload boolean false Służy do włączania/wyłączania wstępnego ładowania sterowników EGL/GL w Zygote podczas uruchamiania. Gdy ta właściwość jest ustawiona na false, Zygote wstępnie załaduje sterowniki GL, wywołując eglGetDisplay(EGL_DEFAULT_DISPLAY). Celem jest załadowanie kodu bibliotek dynamicznych do Zygote i udostępnienie go wszystkim innym procesom. Jeśli sterownik nie obsługuje udostępniania, ustaw tę właściwość na true.

Właściwości dla Androida 8.0 i starszych

Nieruchomość Typ Domyślna wartość Opis
ro.hwui.disable_scissor_opt boolean false

Służy do włączania lub wyłączania optymalizacji nożyczek. Akceptowane wartości to prawda i fałsz. Gdy włączona jest optymalizacja nożyczek, OpenGLRenderer próbuje zminimalizować użycie nożyczek poprzez selektywne włączanie i wyłączanie testu nożyczek GL.

Gdy optymalizacja jest wyłączona, OpenGLRenderer utrzymuje włączony test nożyczek GL i zmienia prostokąt nożyczek w razie potrzeby. Niektóre procesory graficzne (na przykład SGX 540) działają lepiej przy częstszej zmianie prostownika nożyczek niż częste włączanie lub wyłączanie testu nożyczek.

ro.hwui.texture_cache_size float 24 Określa rozmiar w megabajtach pamięci podręcznej tekstur na proces. Zalecamy użycie pamięci podręcznej wystarczająco dużej, aby pomieścić kilka ekranów z 32-bitowymi teksturami (na przykład na wyświetlaczu 1280x800 bufor pełnego ekranu zajmuje około 4 MB, więc pamięć podręczna powinna wynosić co najmniej 20 MB).
ro.hwui.layer_cache_size float 16 Określa rozmiar w megabajtach pamięci podręcznej poszczególnych warstw procesu. Zalecamy użycie pamięci podręcznej wystarczająco dużej, aby pomieścić 4-krotność ekranu w 32 bitach. Na przykład na wyświetlaczu 1280x800 bufor pełnoekranowy zajmuje około 4 MB, więc pamięć podręczna powinna mieć co najmniej 16 MB.
ro.hwui.gradient_cache_size 0.5 float Określa rozmiar (w megabajtach) pamięci podręcznej gradientów na proces. Pojedynczy gradient zajmuje zazwyczaj od 1 do 4 KB pamięci. Zaleca się użycie pamięci podręcznej wystarczająco dużej, aby pomieścić co najmniej dwanaście gradientów.
ro.hwui.patch_cache_size integer 128 Określa rozmiar w kilobajtach pamięci podręcznej składającej się z 9 poprawek na proces. Ta pamięć podręczna przechowuje tylko dane wierzchołków i dlatego może być mała. Każdy wierzchołek składa się z 4 liczb zmiennoprzecinkowych, czyli 16 bajtów.
ro.hwui.path_cache_size float 4 Określa rozmiar w megabajtach pamięci podręcznej ścieżek procesów. Zalecamy użycie pamięci podręcznej wystarczająco dużej, aby pomieścić co najmniej jeden ekran z 32-bitowymi teksturami. Na przykład na wyświetlaczu 1280x800 bufor pełnoekranowy zajmuje około 4 MB, więc pamięć podręczna powinna mieć co najmniej 4 MB.
ro.hwui.shape_cache_size float 1 Określa rozmiar w megabajtach pamięci podręcznej kształtów na proces. Ta wartość jest używana przez kilka pamięci podręcznych, takich jak koła i zaokrąglone prostokąty. Zalecamy użycie pamięci podręcznej wystarczająco dużej, aby pomieścić co najmniej jeden 8-bitowy ekran. Na przykład na wyświetlaczu 1280x800 bufor pełnoekranowy zajmuje około 1 MB, więc pamięć podręczna powinna mieć co najmniej 1 MB.
ro.hwui.drop_shadow_cache_size float 2 Określa rozmiar (w megabajtach) pamięci podręcznej cieni tekstu na proces. Zalecamy użycie pamięci podręcznej wystarczająco dużej, aby pomieścić dwa ekrany z 8-bitowymi teksturami. Na przykład na wyświetlaczu 1280x800 bufor pełnoekranowy zajmuje około 1 MB, więc pamięć podręczna powinna mieć co najmniej 2 MB.
ro.hwui.r_buffer_cache_size float 2 Określa rozmiar w megabajtach pamięci podręcznej buforów renderowania na proces. Zaleca się użycie pamięci podręcznej wystarczająco dużej, aby pomieścić dwukrotnie większy ekran w 8 bitach. Na przykład na wyświetlaczu 1280x800 bufor pełnoekranowy zajmuje około 1 MB, więc pamięć podręczna powinna mieć co najmniej 2 MB. Pamięć podręczna może być mniejsza, jeśli urządzenie obsługuje 4-bitowe lub 1-bitowe bufory szablonowe.
ro.hwui.texture_cache_flush_rate float 0.6 Określa procent pamięci podręcznej tekstur, który ma zostać zachowany po opróżnieniu pamięci. Opróżnianie pamięci jest wyzwalane, gdy system musi odzyskać pamięć dla wszystkich aplikacji. W takich sytuacjach zalecamy zwolnienie około 50% pamięci podręcznej.
ro.hwui.text_small_cache_width integer 1024 Określa szerokość w pikselach domyślnej pamięci podręcznej czcionek. Górna granica zależy od tego, jak szybko procesor graficzny może przesyłać tekstury. Zalecamy użycie co najmniej 1024 pikseli, ale maksymalnie 2048 pikseli. Powinieneś także użyć potęgi dwójki.
ro.hwui.text_small_cache_height integer 256 Określa wysokość w pikselach domyślnej pamięci podręcznej czcionek. Górna granica zależy od tego, jak szybko procesor graficzny może przesyłać tekstury. Zalecamy użycie co najmniej 256 pikseli, ale maksymalnie 1024 pikseli.
ro.hwui.text_large_cache_width integer 2048 Określa szerokość w pikselach pamięci podręcznej dużych czcionek. Ta pamięć podręczna jest używana w przypadku glifów, które są zbyt duże, aby zmieściły się w domyślnej pamięci podręcznej czcionek. Górna granica zależy od tego, jak szybko procesor graficzny może przesyłać tekstury. Zalecamy użycie co najmniej 2048 pikseli, ale maksymalnie 4096 pikseli. Powinieneś także użyć potęgi dwójki.
ro.hwui.text_large_cache_height integer 512 Określa wysokość w pikselach pamięci podręcznej dużych czcionek. Pamięć podręczna dużych czcionek jest używana w przypadku glifów, które są zbyt duże, aby zmieściły się w domyślnej pamięci podręcznej czcionek. Górna granica zależy od tego, jak szybko procesor graficzny może przesyłać tekstury. Zalecamy użycie co najmniej 512 pikseli, ale maksymalnie 2048 pikseli. Powinieneś także użyć potęgi dwójki.
hwui.text_gamma_correction string lookup Wybiera technikę korekcji gamma tekstu. Istnieją cztery możliwe opcje:
  • lookup3 : Poprawka oparta na tabelach przeglądowych. Korekcja gamma jest inna w przypadku tekstu czarno-białego (patrz progi poniżej).
  • lookup : poprawka oparta na pojedynczej tabeli przeglądowej.
  • shader3 : Poprawka zastosowana przez moduł cieniujący GLSL. Korekcja gamma jest inna w przypadku tekstu czarno-białego (patrz progi poniżej).
  • shader : poprawka zastosowana przez moduł cieniujący GLSL.
Korekty gamma wyszukiwania działają najlepiej na procesorach graficznych z ograniczoną matematyką modułu cieniującego. Korekty gamma modułu cieniującego najlepiej oszczędzają pamięć. Zalecamy użycie domyślnej techniki lookup , która zapewnia dobry kompromis pod względem jakości, szybkości i wykorzystania pamięci.
hwui.text_gamma float 1.4 Określa wartość gamma używaną do korekcji gamma tekstu. Wartość tę można dostosować w zależności od wyświetlacza używanego przez urządzenie.
hwui.text_gamma.black_threshold integer 64 Określa próg luminancji, poniżej którego stosowana jest korekcja gamma czerni. Wartość musi być zdefiniowana w przedziale 0..255.
hwui.text_gamma.white_threshold integer 192 Określa próg luminancji, powyżej którego stosowana jest korekcja gamma bieli. Wartość musi być zdefiniowana w przedziale 0..255.
hwui.use_gpu_pixel_buffers boolean true Służy do włączania lub wyłączania korzystania z PBO na sprzęcie OpenGL ES 3.0. Elementy PBO są używane przez moduł renderujący do asynchronicznego przesyłania tekstur, szczególnie w przypadku pamięci podręcznej czcionek. Ta właściwość powinna zawsze pozostać włączona, ale można ją wyłączyć podczas uruchamiania lub programowania, jeśli użycie PBO powoduje uszkodzenie lub gorszą wydajność. Z tego powodu właściwość nie jest przeznaczona tylko do odczytu.