Zwiększenie wydajności w przypadku gier

Od Androida 14 w ramach interfejsu Android Dynamic Performance Framework (ADPF) dostępny jest nowy tryb oszczędzania energii o nazwie GAME, który umożliwia dostosowanie wydajności telefonu podczas grania. GAME wskazuje Power HAL, że aplikacja do gier jest na pierwszym planie. Dzięki temu interfejs HAL do zarządzania energią może stosować strategie zarządzania energią podczas grania, aby użytkownik miał stabilną i lepszą wydajność.

Aby skrócić czas wczytywania gry, Android 13 wprowadza w ADPF nowy tryb zasilania o nazwie GAME_LOADING. GAME_LOADING wskazuje, czy aplikacja z grą jest w stanie wczytywania, aby interfejs Power HAL mógł przyspieszyć wczytywanie. Dzięki temu interfejs HAL może zapewnić środki zwiększające wydajność, które mogą przyspieszyć wczytywanie gry.

Na tej stronie opisaliśmy, jak aplikacja z grą przekazuje stan gry do interfejsu Power HAL, jak skonfigurować ten interfejs, aby korzystać z niego na urządzeniach, a także jak przetestować jego implementację.

Wykrywanie trybu oszczędzania energii i powiadomienie

W tej sekcji opisano, jak Menedżer zasilania obsługuje tryby GAMEGAME_LOADING.

Tryb oszczędzania energii podczas grania

Nowy tryb oszczędzania energii GAME w Androidzie 14 informuje usługę Power Manager, że użytkownik gra w grę. Gdy interfejs Power HAL otrzyma powiadomienie o trybie GAME, może dostosować zasilanie, aby zwiększyć wydajność, obniżyć temperaturę i wydłużyć czas pracy na baterii podczas grania.

Rysunek poniżej pokazuje przepływ informacji do interfejsu Power HAL w celu wskazania trybu zasilania GAME:

game-mode

Rysunek 1. Przepływ informacji wskazujący, że użytkownik gra w jakąś grę.

Tryb GAME jest zawsze ustawiany w przypadku aplikacji z wartością appCategoryAndroidManifest.xml.GAME

Tryb oszczędzania energii GAME_LOADING

Tryb przyspieszania wczytywania działa w ten sposób, że wykrywa, kiedy aplikacja gry jest w stanie wczytywania, i powiadamia interfejs Power HAL. Android 13 wprowadza w interfejsie API dla deweloperów nowy stan gry o nazwie isLoading. Ten stan gry korzysta z nowego trybu zasilania GAME_LOADING w usłudze Power Manager, aby powiadomić interfejs Power HAL o stanie gry na najwyższym poziomie. Gdy interfejs Power HAL otrzyma powiadomienie o stanie wczytywania gry, może dostosować ustawienia wydajności platformy i częstotliwość zegara procesora, co spowoduje skrócenie czasu wczytywania.

Aby wskazać, że gra jest wczytywana, aplikacja gry używa panelu gier do ustawienia stanu isLoading w Menedżerze gier. Menedżer gry przekazuje ten stan do usługi menedżera gry, która używa setPowerMode z nowym trybem zasilania GAME_LOADING, aby wywołać usługę menedżera zasilania. Tryb GAME_LOADING informuje interfejs Power HAL, że gra jest w stanie wczytywania, aby ten mógł przyspieszyć wczytywanie.

Na rysunku poniżej pokazano przepływ informacji z aplikacji do PowerHAL, aby wskazać stan wczytywania:

loading-boost

Rysunek 2. Przepływ informacji wskazujący, że gra się wczytuje.

Panel gry umożliwia użytkownikom włączenie lub wyłączenie funkcji przyspieszania wczytywania za pomocą ustawień wydajności. Ustawienie wydajności jest zawsze domyślnie wyłączone.

Dostosowywanie interfejsu Power HAL za pomocą GAME i GAME_LOADING

Aby korzystać z trybów GAMEGAME_LOADING, producenci OEM muszą dostosować implementację interfejsu Power HAL. Tryby GAMEGAME_LOADING nie są dostępne w implementacjach referencyjnych, dopóki nie zostanie opublikowana implementacja referencyjna na urządzeniu Google Pixel.

Aby zwiększyć wydajność w trybie GAMEGAME_LOADING, producenci OEM mogą wdrożyć kombinację tych działań:

  • Stabilizacja liczby klatek
  • Zwiększanie szybkości zegara procesora
  • Tymczasowo zmniejszyć ograniczanie temperatury
  • Przypisz wyższą priorytetyzację procesora aplikacji z grą na pierwszym planie
  • Zmniejsz moc procesora dostosowaną do zwykłych aplikacji, które nie są grami
  • Optymalizacja strategii rozdziału mocy związanej z termiką

Testowanie implementacji trybu gry

Aby przetestować implementację trybu GAME, użyj testów z prefiksem testGamePowerMode_ w pliku GameManagerServiceTests.java.

Testowanie implementacji GAME_LOADING

Aby przetestować implementację trybu GAME_LOADING, użyj android.gamemanager.cts.GameManagerTest#testSetGameContext. Ten test sprawdza, czy GameManager::setGameContext() w kontekście isLoading wywołuje tryb wczytywania gry w Power HAL w trybie wydajności.