Конфигурация OpenGLRenderer

В этом документе описывается настройка производительности, которую вы можете выполнить, чтобы получить максимальную отдачу от вашего оборудования.

Свойства OpenGLRenderer (libhwui)

В этом документе перечислены все свойства, которые можно использовать для управления конвейером 2D-рендеринга с аппаратным ускорением Android. Установите эти свойства в device.mk как PRODUCT_PROPERTY_OVERRIDES .

Свойства для всех версий Android

Имущество Тип Значение по умолчанию Описание
ro.zygote.disable_gl_preload boolean false Используется для включения/отключения предварительной загрузки драйверов EGL/GL в Zygote во время загрузки. Если для этого свойства установлено значение false, Zygote предварительно загрузит драйверы GL, вызвав eglGetDisplay(EGL_DEFAULT_DISPLAY). Цель состоит в том, чтобы загрузить код динамических библиотек в Zygote, чтобы поделиться им со всеми другими процессами. Если драйвер не поддерживает совместное использование, установите для этого свойства значение true.

Свойства для Android 8.0 и ниже

Имущество Тип Значение по умолчанию Описание
ro.hwui.disable_scissor_opt boolean false

Используется для включения или отключения ножничной оптимизации. Принятые значения являются истинными и ложными. Когда оптимизация ножниц включена, OpenGLRenderer пытается свести к минимуму использование ножниц, выборочно включая и отключая тест ножниц GL.

Когда оптимизация отключена, OpenGLRenderer сохраняет включенным тест ножниц GL и при необходимости изменяет прямоугольник ножниц. Некоторые графические процессоры (например, SGX 540) работают лучше при более частом изменении прямоугольника с ножницами, чем при частом включении или отключении теста с ножницами.

