שיפור הביצועים של משחקים

החל מ-Android 14, מצב הפעלה חדש שנקרא GAME במסגרת הביצועים הדינמיים של Android (ADPF) מאפשר התאמה אישית של ביצועי הטלפון בזמן השימוש במשחק. GAME מציין ל-Power HAL שאפליקציית משחק נמצאת בחזית. האינדיקציה הזו מאפשרת ל-Power HAL לאמץ אסטרטגיות לניהול צריכת חשמל בזמן שמשחקים במשחק, כדי שהמשתמשים ייהנו מביצועים יציבים ומשופרים.

כדי לשפר את זמן הטעינה של המשחק, ב-Android 13 מופיע מצב צריכת אנרגיה חדש בשם GAME_LOADING ב-ADPF. GAME_LOADING מציין אם אפליקציית משחק נמצאת במצב טעינת נתונים, כדי ש-Power HAL יוכל לספק שיפור בביצועי הטעינה. ההנחיה הזו מאפשרת ל-Power HAL לספק אמצעים לשיפור הביצועים שיכולים לזרז את זמן הטעינה של המשחק.

בדף הזה נסביר איך אפליקציית המשחק מעבירה את מצב המשחק ל-Power HAL, איך מגדירים את Power HAL כדי לנצל אותו במכשירים, ואיך בודקים את ההטמעה של Power HAL.

זיהוי של מצב צריכת אנרגיה והתראות לגבי מצב צריכת אנרגיה

בקטע הזה נסביר איך מנהל הסוללה מטפל במצבים GAME ו-GAME_LOADING.

מצב צריכת אנרגיה במשחק

מצב ההפעלה החדש GAME ב-Android 14 מציין ל-Power Manager שהמשתמש משחק במשחק. כש-HAL של החשמל מקבל הודעה על המצב GAME, הוא יכול לשנות את רמת החשמל כדי לשפר את הביצועים, להוריד את הטמפרטורה ולהאריך את חיי הסוללה בזמן המשחק.

בתרשים הבא מוסבר תהליך העברת המידע ל-Power HAL כדי לציין את מצב האנרגיה GAME:

game-mode

איור 1. זרימת מידע שמציינת שמתבצע משחק.

מצב האנרגיה GAME תמיד מוגדר לאפליקציות עם הערך appCategory של GAME בקובץ AndroidManifest.xml.

מצב צריכת החשמל GAME_LOADING

מצב האצת הטעינה פועל על ידי זיהוי של אפליקציית משחק במצב טעינה, והעברת הודעה ל-Power HAL. ב-Android 13 מופיע מצב משחק חדש בשם isLoading בממשק ה-API למפתחים. במצב המשחק הזה נעשה שימוש במצב האנרגיה החדש GAME_LOADING בשירות Power Manager כדי להודיע ל-HAL של האנרגיה על מצב המשחק ברמה העליונה. אחרי ש-Power HAL מקבל הודעה על מצב הטעינה של המשחק, הוא יכול לשנות את הגדרות הביצועים של הפלטפורמה ואת קצב השעון של המעבד, וכך לשפר את זמני הטעינה.

כדי לציין שמשחק נטען, אפליקציית המשחק משתמשת במרכז בקרת המשחקים כדי להגדיר מצב isLoading במנהל המשחקים. מנהל המשחקים מעביר את המצב הזה לשירות של מנהל המשחקים, שמשתמש ב-setPowerMode עם מצב ההפעלה החדש GAME_LOADING כדי להפעיל את שירות מנהל ההפעלה. מצב האנרגיה GAME_LOADING מציין ל-Power HAL שהמשחק נמצא במצב טעינה, כדי ש-Power HAL יוכל לספק שיפור בטעינה.

באיור הבא מוסבר תהליך העברת המידע מהאפליקציה ל-HAL של Power כדי לציין את סטטוס הטעינה:

loading-boost

איור 2. תהליך העברת מידע שמציין שמשחק נמצא במצב טעינה.

מרכז בקרת המשחקים מאפשר למשתמשים להפעיל או להשבית את תכונת שיפור הטעינה באמצעות הגדרת הביצועים. הגדרת הביצועים תמיד מוגדרת כברירת מחדל כמושבתת.

התאמה אישית של Power HAL באמצעות GAME ו-GAME_LOADING

כדי לנצל את היתרונות של המצבים GAME ו-GAME_LOADING, יצרני ציוד מקורי צריכים להתאים אישית את ההטמעה שלהם של Power HAL. מאחר שניהול צריכת החשמל ושיפור הביצועים תלויים בחומרה, לא יהיו הטמעות עזר למצבים GAME או GAME_LOADING עד שתפורסם הטמעת עזר למכשיר Google Pixel.

כדי לשפר את הביצועים במצב GAME ו-GAME_LOADING, יצרני ציוד מקורי יכולים להטמיע שילוב של הפעולות הבאות:

  • לייצב את קצב הפריימים
  • הגברת מהירות שעון המעבד
  • הפחתה זמנית של הגבלת הביצועים עקב טמפרטורה
  • הקצאת עדיפות גבוהה יותר ל-CPU לאפליקציית המשחק בחזית
  • הפחתת ההספק המוגבר של המעבד (CPU) מותאם לאפליקציות רגילות, לא משחקים
  • אופטימיזציה של אסטרטגיית חלוקת ההספק הקשורה לחום

בדיקת ההטמעה של מצב משחק

כדי לבדוק את ההטמעה של מצב GAME, משתמשים בבדיקות עם הקידומת testGamePowerMode_ ב-GameManagerServiceTests.java.

בדיקת ההטמעה של GAME_LOADING

כדי לבדוק את ההטמעה של מצב GAME_LOADING, צריך להשתמש ב-android.gamemanager.cts.GameManagerTest#testSetGameContext. הבדיקה הזו מוודאת אם GameManager::setGameContext() עם הקשר isLoading מפעיל את מצב הטעינה של המשחק ב-Power HAL במצב ביצועים.