このドキュメントでは、ハードウェアを最大限に活用するためのパフォーマンス調整について説明します。
OpenGLRenderer(libhwui)プロパティ
このドキュメントでは、Android の 2D ハードウェア アクセラレーション レンダリング パイプラインの制御に使用できるすべてのプロパティを示します。これらのプロパティを device.mk
で PRODUCT_PROPERTY_OVERRIDES
として設定します。
すべての Android バージョン共通のプロパティ
プロパティ | タイプ | デフォルト値 | 説明 |
---|---|---|---|
ro.zygote.disable_gl_preload |
boolean |
false |
ブート時に Zygote で EGL / GL ドライバのプリロードを有効または無効にするために使用します。このプロパティを false に設定すると、Zygote は eglGetDisplay(EGL_DEFAULT_DISPLAY)を呼び出して GL ドライバをプリロードします。Zygote でダイナミック ライブラリのコードを読み込んで、他のすべてのプロセスと共有するためです。ドライバが共有をサポートしていない場合は、このプロパティを true に設定します。 |
Android 8.0 以前のプロパティ
プロパティ | タイプ | デフォルト値 | 説明 |
---|---|---|---|
ro.hwui.disable_scissor_opt |
boolean |
false |
シザーの最適化を有効または無効にするために使用します。指定できる値は true と false です。シザーの最適化を有効にすると、OpenGLRenderer は GL シザーテストを選択的に有効または無効にしてシザーの使用を最小限に抑えます。 最適化を無効にすると、OpenGLRenderer は GL シザーテストを有効にしたまま、必要に応じてシザー矩形を変更します。一部の GPU(SGX 540 など)では、シザーテストを頻繁に有効または無効にするよりも、シザー矩形を頻繁に変更した場合にパフォーマンスが向上します。 |
ro.hwui.texture_cache_size |
float |
24 |
プロセスごとのテクスチャ キャッシュのサイズをメガバイト単位で定義します。32 ビット テクスチャの画面を複数保持するのに十分な大きさのキャッシュを使用することをおすすめします。たとえば、1,280×800 のディスプレイでは全画面バッファで約 4 MB 使用されるため、20 MB 以上のキャッシュが必要です。 |
ro.hwui.layer_cache_size |
float |
16 |
プロセスごとのレイヤ キャッシュのサイズをメガバイト単位で定義します。32 ビットの画面の 4 倍を保持するのに十分な大きさのキャッシュを使用することをおすすめします。たとえば、1,280×800 のディスプレイでは全画面バッファで約 4 MB 使用されるため、16 MB 以上のキャッシュが必要です。 |
ro.hwui.gradient_cache_size |
0.5 |
float |
プロセスごとのグラデーション キャッシュのサイズをメガバイト単位で定義します。通常 1 つのグラデーションは 1~4 KB のメモリを占有します。少なくとも 12 のグラデーションを保持するのに十分な大きさのキャッシュを使用することをおすすめします。 |
ro.hwui.patch_cache_size |
integer |
128 |
プロセスごとの 9-patch キャッシュのサイズをキロバイト単位で定義します。このキャッシュは頂点データのみを保持するため、小さく抑えることができます。各頂点は 4 つの浮動小数点数、つまり 16 バイトで構成されます。 |
ro.hwui.path_cache_size |
float |
4 |
プロセスごとのパスキャッシュのサイズをメガバイト単位で定義します。少なくとも 32 ビット テクスチャ 1 画面分を保持するのに十分な大きさのキャッシュを使用することをおすすめします。たとえば、1,280×800 のディスプレイでは全画面バッファで約 4 MB 使用されるため、4 MB 以上のキャッシュが必要です。 |
ro.hwui.shape_cache_size |
float |
1 |
プロセスごとの図形キャッシュのサイズをメガバイト単位で定義します。この値は、円や角丸長方形などの複数のキャッシュで使用されます。8 ビットの画面を 1 つ以上保持するのに十分な大きさのキャッシュを使用することをおすすめします。たとえば、1,280×800 のディスプレイでは全画面バッファで約 1 MB 使用されるため、1 MB 以上のキャッシュが必要です。 |
ro.hwui.drop_shadow_cache_size |
float |
2 |
プロセスごとのテキスト ドロップ シャドウ キャッシュのサイズをメガバイト単位で定義します。8 ビット テクスチャ 2 画面分を保持するのに十分な大きさのキャッシュを使用することをおすすめします。たとえば、1,280×800 のディスプレイでは全画面バッファで約 1 MB 使用されるため、2 MB 以上のキャッシュが必要です。 |
ro.hwui.r_buffer_cache_size |
float |
2 |
プロセスごとのレンダリング バッファ キャッシュのサイズをメガバイト単位で定義します。8 ビットの画面の 2 倍を保持するのに十分な大きさのキャッシュを使用することをおすすめします。たとえば、1,280×800 のディスプレイでは全画面バッファで約 1 MB 使用されるため、2 MB 以上のキャッシュが必要です。デバイスが 4 ビットまたは 1 ビットのステンシル バッファをサポートしている場合は、キャッシュを小さくすることができます。 |
ro.hwui.texture_cache_flush_rate |
float |
0.6 |
メモリ フラッシュ後に保持するテクスチャ キャッシュの割合を定義します。メモリ フラッシュは、すべてのアプリでメモリを再利用する必要があるときにトリガーされます。この場合は、キャッシュの約 50% を解放することをおすすめします。 |
ro.hwui.text_small_cache_width |
integer |
1024 |
デフォルトのフォント キャッシュの幅をピクセル単位で定義します。上限は、GPU がテクスチャをアップロードする速度によって異なります。 1,024~2,048 ピクセルの使用をおすすめします。また、2 のべき乗の値を使用する必要があります。 |
ro.hwui.text_small_cache_height |
integer |
256 |
デフォルトのフォント キャッシュの高さをピクセル単位で定義します。上限は、GPU がテクスチャをアップロードする速度によって異なります。 256~1,024 ピクセルの使用をおすすめします。 |
ro.hwui.text_large_cache_width |
integer |
2048 |
大きいフォント キャッシュの幅をピクセル単位で定義します。このキャッシュは、大きすぎてデフォルトのフォント キャッシュに収まらないグリフに使用されます。上限は、GPU がテクスチャをアップロードする速度によって異なります。2,048~4,096 ピクセルの使用をおすすめします。また、2 のべき乗の値を使用する必要があります。 |
ro.hwui.text_large_cache_height |
integer |
512 |
大きいフォント キャッシュの高さをピクセル単位で定義します。大きいフォント キャッシュは、大きすぎてデフォルトのフォント キャッシュに収まらないグリフに使用されます。上限は、GPU がテクスチャをアップロードする速度によって異なります。 512~2,048 ピクセルの使用をおすすめします。また、2 のべき乗の値を使用する必要があります。 |
hwui.text_gamma_correction |
string |
lookup |
テキストのガンマ補正法を選択します。次の 4 つの選択肢があります。
lookup を使用することをおすすめします。
|
hwui.text_gamma |
float |
1.4 |
テキストのガンマ補正に使用するガンマ値を定義します。 この値は、デバイスで使用するディスプレイに基づいて調整できます。 |
hwui.text_gamma.black_threshold |
integer |
64 |
黒のガンマ補正が適用される下限の輝度しきい値を定義します。 値は 0~255 の範囲で定義する必要があります。 |
hwui.text_gamma.white_threshold |
integer |
192 |
白のガンマ補正が適用される上限の輝度しきい値を定義します。 値は 0~255 の範囲で定義する必要があります。 |
hwui.use_gpu_pixel_buffers |
boolean |
true |
OpenGL ES 3.0 ハードウェアでの PBO の使用を有効または無効にするために使用されます。PBO は、特にフォント キャッシュの非同期テクスチャ アップロードを実行するためにレンダラで使用されます。このプロパティは常に有効にしておくべきですが、PBO の使用によって破損やパフォーマンスの低下が発生した場合は、起動時または開発時に無効にできます。そのため、このプロパティは読み取り専用ではありません。 |