במצב הגרפיקה המואצת של Cuttlefish, המערכת משתמשת במעבד הגרפי (GPU) הפיזי של המכונה המארחת לצורך עיבוד, על ידי העברת פקודות העיבוד של האורח למכונה המארחת, הפעלת הקריאות של פקודות העיבוד במכונה המארחת והעברת התוצאות שעברו עיבוד חזרה לאורחים.
מכשיר דיונון שפועלת ב-Android 11 ואילך מזהה ומשתמש בגרפיקה מואצת. אם המחשב המארח לא תומך בגרפיקה מואצת, או שגרסת Android היא Android 10 ומטה, הרינדור בצד האורח (לדוגמה, הפעלת ממשק משתמש ווידאו) במכשיר ה-Cuttlefish יטופל על ידי SwiftShader. SwiftShader היא הטמעת תוכנה של ממשקי OpenGL ו-Vulkan API. מכיוון ש-SwiftShader הוא הטמעת תוכנה, הוא מספק פתרון עיבוד שנגיש לכולם עבור דיונון שיכול לפעול בכל מכונה מארחת.
עם זאת, הביצועים של SwiftShader נמוכים יותר מאשר הביצועים של מכשיר רגיל. רינדור הוא בעיה מקבילה שעשויה להיות מקבילה להדרגתית, כי אפשר לחשב את ערכי הפיקסלים בנפרד. מעבדים גרפיים (GPU) הם יחידות חומרה שמטפלות בבעיה הזו על ידי האצת הרינדור.
הדרישות
מצב גרפיקה מואצת מחייב שהמארח:
- מנהל התקן עם תמיכה ב-EGL שתומך בתוסף
GL_KHR_surfaceless_context
- מנהל התקן עם OpenGL ES
- מנהל התקן עם תמיכה ב-Vulkan
שימוש במצבי גרפיקה מואצת
GfxStream
כדי להשתמש במצב הגרפיקה המואצת של GfxStream, מפעילים את מכשיר הדיונון המקומי באמצעות הדגל --gpu_mode=gfxstream
. במצב הזה, קריאות ל-OpenGL ול-Vulkan API מועברות ישירות למארח.
launch_cvd --gpu_mode=gfxstream
וירגל
כדי להשתמש במצב הגרפיקה המואץ של Virgl, מפעילים את מכשיר Cuttlefish המקומי עם הדגל --gpu_mode=drm_virgl
.
launch_cvd --gpu_mode=drm_virgl
במצב הגרפיקה המואצת של Virgl, הקריאות ל-OpenGL API מתורגמות לייצוג ביניים (ראו Gallium3D). הייצוג הביניים מועבר למארח, וספריית virglrenderer במארח מתרגמת את ייצוג הביניים חזרה לקריאות ל-OpenGL API.