במצב הגרפיקה המואצת של 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, מפעילים את מכשיר ה-Cuttlefish המקומי באמצעות הדגל --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.