Zwiększenie wydajności w przypadku gier

W Androidzie 14 wprowadzono nowy tryb zasilania o nazwie GAME w ramach Android Dynamic Performance Framework (ADPF), który umożliwia dostosowanie wydajności telefonu podczas grania. Tryb GAME informuje Power HAL, że aplikacja do gier jest na pierwszym planie. Dzięki temu Power HAL może stosować strategie zarządzania energią podczas grania, co zapewnia użytkownikowi stabilną i lepszą wydajność.

Aby skrócić czas wczytywania gry, w Androidzie 13 wprowadzono nowy tryb zasilania o nazwie GAME_LOADING w ADPF. Tryb GAME_LOADING informuje, czy aplikacja do gier jest w stanie wczytywania, dzięki czemu Power HAL może zapewnić przyspieszenie wczytywania. Dzięki temu Power HAL może stosować środki zwiększające wydajność, które mogą przyspieszyć wczytywanie gry.

Z tej strony dowiesz się, jak aplikacja do gier przekazuje stan gry do Power HAL, jak skonfigurować Power HAL, aby korzystać z niego na swoich urządzeniach, oraz jak przetestować implementację Power HAL.

Wykrywanie trybu zasilania i powiadomienia

W tej sekcji opisujemy, jak Menedżer zasilania obsługuje tryby GAME i GAME_LOADING.

Tryb zasilania GAME

Nowy tryb zasilania GAME w Androidzie 14 informuje usługę Menedżera zasilania , że użytkownik gra. Gdy 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.

Na ilustracji poniżej przedstawiono przepływ informacji do Power HAL, który wskazuje tryb zasilania GAME:

game-mode

Rysunek 1. Przepływ informacji wskazujący, że trwa gra.

Tryb zasilania GAME jest zawsze ustawiany w przypadku aplikacji z wartością appCategory GAME w polu AndroidManifest.xml.

Tryb zasilania GAME_LOADING

Tryb przyspieszenia wczytywania działa przez wykrywanie, kiedy aplikacja do gier jest w stanie wczytywania, i powiadamianie o tym Power HAL. W Androidzie 13 wprowadzono nowy stan gry o nazwie isLoading w interfejsie API dla deweloperów. Ten stan gry używa nowego GAME_LOADING trybu zasilania w usłudze Menedżera zasilania, aby powiadomić Power HAL o stanie gry najwyższego poziomu. Gdy Power HAL otrzyma powiadomienie o stanie wczytywania gry, może dostosować ustawienia wydajności platformy i szybkość zegara procesora, co skutkuje krótszym czasem wczytywania.

Aby wskazać, że gra się wczytuje, aplikacja do gier używa panelu gier do ustawienia isLoading stanu w Menedżerze gier. Menedżer gier przekazuje ten stan do usługi Menedżera gier, która używa setPowerMode z nowym GAME_LOADING trybem zasilania, aby wywołać usługę Menedżera zasilania. Tryb zasilania GAME_LOADING informuje Power HAL, że gra jest w stanie wczytywania, dzięki czemu Power HAL może zapewnić przyspieszenie wczytywania.

Na ilustracji poniżej przedstawiono przepływ informacji z aplikacji do Power HAL, który wskazuje stan wczytywania:

loading-boost

Rysunek 2. Przepływ informacji wskazujący, że gra jest w stanie wczytywania.

Panel gier umożliwia użytkownikom włączanie i wyłączanie funkcji przyspieszenia wczytywania za pomocą ustawienia wydajności. Ustawienie wydajności jest domyślnie wyłączone.

Dostosowywanie Power HAL za pomocą trybów GAME i GAME_LOADING

Aby korzystać z trybów GAME i GAME_LOADING, producenci OEM muszą dostosować implementację Power HAL. Ponieważ zarządzanie energią i zwiększanie wydajności zależą od sprzętu, implementacje referencyjne trybów GAME i GAME_LOADING nie są dostępne do czasu udostępnienia implementacji referencyjnej dla urządzenia Google Pixel.

Aby zwiększyć wydajność w trybach GAME i GAME_LOADING, producenci OEM mogą wdrożyć kombinację tych środków:

  • Stabilizowanie liczby klatek
  • Zwiększ taktowanie procesora
  • Tymczasowe zmniejszanie ograniczania termicznego
  • Przypisywanie wyższego priorytetu procesora do aplikacji do gier na pierwszym planie
  • Zmniejszanie przyspieszenia procesora dostosowanego do zwykłych aplikacji innych niż gry
  • Optymalizowanie strategii dystrybucji energii związanej z temperaturą

Testowanie implementacji trybu GAME

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

Testowanie implementacji trybu GAME_LOADING

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