За Android и хардуерното ускорение

    Dianne Hackborn е един от Android инженерите. Тя е публикувала в Google+ социалната мрежа статия с името Какво ще кажете за няколко истински факта за графиката в Android? Тя споделя, че се е уморила от постоянното публикуване на грешна информация относно това как работи рендерирането на графиката в Android. Ето какво научаваме от нейната публикация:

    Android винаги е използвал някакво хардуерно ускорение за изобразяване. Още във версия 1.0 изграждането на прозорците на екрана е извършвано от хардуера. Това означава, че голяма част от анимациите, които се виждат, винаги са изпълнявани от хардуера – менюта, транзишъни между различни дейности, показването и скриването на pop-up и диалогови прозорци и други.

    Първоначално рендерирането на съдържанията на прозорците е изпълнявано от хардуера. Във версиите преди 3.0, в случаите, когато един прозорец ъпдейтва своето съдържание, се е използвал софтуер за изобразяване на съдържанието на прозореца. Останалите прозорци не са прерисувани, изграждането на прозорците се изпълнява от хардуера.

    Пълно хардуерно ускорение при изобразяване вътре в прозореца е добавено в Android 3.0. Имплементацията в Android 4.0 не е по-пълна от тази в 3.0. От версия 3.0, ако в едно приложение е зададено да използва хардуерно ускорение, цялото изобразяване на прозорците на приложението ще бъде изпълнявано от графичния процесор. Основната промяна в Android 4.0 е, че в приложенията, написани за тази или по-висока версия на Android, хардуерното ускорение ще е включено по подразбиране. Това не е направено за по-старите приложения, защото би развалило голяма част от тях.

    Виж още:  Google Pixel 9a. Топ!

    Хардуерното ускорение в графиката не е магически начин за постигане на гладко работещ интерфейс. Това изисква много усилия, които са направени – подобрения в графика на изпълнение на нишки изпълнявани във фонов и не във фонов режим в 1.6, пренаписване на input системата в 2.3, и много други. За постигането на 60fps, трябва да изобразявате всеки кадър за 20 милисекунди. Това е доста малко време. Дори само достъпът до flash паметта от нишка, която работи в момента, в някои случаи ще доведе до прекалено голямо забавяне.

    Хардуерното ускорение не прави нещата гладки, като с магическа пръчка. Графичният процесор има лимит на операциите, които може да извърши. Ако вземем за пример таблетите, които използват Tegra 2 процесор, техният графичен процесор може да докосне всеки пиксел от екран с резолюция 1280х800 пиксела около 2.5 пъти при 60fps. Погледнете началния екран на Android 3.0 таблет при превключване на списъка с всички приложения. Първо трябва да бъде изобразен фона (това означава достъп до всички пиксели на екрана), след това се изобразява слоя с shortcut-ите и widget-ите (половината пиксели), черният фон на всички приложения (всички пиксели), иконките и надписите на всички приложения (половината пиксели). Вече надхвърлихме пикселите, които графичният процесор може да обходи. За да се постигне анимация с 60fps, се използват различни трикове.

    Виж още:  Google Pixel 9a. Топ!

    С увеличаването на резолюцията на екраните на устройствата, постигането на 60fps в интерфейса зависи силно от скоростта, паметта и шината на графичния процесор. В много случаи се оказва, че процесорът е достатъчно бърз, но шината е тази, която води до ограниченията.