לסקיה, מנוע הגרפיקה הפתוח של גוגל, יש קצה אחורי של Vulkan Graphics API. קצה העורפי הזה עשוי לשמש לעיבוד ממשק המשתמש ב-Android Q ואילך.
הגרסה הגדולה הבאה של אנדרואיד, אנדרואיד 9, אמורה לצאת בחודש הבא למספר מכשירים. בניגוד לאנדרואיד אוראו, שם השיפורים העיקריים היו בעיקר מתחת למכסה המנוע, אנדרואיד P מציעה יותר תכונות הפונות למשתמש כמו ממשק המשתמש המחודש, מחוות ניווט ורווחה דיגיטלית תוך המשך העבודה על Project לְשַׁלֵשׁ. אבל מאחורי הקלעים, גוגל שיפצה את אופן הפעולה של עיבוד גרפי באנדרואיד. ב-Android Oreo, גוגל החלה לבדוק קצה אחורי מואץ בחומרה של OpenGL למנוע הגרפיקה Skia שהושלם ב-Android P. עם זאת, גוגל לא עוצרת שם, מכיוון שהחברה מתכננת ליישם את וולקן אחורי של מנוע הגרפיקה Skia שינחת באנדרואיד Q או במהדורה מאוחרת יותר.
הראיות לכך מגיעות מא תגובה הוגש על ידי מהנדס גוגל בקוד הפתוח Chromium Gerrit. ההערה מתייחסת לדוח באג על היישום הקרוב של Vulkan Graphics API עבור דפדפן Google Chrome באנדרואיד. ההערה מציינת כי מתישהו בעתיד "תהיה דרישה" ל-Vulkan API תמיכה ב-Android WebView כאשר המסגרת "[אנדרואיד] הולכת להתחיל להשתמש ב-Vulkan עבור HWUI."
עיבוד גרפי באנדרואיד
לידע רקע, Skia הוא מנוע גרפי דו-ממדי בקוד פתוח המשמש ב-Google Chrome, Chrome OS, Android, Flutter ופרויקטים גדולים אחרים. Skia הוא מנוע עיבוד גרפי המשמש בגרסאות מוקדמות של אנדרואיד לעיבוד נוף ו בַּד (השיעורים המשמשים לבניית וציור ממשק המשתמש ברוב האפליקציות.) Android 3.0 Honeycomb החליפה חלקית את Skia ב-HWUI, ספרייה הממירה פקודות קנבס לתוך פקודות OpenGL מואצות בחומרה, אם כי הספרייה הגרפית 2D Skia עדיין הייתה בשימוש באזורים מסוימים כמו נתיב רסטריזציה. במקביל, גוגל יצרה גם Backend של OpenGL עבור Skia. התוצאה היא שחלק מהשיחות הגרפיות יבוצעו לספריית Skia בעוד שאחרות יעברו ל-OpenGL backend. כדי לנקות את הארכיטקטורה הגרפית, גוגל החליטה ש-HWUI תדבר כעת עם Skia, שבעצמה מדברת עם ה-OpenGL האחורי המואצת בחומרה, כדי לבצע עיבוד ממשק משתמש. התוצאה היא שקריאות גרפיקה למסגרת ממשק המשתמש יעברו נתיב אחד ולא שניים.
חלקכם אולי זוכרים אפשרות למפתחים שנקראת "הגדר מעבד GPU" בתצוגות מקדימות למפתחים של אנדרואיד 8.0 אוראו. אפשרות מפתחים זו אפשרה לך לאלץ את HWUI להשתמש ב-Skia וב-OpenGL המואץ בחומרה כמעבד ה-GPU עבור מסגרת ממשק המשתמש. אפשרות המפתחים הוסרה מכיוון שהתנהגות זו היא כעת ברירת המחדל.
הצעד הבא של גוגל לשיפור העיבוד הגרפי הוא לעבור מ-backend מואץ בחומרה של OpenGL ל-backend מואץ בחומרה של Vulkan. זה בכלל לא מהלך בלתי צפוי ומהווה התקדמות הגיונית, אבל נחמד לראות שנעשית עבודה על שיפור העיבוד הגרפי באנדרואיד. למרות שהמהלך לא יתקן כל מקור של פיגור באנדרואיד, הוא אמור להפחית את זמני רינדור הפריימים על ידי צמצום העיבוד שנעשה על ידי ה-CPU. בהתחשב בעובדה שזו עבודה בתהליך (זה לא גמור באנדרואיד P), אנו מצפים שהוא יושק עם אנדרואיד Q או מהדורת אנדרואיד עתידית אחרת.
תצוגה מקדימה של השימוש ב-Vulkan Graphics API לעיבוד ממשק המשתמש
למעשה זה אפשרי לבדוק את ה-Vulkan backend עבור Skia ב-Android P עכשיו. יש פרמטר ניפוי באגים שאתה יכול להגדיר כדי לאלץ את אנדרואיד להשתמש בצינור Skia Vulkan. כל שעליך לעשות הוא לאתחל מחדש לאחר הוספת השורה הבאה ל-/system/build.prop:
debug.hwui.renderer=skiavk
הוספת שורה זו במכשיר המריץ אנדרואיד אוראו תגרום לקריסה, ולכן איננו ממליצים עליה. בעוד שהמכשיר שלך יאתחל עם הדגל הזה ב-Android P, זה די באגי כרגע. ה-Google Pixel Launcher לרוב לא מצליח להציג רקע כלשהו, סרטוני אנימציה בהגדרות לא מצליחים להיטען, ויש כמה תקלות גרפיות בשורת המצב וההתראות. חוץ מזה, נראה שרוב האפליקציות, אפילו סרטוני YouTube ומשחקים כמו Doodle Jump, נטענות בסדר גמור.
תודה רבה למפתח מוכר של XDA luca020400 על עזרתם בכתיבת מאמר זה, על מתן צילומי מסך המציגים את הקוד libhwui.so המפורק, ועל אספקת דגל ניפוי הבאגים לבדיקת ה-Vulkan backend.
מקור 1: Talkin' Treble: איך מהנדסי אנדרואיד מנצחים במלחמה בפיצול [ArsTechnica]
מקור 2: צינור גרפיקה של אנדרואיד: מכפתור ל-Framebuffer [בלוג inovex]
מקור 3: דף אינטרנט של Skia [גוגל]
מקור 4: הערות מאת Romain Guy, Android Graphics & Kotlin @ Google [Reddit]