ゲームのパフォーマンス ブースト

Android 14 以降では、Android Dynamic Performance Framework(ADPF)の GAME という新しい電力モードを使って、ゲーム使用時のスマートフォンのパフォーマンスをカスタマイズできます。GAME は Power HAL にゲームアプリがフォアグラウンドであることを通知します。この通知によって Power HAL はゲームプレイ時の電源管理戦略を導入して、ユーザー エクスペリエンスが安定し、パフォーマンスが向上するようにします。

ゲームの読み込み時間を改善するため、Android 13 では ADPF に GAME_LOADING という名前の新しい電力モードが導入されています。GAME_LOADING はゲームアプリが読み込み状態にあるかどうかを通知して、Power HAL が読み込みブーストを提供できるようにします。この通知により、Power HAL はゲームの読み込みを高速化できるパフォーマンス ブースト対策を提供できます。

このページでは、ゲームアプリが Power HAL にゲーム ステータスを渡す方法、デバイスで利用できるように Power HAL を構成する方法、Power HAL 実装をテストする方法について説明します。

電力モードの検出と通知

このセクションでは Power Manager による GAME モードと GAME_LOADING モードの処理について説明します。

GAME 電力モード

Android 14 の新しい電力モードである GAMEPower Manager サービスにユーザーがゲームをプレイしていることを通知します。Power HAL は GAME からの通知を受け取ると、ゲームのプレイ中に電力を調整して、パフォーマンスを向上させ、温度を下げ、バッテリー駆動時間が長くなるようにします。

次の図は、GAME 電力モード通知での Power HAL への情報フローを示しています。

game-mode

図 1. ゲームプレイ中であることを通知する情報フロー

GAME 電力モードは常に AndroidManifest.xmlappCategoryGAME であるアプリに設定します。

GAME_LOADING 電力モード

読み込みブーストモードは、ゲームアプリが読み込み状態にあるときにそれを検出して Power HAL に通知します。Android 13 では、デベロッパー向けの APIisLoading という新しいゲーム ステータスが導入されています。このゲーム状態は、Power Manager サービスの新しい GAME_LOADING 電力モードを使用して、トップレベルのゲーム状態を Power HAL に通知します。Power HAL は、ゲーム読み込み状態の通知を受け取ると、プラットフォームのパフォーマンス設定と CPU クロックレートを調整できます。これにより、読み込み時間が改善されます。

ゲームが読み込み中であることを通知するために、ゲームアプリはゲーム ダッシュボードを使用して Game Manager に isLoading 状態を設定します。Game Manager はこの状態を Game Manager サービスに渡します。このサービスは新しい GAME_LOADING 電力モードで setPowerMode を使用して Power Manager サービスを呼び出します。GAME_LOADING 電力モードは、ゲームが読み込み状態にあることを Power HAL に通知し、Power HAL が読み込みブーストを提供できるようにします。

次の図は、読み込み状態の通知における、アプリから Power HAL への情報のフローを示しています。

loading-boost

図 2. ゲームが読み込み状態にあることを通知する情報フロー

ユーザーはゲーム ダッシュボードを使用して、パフォーマンス設定で読み込みブースト機能をオンまたはオフにできます。パフォーマンス設定はデフォルトではオフになっています。

GAMEGAME_LOADING を使用して Power HAL をカスタマイズする

GAME モードと GAME_LOADING モードを活用するには、OEM は Power HAL の実装をカスタマイズする必要があります。電源管理とパフォーマンス ブーストはハードウェアに固有であるため、Google Pixel デバイスのリファレンス実装がリリースされるまで、GAME モードと GAME_LOADING モードのリファレンス実装は提供されません。

GAME モードと GAME_LOADING モードのパフォーマンス向上のために、OEM は次の対策を組み合わせて実装できます。

  • フレームレートを安定化する
  • CPU クロック速度を上げる
  • 温度スロットリングを一時的に軽減する
  • フォアグラウンド ゲームアプリに高い CPU 優先度を指定する
  • 通常のゲーム以外のアプリ用に調整された CPU ブーストを削減する
  • 温度関連の電力供給戦略を最適化する

GAME モードの実装をテストする

GAME モードの実装をテストするには、GameManagerServiceTests.javatestGamePowerMode_ という接頭辞が付いたテストを使用します。

GAME_LOADING 実装をテストする

GAME_LOADING モードの実装をテストするには、android.gamemanager.cts.GameManagerTest#testSetGameContext を使用します。このテストでは、isLoading コンテキストを持つ GameManager::setGameContext() がパフォーマンス モードのときに Power HAL でゲーム読み込みモードを呼び出すかどうかが検証されます。