ro.hwui.texture_cache_size float 24 Определяет размер в мегабайтах кэша текстуры для каждого процесса. Мы рекомендуем использовать кеш, достаточно большой, чтобы вместить несколько экранов с 32-битными текстурами (например, на дисплее с разрешением 1280x800 полноэкранный буфер занимает около 4 МБ, поэтому размер кеша должен быть не менее 20 МБ).
ro.hwui.layer_cache_size float 16 Определяет размер в мегабайтах кэша слоев процесса. Мы рекомендуем использовать кеш, достаточно большой, чтобы вместить в 4 раза больше экрана в 32 бита. Например, на дисплее с разрешением 1280x800 полноэкранный буфер использует около 4 МБ, поэтому кэш должен быть не менее 16 МБ.
ro.hwui.gradient_cache_size 0.5 float Определяет размер в мегабайтах кэша градиентов для каждого процесса. Один градиент обычно занимает от 1 до 4 КБ памяти. Рекомендуется использовать достаточно большой кэш, чтобы вместить не менее двенадцати градиентов.
ro.hwui.patch_cache_size integer 128 Определяет размер в килобайтах кэша с 9 исправлениями для каждого процесса. Этот кэш содержит только данные вершин и поэтому может быть небольшим. Каждая вершина состоит из 4 чисел с плавающей запятой или 16 байтов.
ro.hwui.path_cache_size float 4 Определяет размер в мегабайтах кэша путей процесса. Мы рекомендуем использовать кеш, достаточно большой, чтобы вместить хотя бы один экран с 32-битными текстурами. Например, на дисплее с разрешением 1280x800 полноэкранный буфер использует около 4 МБ, поэтому кэш должен быть не менее 4 МБ.
ro.hwui.shape_cache_size float 1 Определяет размер в мегабайтах кэшей форм для каждого процесса. Это значение используется несколькими кэшами, такими как круги и прямоугольники со скругленными углами. Мы рекомендуем использовать кеш достаточно большой, чтобы вместить хотя бы один 8-битный экран. Например, на дисплее с разрешением 1280x800 полноэкранный буфер использует около 1 МБ, поэтому кэш должен быть не менее 1 МБ.
ro.hwui.drop_shadow_cache_size float 2 Определяет размер в мегабайтах кэша теней текста для каждого процесса. Мы рекомендуем использовать кеш, достаточно большой, чтобы вместить два экрана с 8-битными текстурами. Например, на дисплее с разрешением 1280x800 полноэкранный буфер использует около 1 МБ, поэтому кэш должен быть не менее 2 МБ.
ro.hwui.r_buffer_cache_size float 2 Определяет размер в мегабайтах кэша буферов рендеринга для каждого процесса. Рекомендуется использовать кеш, достаточно большой, чтобы вместить в два раза больше экрана в 8 бит. Например, на дисплее с разрешением 1280x800 полноэкранный буфер использует около 1 МБ, поэтому кэш должен быть не менее 2 МБ. Кэш может быть меньше, если устройство поддерживает 4-битные или 1-битные буферы трафарета.
ro.hwui.texture_cache_flush_rate float 0.6 Определяет процент кэша текстур, который будет сохраняться после сброса памяти. Очистка памяти запускается, когда системе необходимо освободить память для всех приложений. Мы рекомендуем освобождать около 50% кеша в таких ситуациях.
ro.hwui.text_small_cache_width integer 1024 Определяет ширину в пикселях кэша шрифтов по умолчанию. Верхняя граница зависит от того, насколько быстро GPU может загружать текстуры. Мы рекомендуем использовать не менее 1024 пикселей, но не более 2048 пикселей. Вы также должны использовать степень двойки.
ro.hwui.text_small_cache_height integer 256 Определяет высоту в пикселях кэша шрифтов по умолчанию. Верхняя граница зависит от того, насколько быстро GPU может загружать текстуры. Мы рекомендуем использовать не менее 256 пикселей, но не более 1024 пикселей.
ro.hwui.text_large_cache_width integer 2048 Определяет ширину кэша больших шрифтов в пикселях. Этот кеш используется для глифов, которые слишком велики, чтобы поместиться в кеш шрифтов по умолчанию. Верхняя граница зависит от того, насколько быстро GPU может загружать текстуры. Мы рекомендуем использовать не менее 2048 пикселей, но не более 4096 пикселей. Вы также должны использовать степень двойки.
ro.hwui.text_large_cache_height integer 512 Определяет высоту кэша больших шрифтов в пикселях. Кэш больших шрифтов используется для глифов, слишком больших для размещения в кеше шрифтов по умолчанию. Верхняя граница зависит от того, насколько быстро GPU может загружать текстуры. Мы рекомендуем использовать не менее 512 пикселей, но не более 2048 пикселей. Вы также должны использовать степень двойки.
hwui.text_gamma_correction string lookup Выбирает технику гамма-коррекции текста. Возможны четыре варианта:
  • lookup3 : Исправление на основе таблиц поиска. Гамма-коррекция отличается для черного и белого текста (см. пороговые значения ниже).
  • lookup : исправление на основе одной таблицы поиска.
  • shader3 : коррекция, применяемая шейдером GLSL. Гамма-коррекция отличается для черного и белого текста (см. пороговые значения ниже).
  • shader : коррекция, применяемая шейдером GLSL.
Гамма-коррекция поиска лучше всего работает на графических процессорах с ограниченной математикой шейдеров. Гамма-коррекция шейдера лучше всего экономит память. Мы рекомендуем использовать метод lookup по умолчанию, который предлагает хороший компромисс с точки зрения качества, скорости и использования памяти.
hwui.text_gamma float 1.4 Определяет значение гаммы, используемое для коррекции гаммы текста. Это значение можно настроить в зависимости от дисплея, используемого устройством.
hwui.text_gamma.black_threshold integer 64 Определяет порог яркости, ниже которого применяется гамма-коррекция черного. Значение должно быть определено в диапазоне 0..255.
hwui.text_gamma.white_threshold integer 192 Определяет порог яркости, выше которого применяется гамма-коррекция белого. Значение должно быть определено в диапазоне 0..255.
hwui.use_gpu_pixel_buffers boolean true Используется для включения или отключения использования PBO на оборудовании OpenGL ES 3.0. PBO используются средством визуализации для выполнения асинхронной загрузки текстур, особенно для кеша шрифтов. Это свойство всегда должно оставаться включенным, но его можно отключить во время запуска или разработки, если использование PBO вызывает повреждения или ужасную производительность. Вот почему свойство не доступно только для чтения.