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

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

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

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

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

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

מצב צריכת חשמל במשחק

מצב האנרגיה החדש GAME ב-Android 14 מציין לשירות ניהול האנרגיה שהמשתמש משחק במשחק. כש-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 במצב ביצועים.