Androidでのハードウェアアクセラレーションの真実

Androidハードウェアアクセラレーション

比較的オープンなAndroidプラットフォームをiOSなどの厳しく制御されたシステムと比較すると、iOS上のアプリの優れた滑らかさは、最初に気付く違いの1つです。これはAndroidが持っているものです と戦った 当初からですが、Androidのグラフィカルシステムについて行われた多くの仮定と、それがインターフェースの滑らかさにどのように関係しているかは間違っています。 Googleエンジニアのダイアンハックボーンは、最近のAndroidのハードウェアアクセラレーションの詳細について説明しました Google+の投稿、そしてそれは誰もが望んでいた魔法の弾丸ではないかもしれません。

私たちがいつも聞いていることとは対照的に、Androidは いくつか 1.0より前のバージョンから2D UI要素を描画するためのハードウェアアクセラレーション。私たちがAndroidで毎日目にするアニメーションの多くは、ずっとハードウェアアクセラレーションされています。たとえば、ポップアップメニュー、ダイアログボックス、通知バーのスライドダウン、およびアクティビティ間の遷移は、GPUを使用して描画されています。



すべての「ウィンドウ合成」は、GPUベースのハードウェアレンダリングを使用して行われます。これは、画面上に新しい要素を描画することと考えることができます。メニューボタンが押されると、結果のオーバーレイはGPUによって処理されます。ボタンが強調表示または押された場合など、そのオーバーレイが変更された場合、その変更はソフトウェアでレンダリングされ、ほとんどの携帯電話はこれらのピクセルをプッシュすることができます。ウィンドウ全体が変更されると、それはGPUタスクです。



何が変わっているのか アイスクリームサンド (ICS)? Hackborn氏によると、Android 4.0で見られるのは「完全な」ハードウェアアクセラレーションです。ウィンドウのすべてのUI要素、およびサードパーティのアプリは、レンダリングのためにGPUにアクセスできます。 Android 3.0は同じシステムでしたが、開発者は具体的にターゲットにできるようになります Android 4.0 ハードウェアアクセラレーション。 Googleでは、アプリのマニフェストにハードウェアアクセラレーションタグを追加することで、アプリをこのシステムと完全に互換性があるように更新することをデベロッパーに推奨しています。

開発者がICSでアプリを認証するため、これには時間がかかる可能性がありますが、GoogleはAndroidの設定にハードウェアレンダリングを強制するスイッチを組み込んでいます。 Hackbornは、テストされていないアプリでは、これが微妙な、または根本的な方法で物事を壊す可能性があることを警告しています。これは、Androidのハードウェアアクセラレーションで発生する可能性がある最初の問題にすぎません。



AndroidアイスクリームサンドイッチアプリのすべてのアニメーションとUIをGPUでレンダリングすることにより、システムはメモリ使用量に打撃を与えます。プロセスごとにOpenGLドライバーをロードするには、約2MBのメモリを使用し、8MBに増やします。 RAMが限られているデバイスでは、これは実際の問題になる可能性があります。より多くのRAMが消費されると、システムは必然的にメモリを節約するためにより多くのバックグラウンドタスクを閉じる必要があります。結果として、一部の開発者は描画にGPUを使用したくない場合があります。

インターフェースのハードウェアレンダリングの目的は操作をよりスムーズにすることですが、適切に処理されないと、Androidデバイスのパフォーマンスが低下する可能性があります。 60FPSで毎秒2.5回1280×800画面のすべてのピクセルをレンダリングできるTegra 2の例を使用すると、問題は明らかです。 GPUは、各ピクセルを背景用に1回、アイコンとウィジェット用に1回、ラベル用にもう一度タッチします。次に、処理するアニメーションがあります。このような方法で60FPSに到達する方法はありません。

Androidはハードウェアアクセラレーションをいくつかのトリックで機能させます。開発者は注意する必要があります。まず、インターフェイスの個別のウィンドウが統合オーバーレイにコピーされ、GPUアクセスがより効率的になります。 Androidでは、背景を1つの大きなビットマップとしてレンダリングするため、ユーザーがスクロールしたときに再レンダリングする必要はありません。



開発者は、ハードウェアアクセラレーションの処理方法に注意する必要があります。 GPUですべてを描画するだけでは、既存の電話のパフォーマンスが低下する可能性があります。将来的には、デバイスの解像度が高くなるほど、全体的な滑らかさと60FPSしきい値への近さとの関連性が高くなります。デバイスの速度を制限する要素は、多くの場合、今後のGPUメモリバスの帯域幅です。

Copyright © 全著作権所有 | 2007es.com