Улучшение пользовательского интерфейса FPS на Android с помощью простого Build.prop Tweak


В настоящее время, когда эксперты обсуждают пользовательские интерфейсы (UI), они в основном заботятся о частоте кадров. Даже если человеческий глаз может обрабатывать до 25 кадров в секунду (FPS), цифровой визуальный контент должен отображаться более чем на 30 FPS. Широко признано, что частота кадров выше, чем то, что может обрабатывать глаз, может значительно улучшить качество визуального контента. Современное мультимедийное устройство должно иметь возможность выпускать по меньшей мере 60 FPS на своем экране, поэтому оно может отображать мультимедийный контент высокой четкости, не жертвуя даже одним битом данных.

На многофункциональном устройстве, таком как смартфон или планшет, пользовательского интерфейса в 60 FPS не так-то просто достичь. Очень ограниченная вычислительная мощность этих устройств, а также необходимость одновременной работы операционных систем с тяжелыми задачами по ведению домашнего хозяйства делают вещи довольно сложными. Программное обеспечение должно быть тщательно обработано, поэтому оно в полной мере использует аппаратное обеспечение и работает как можно быстрее.

Google отлично поработал с пользовательским интерфейсом Android. У устройств Pixel есть некоторые специальные дополнения и настройки кода ядра, поэтому они могут доставлять постоянный пользовательский интерфейс 60 FPS. Результаты являются исключительными. Другие производители поставляют свои решения на своих высококачественных устройствах.

Однако не все из нас владеют устройством высокого класса. Но это не означает, что на наших устройствах нет возможности для улучшения. К счастью, Google внедрил универсальную функцию в Android Framework, чтобы увеличить частоту кадров пользовательского интерфейса. Эта функция доступна для устройств под управлением Android Nougat и новее. Он был создан главным образом как функция отладки, чтобы помочь разработчикам устройств определить «джиттер». Не странно, что большинство устройств в настоящее время поставляются с этой функцией.

Как это работает?

Когда включено специальное свойство build.prop, Android Framework идентифицирует потоки кода, ответственные за визуализацию пользовательского интерфейса. Затем он планирует эти потоки с приоритетом SCHED_FIFO в реальном времени. SCHED_FIFO является одним из многих приоритетов планирования, поддерживаемых планировщиком ядра Linux. Когда задача запланирована с приоритетом SCHED_FIFO, ядро ​​гарантирует, что эта задача будет запущена как можно скорее. SCHED_FIFO имеет приоритет над любым другим приоритетом планирования. Это гарантирует, что создание пользовательского интерфейса становится самой важной задачей системы. Исключая время ожидания между временем выполнения операции рисования пользовательского интерфейса и временем его фактического запуска, частота кадров значительно увеличивается.

На первый взгляд вещи кажутся очень многообещающими, но есть некоторые оговорки. Меньше способные устройства могут попасть в проблему, когда эта функция включена. Android может не справиться с другими задачами, такими как обработка ввода сенсорного экрана или воспроизведение музыки в фоновом режиме. Некоторые устройства могут даже замедляться в целом. Когда запускается задача SCHED_FIFO, она не будет возвращать управление операционной системе, если она не завершится или не сгорит. Это означает, что любая другая задача, которая должна выполняться, должна ждать завершения задачи SCHED_FIFO. Как правило, устройства, которые имеют более двух процессорных ядер, должны иметь возможность адекватно обрабатывать эту функцию. Если результаты не идеальны, всегда есть место для улучшения, настраивая ядро ​​Task Scheduler (хотя это для более опытных пользователей).

Как включить 
более высокий уровень FPS

Как упоминалось выше, чтобы включить более высокий уровень FPS на устройствах Nougat + (упомянутый теперь как функция «use_fifo_ui»), вам нужно добавить строку в файл build.prop.

Просто вставьте следующую строку в файл build.prop, сохраните ее и перезагрузите устройство:

sys.use_fifo_ui = 1

Android Framework автоматически загрузит новое свойство при загрузке, и результаты должны появиться сразу.

Как проверить результаты?

Android Nougat и новый пакет - инструмент профилирования рендеринга в разделе «Параметры разработчика». Это можно использовать для проверки FPS, достигнутого платформой Android при отображении различных приложений. Вы можете включить его, перейдя в раздел «Параметры разработчика» и выбрав «Профиль рендеринга GPU» на вкладке «Мониторинг».

Вы получите фактически график кадров в реальном времени. Каждый столбец представляет собой один кадр. Различные цвета представляют разные этапы процесса рендеринга (более глубокое обсуждение о них будет за пределами этой статьи). Вы также заметите горизонтальную линию. Эта линия представляет предел 60 FPS. Столбцы, которые заканчиваются ниже этой строки, представляют собой фреймы, отображаемые с частотой кадров выше 60FPS. Рамки, которые растут над горизонтальной линией, считаются «слишком медленными».

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

Примечания:
  • Хотя все ПЗУ на базе Nougat + должны поддерживать описанную выше функцию, некоторые ПЗУ ПЗУ могут полностью удалить эту функцию. Build.prop редактировать был проверен и признан работать на AOSP и LineageOS на основе ПЗУ.
  • Убедитесь, что у вас есть резервная копия, прежде чем пытаться редактировать build.prop. Существует вероятность того, что система Android станет нестабильной при включении этой функции.
  • 'use_fifo_ui' может только увеличивать FPS при использовании обычных приложений. Приложения OpenGL (т. Е. Игры) не принесут никакой пользы от этой настройки.
Улучшение пользовательского интерфейса FPS на Android с помощью простого Build.prop Tweak Улучшение пользовательского интерфейса FPS на Android с помощью простого Build.prop Tweak Reviewed by Admin on марта 20, 2018 Rating: 5

Комментариев нет: