Tõde riistvarakiirenduse kohta Androidis

Androidi riistvarakiirendus

Kui suhteliselt avatud Androidi platvormi võrreldakse rangelt kontrollitud süsteemiga nagu iOS, on üks esimesi erinevusi, mida inimesed märgivad, iOS-i rakenduste parem sujuvus. See on midagi, mida Androidil on võitles algusest peale, kuid paljud Androidi graafilise süsteemi kohta tehtud eeldused ja selle seos liidese sujuvusega on valed. Google'i insener Dianne Hackborn selgitas hiljuti Androidi riistvarakiirenduse pisiasju Google+ postitus ja see ei pruugi olla võlu, mida kõik lootsid.



Vastupidiselt sellele, mida oleme alati kuulnud, on Androidil olnud mõned riistvaraline kiirendus 2D kasutajaliidese elementide joonistamiseks alates versioonist 1.0. Paljud animatsioonid, mida Androidis iga päev näeme, on kogu aeg riistvaraliselt kiirendatud. Näiteks joonistatakse GPU abil välja hüpikmenüüd, dialoogibokse, teavitusribal alla libisemist ja tegevuste vahel üleminekut.

Kogu „aknakompositsioon” tehakse GPU-põhise riistvara renderdamise abil. Võime mõelda sellest kui uute elementide ekraanile joonistamisest. Menüünupu vajutamisel tegeleb saadud ülekatega GPU. Kui see ülekate peaks muutuma, näiteks kui mõni nupp on esile tõstetud või vajutatud, renderdatakse see muudatus tarkvaras ja enamik telefone suudab neid piksleid enam kui tõugata. Kui kogu akent muudetakse, on see GPU ülesanne.



Mis siis muutub Jäätisevõileib (ICS)? Hackborni sõnul on see, mida Android 4.0-s näeme, riistvaraline kiirendus. Kõigil Windowsi kasutajaliidese elementidel ja kolmanda osapoole rakendustel on renderdamiseks juurdepääs GPU-le. Android 3.0-l oli sama süsteem, kuid nüüd saavad arendajad sihtida Android 4.0 riistvaralise kiirendusega. Google julgustab arendajaid värskendama rakendusi selle süsteemiga täielikult ühilduvaks, lisades rakenduse manifestile riistvarakiirenduse märgendi.



Tõenäoliselt võtab see aega, kuna arendajad sertifitseerivad oma rakendusi ICS-is, kuid riistvara renderdamise sundimiseks on Google lisanud Androidi seadetesse lüliti. Hackborn hoiatab, et testimata rakendustes võib see asju peenelt või põhimõtteliselt lõhkuda. See on vaid esimene võimalik probleem Androidi riistvarakiirendusega.

Androidi jäätise võileibRenderdades GPU-ga kõik rakenduse animatsioonid ja kasutajaliidese, võtab süsteem mälukasutuse. OpenGL-draiverite laadimine iga protsessi jaoks võtab mälumahu umbes 2 MB ja suurendab seda 8 MB-ni. Piiratud RAM-iga seadmetes võib see olla tõeline probleem. Kui rohkem RAM-i on ära kasutatud, peab süsteem mälu säästmiseks tingimata rohkem taustaülesandeid sulgema. Mõni arendaja ei soovi selle tulemusena joonistamiseks GPU-d kasutada.

Liidese riistvara renderdamise eesmärk on sujuvam töö, kuid kui seda ei käsitleta nõuetekohaselt, võivad Android-seadmed tegelikult halvemini töötada. Kasutades Tegra 2 näidet, mis suudab 1280 × 800 ekraanil kõik pikslid renderdada kiirusega 60 FPS 2,5 korda sekundis, on probleem selge. GPU puudutab iga pikslit üks kord tausta jaoks, üks kord ikoonide ja vidinate jaoks, veel kord siltide jaoks ja seejärel on animatsioone, millega tegeleda. Sellisel viisil asju tehes pole võimalik jõuda 60 kaadrisageduseni sekundis.



Android paneb riistvarakiirenduse toimima paljude trikkidega ja arendajad peaksid selle teadmiseks võtma. Kõigepealt kopeeritakse liidese eraldi aknad GPU-de tõhusama juurdepääsu tagamiseks ühtsetesse ülekatetesse. Android renderdab tausta ka ühe suure bittkaardina, mida pole vaja uuesti renderdada, kui kasutaja ringi kerib.

Arendajad peavad riistvarakiirenduse käitlemisel olema ettevaatlikud. Lihtsalt graafikaprotsessoriga kõige joonistamine võib põhjustada olemasolevate telefonide halva jõudluse. Tulevikus, mida suurem on seadme eraldusvõime, seda rohkem on GPU kiirus seotud selle 60FPS künnise üldise sujuvuse ja lähedusega. Seadme kiiruse piiravaks teguriks on sageli GPU mälusiini ribalaius.

Copyright © Kõik Õigused Kaitstud | 2007es.com