- Эффективное использование GPU
- Настроить параметры GPU визуализации
- Отладить показатель GPU overdraw
- How to Force GPU Rendering on Android
- What is GPU Rendering?
- When to Force GPU Rendering
- Как заставить рендеринг GPU на Android —
- Что такое рендеринг на GPU?
- Когда форсировать рендеринг на GPU
- What is GPU rendering in Android and how to enable it?
- Should you enable GPU rendering?
- How to enable GPU rendering on Android?
Эффективное использование GPU
Разработчику следует научиться эффективно использовать графический процессор устройства (GPU), чтобы приложение не тормозило и не выполняло лишнюю работу.
Настроить параметры GPU визуализации
Если ваше приложение тормозит, значит часть или все кадры обновления экрана обновляются больше чем 16 миллисекунд. Чтобы визуально увидеть обновления кадров на экране, можно на устройстве включить специальную опцию Настроить параметры GPU визуализации (Profile GPU Rendering).
У вас появится возможность быстро увидеть, сколько времени занимает отрисовка кадров. Напомню, что нужно укладываться в 16 миллисекунд.
Опция доступна на устройствах, начиная с Android 4.1. На устройстве следует активировать режим разработчика. На устройствах с версией 4.2 и выше режим по умолчанию скрыт. Для активации идёт в Настройки | О телефоне и семь раз щёлкаем по строке Номер сборки.
После активации заходим в Опции разработчика и находим пункт Настроить параметры GPU визуализации (Profile GPU rendering), который следует включить. В всплывающим окне выберите опцию На экране в виде столбиков (On screen as bars). В этом случае график будет выводиться поверх запущенного приложения.
Вы можете протестировать не только своё приложение, но и другие. Запустите любое приложение и начинайте работать с ним. Во время работы в нижней части экрана вы увидите обновляемый график. Горизонтальная ось отвечает за прошедшее время. Вертикальная ось показывает время для каждого кадра в миллисекундах. При взаимодействии с приложением, вертикальные полосы рисуются на экране, появляясь слева направо, показывая производительность кадров в течение какого-то времени. Каждый такой столбец представляет собой один кадр для отрисовки экрана. Чем выше высота столбика, тем больше времени уходит на отрисовку. Тонкая зелёная линия является ориентиром и соответствует 16 миллисекундам за кадр. Таким образом, вам нужно стремиться к тому, чтобы при изучении вашего приложения график не выбивался за эту линию.
Рассмотрим увеличенную версию графика.
Зелёная линия отвечает за 16 миллисекунд. Чтобы уложиться в 60 кадров в секунду, каждый столбец графика должен рисоваться ниже этой линии. В каких-то моментах столбец окажется слишком большим и будет гораздо выше зелёной линии. Это означает торможение программы. Каждый столбец имеет голубой, фиолетовый (Lollipop и выше), красный и оранжевый цвета.
Голубой цвет отвечает за время, используемое на создание и обновление View.
Фиолетовая часть представляет собой время, затраченное на передачу ресурсов рендеринга потока.
Красный цвет представляет собой время для отрисовки.
Оранжевый цвет показывает, сколько времени понадобилось процессору для ожидания, когда GPU завершит свою работу. Он и является источником проблем при больших величинах.
Существуют специальные методики для уменьшения нагрузки на графический процессор.
Отладить показатель GPU overdraw
Другая настройка позволяет узнать, как часто перерисовывается один и тот же участок экрана (т.е. выполняется лишняя работа). Опять идём в Опции разработчика и находим пункт Отладить показатель GPU overdraw (Debug GPU Overdraw), который следует включить. В всплывающим окне выберите опцию Показывать зоны наложения (Show overdraw areas). Не пугайтесь! Нкоторые элементы на экране изменят свой цвет.
Вернитесь в любое приложение и понаблюдайте за его работой. Цвет подскажет проблемные участки вашего приложения.
Если цвет в приложении не изменился, значит всё отлично. Нет наложения одного цвета поверх другого.
Голубой цвет показывает, что один слой рисуется поверх нижнего слоя. Хорошо.
Зелёный цвет — перерисовывается дважды. Нужно задуматься об оптимизации.
Розовый цвет — перерисовывается трижды. Всё очень плохо.
Красный цвет — перерисовывается много раз. Что-то пошло не так.
Вы можете самостоятельно проверить своё приложение для поиска проблемных мест. Создайте активность и поместите на неё компонент TextView. Присвойте корневому элементу и текстовой метке какой-нибудь фон в атрибуте android:background. У вас получится следующее: сначала вы закрасили одним цветом самый нижний слой активности. Затем поверх неё рисуется новый слой от TextView. Кстати, на самом TextView рисуется ещё и текст.
В каких-то моментах наложения цветов не избежать. Но представьте себе, что вы таким же образом установили фон для списка ListView, который занимает все площадь активности. Система будет выполнять двойную работу, хотя нижний слой активности пользователь никогда не увидит. А если вдобавок вы создадите ещё и собственную разметку для каждого элемента списка со своим фоном, то вообще получите перебор.
Маленький совет. Поместите после метода setContentView() вызов метода, который уберёт перирисовку экрана цветом темы. Это поможет убрать одно лишнее наложение цвета:
Источник
How to Force GPU Rendering on Android
When GPU rendering made it’s way to Android, it was unreliable, to say the least. It’s official purpose what to enhance the performance of apps, but back then a lot of graphical user interfaces didn’t know how to work with GPU rendering. In some cases, it was even slower than software rendering.
Over time, particularly after Android 4.0 came along, GPU got more reliable and slowly became the default for most apps. Now, most updated apps have GPU rendering coded into their builds.
But before we get to the bottom of how and when to enable this option, let’s figure out how it works.
What is GPU Rendering?
The GPU is the Graphics Processing Unit. At its core, it’s very similar to the CPU, but instead of doing calculations and performing tasks related to the operating system and hardware, the GPU handles the graphical information. In other words, it puts stuff on the screen for your eyes to see.
While the CPU is perfectly capable of handling graphical instructions, doing so will take time away from doing other important stuff for the system, which can lead to lag. Even more, the way CPUs are designed makes them quite inefficient with processing graphical data, compared to GPUs which are programmed to handle graphical information.
This is where GPU Rendering comes along – it takes the graphical processing part away from the CPU, thus freeing it up for more important chores. Since the GPU is much better with graphical data, the end result is better performance for both the CPU and the GPU.
When to Force GPU Rendering
Enabling this setting will offload window components like text, buttons and 2d graphics calculations to the GPU. This will make your device render UI animations better and feel less laggy. While you’ll definitely achieve a smoother experience and better frame rate in 2d applications, your device may end up using more battery. GPUs are known to consume more power than CPUs, so expect to see a 10-15% reduction in battery life if you leave it on at all times.
Forcing GPU rendering definitely makes sense on devices with a weaker CPU. If your device is anything less than a quad-core, I would recommend you leave it on at all times.
But keep in mind that GPU rendering is only efficient with 2d applications. Big games using 3D graphics can have worse frame rates with Force GPU Rendering enabled. The good thing is most Android versions won’t interfere with 3D apps and will only force GPU rendering on 2d apps that don’t use it by default.
Because most new apps already have this option enabled in their code, you might only notice sizeable differences when browsing through the menus of your phone. Your device will feel more snappy and display information on your screen faster than it used to. Sure, some older or badly-made apps will achieve higher frame rates while forcing GPU rendering, but those cases are rare.
Bottom line is, it’s up to you to decide if you want to trade battery life for increased fluidity and some additional frame rates. With this in mind, here’s how to enable Force GPU Rendering.
Источник
Как заставить рендеринг GPU на Android —
когда Рендеринг с помощью графического процессора добрался до Android, это было ненадежно, если не сказать больше. Официальная цель — повысить производительность приложений, но тогда многие графические пользовательские интерфейсы не знали, как работать с рендерингом на GPU. В некоторых случаях это было даже медленнее, чем программный рендеринг.
Со временем, особенно после появления Android 4.0, графический процессор стал более надежным и постепенно стал стандартным для большинства приложений. В настоящее время большинство обновленных приложений имеют встроенный графический рендеринг.
Но прежде чем мы перейдем к тому, как и когда включить эту опцию, давайте разберемся, как она работает.
Что такое рендеринг на GPU?
GPU является Графический процессор. По своей сути он очень похож на ЦП, но вместо выполнения вычислений и выполнения задач, связанных с операционной системой и оборудованием, графический процессор обрабатывает графическую информацию. Другими словами, это помещает материал на экран, чтобы ваши глаза могли видеть.
Хотя процессор прекрасно способен обрабатывать графические инструкции, это отнимет уйму времени на выполнение других важных для системы вещей, что может привести к задержке. Более того, конструкция ЦП делает их совершенно неэффективными при обработке графических данных по сравнению с графическими процессорами, которые запрограммированы на обработку графической информации.
Это где Графический процессор приходит — он отнимает часть графической обработки от процессора, освобождая его для более важных дел. Поскольку графический процессор намного лучше с графическими данными, конечный результат — лучшая производительность как для процессора, так и для графического процессора.
Когда форсировать рендеринг на GPU
Включение этого параметра приведет к разгрузке таких компонентов окна, как текст, кнопки и расчеты 2D-графики, в графический процессор. Это позволит вашему устройству лучше отображать анимацию пользовательского интерфейса и чувствовать себя менее запаздывающим. Хотя вы, безусловно, достигнете более плавного восприятия и лучшей частоты кадров в 2-мерных приложениях, ваше устройство может в итоге использовать больше батареи. Известно, что графические процессоры потребляют больше энергии, чем процессоры, поэтому ожидайте, что время автономной работы уменьшится на 10-15%, если оставить его включенным постоянно.
Принудительное рендеринг с помощью графического процессора определенно имеет смысл на устройствах с более слабым процессором. Если ваше устройство является чем-то меньшим, чем четырехъядерный процессор, я бы рекомендовал вам всегда оставлять его включенным.
Но имейте в виду, что рендеринг с помощью графического процессора эффективен только для двумерных приложений. Большие игры с использованием 3D-графики могут иметь худшую частоту кадров при Force GPU Rendering включен. Хорошо то, что большинство версий Android не будут мешать 3D-приложениям и будут вызывать рендеринг с помощью графического процессора только в тех приложениях, которые не используют его по умолчанию.
Поскольку в большинстве новых приложений эта опция уже включена в коде, вы можете заметить только значительные различия при просмотре меню вашего телефона. Ваше устройство будет работать быстрее и отображать информацию на экране быстрее, чем раньше. Конечно, некоторые старые или плохо сделанные приложения будут достигать более высокой частоты кадров при форсировании рендеринга на GPU, но такие случаи редки.
Суть в том, что вам решать, хотите ли вы обменять срок службы батареи на повышенную текучесть и некоторые дополнительные частоты кадров. Имея это в виду, вот как включить Force GPU Rendering.
Источник
What is GPU rendering in Android and how to enable it?
If you are using an ageing Android device you probably won’t get the same experience compared to when it was new. Phones can get slower over time and to get rid of this lag and make your Android experience exceptional again, you can turn to GPU rendering.
Any computing device has two processing units — GPU (Graphical Processing Unit) and the CPU (Central Processing unit). Both of these units perform different operations. The CPU is used for logical operations and is great at doing the same but isn’t as great at parallel processing. GPU, on the other hand, is exceptional at parallel processing — performs the same tasks at faster speeds.
The main job of the GPU is to render images on the mobile phone. When you are playing a 3D game on your phone, the GPU is responsible for showing a 3D image on a 2D screen by performing various matrix calculations. If the CPU has to perform this rendering, it slows down the device because in such a case the CPU is burdened with a lot of tasks. By enabling the following settings on your Android device, it will become snappier.
Should you enable GPU rendering?
GPU rendering basically means that you’re tasking your GPU to do certain tasks like generate screen elements, which usually the CPU does, among other things. Needless to say, the CPU on any device is the busiest hardware as it has a lot of things to take care of and the entire functioning of the device actually rests on its shoulders.
Enabling GPU rendering can a take off a considerable amount of load from the CPU, which could effectively make your system run smoother and faster. However, it’s important that you have a high-performing graphics card for GPU rendering, otherwise, the whole process might turn out to be counterproductive as a low-performance GPU could slow down the screen loads and the entire experience.
In case of Android devices, if you’re working on a low or mid-segment smartphone with a not-so-efficient SoC, it’s not recommended to use GPU rendering as that can put stress on your device and might make it slower. However, you can give it a try if you wish as the process is reversible.
How to enable GPU rendering on Android?
To enable GPU rendering, you need to enable developer settings. Follow the steps below to do that and then enable GPU rendering on your Android device.
- Go to Settings >About phone> Build number. It’s mostly under About phone but can vary depending on the manufacturer. Once there, click repeatedly (about seven times) on the Build number. Doing this will enable developer options on your device.
- Once you have developer options enabled on your device. Go to Systems > Developer options and turn on Force GPU rendering and Force4x MSAA.
Enabling these two options will make your Android experience smoother as it takes the load of the CPU by using GPU for rendering images on the screen. MSAA makes the display look crispier by performing anti-aliasing.
If for some reason, your device starts to lag or stutter, follow the same steps above and switch off the toggle button besides Force 4x MSAA and Force GPU rendering.
A tech enthusiast, driven by curiosity. A bibliophile who loves to travel. An Engineering graduate who loves to code and write about new technologies. Can’t sustain without coffee.
You can contact Nischay via email: [email protected]
Источник