โหมดกราฟิกเร่งของหมึกกระดองจะใช้ทรัพยากรจริงของอุปกรณ์โฮสต์ หน่วยประมวลผลกราฟิก (GPU) สำหรับการแสดงภาพโดยการส่งคำสั่งการแสดงผลของผู้เข้าร่วม ไปยังเครื่องโฮสต์ โดยเรียกใช้คำสั่งการแสดงผลในเครื่องโฮสต์ และส่งผลลัพธ์ที่แสดงไปให้ผู้เข้าร่วม
อุปกรณ์หมึกกระดองที่ใช้ Android 11 ขึ้นไป จะตรวจหาและใช้กราฟิกแบบเร่ง หากเครื่องโฮสต์ไม่รองรับ กราฟิกแบบเร่งหรือเวอร์ชัน Android คือ Android 10 หรือต่ำกว่า การแสดงผลฝั่งผู้มาเยือน (เช่น UI และการเล่นวิดีโอ) ในอุปกรณ์ Cuttlefish จะได้รับการจัดการโดย SwiftShader SwiftShader เป็นการใช้งานซอฟต์แวร์ของ API ของ OpenGL และ Vulkan เนื่องจาก SwiftShader เป็นการใช้งานซอฟต์แวร์ จึงมีโซลูชันการแสดงผลที่เข้าถึงได้ทั่วโลกสำหรับ Cuttlefish ซึ่งสามารถทำงานบนเครื่องโฮสต์เครื่องใดก็ได้
อย่างไรก็ตาม การใช้ SwiftShader จะไม่มีประสิทธิภาพเท่าอุปกรณ์ปกติ การแสดงผลเป็นปัญหาแบบขนานที่สามารถทำงานแบบขนานได้จำนวนมาก เนื่องจากสามารถคํานวณค่าพิกเซลแยกกันได้ หน่วยประมวลผลกราฟิก (GPU) คือหน่วยฮาร์ดแวร์ที่แก้ปัญหานี้โดยการเร่งการแสดงผล
ข้อกำหนด
โหมดกราฟิกแบบเร่งกำหนดให้โฮสต์มีคุณสมบัติดังนี้
- ไดรเวอร์ที่รองรับ EGL ที่รองรับส่วนขยาย
GL_KHR_surfaceless_context
- ไดรเวอร์ที่ใช้ OpenGL ES ได้
- ไดรเวอร์ที่รองรับ Vulkan
ใช้โหมดกราฟิกที่เร่ง
GfxStream
หากต้องการใช้โหมดกราฟิกที่เร่งด้วย GfxStream ให้เปิดอุปกรณ์ Cuttlefish ในพื้นที่ด้วย Flag --gpu_mode=gfxstream
การใช้โหมดนี้ OpenGL และ Vulkan
ระบบจะส่งต่อการเรียก API ไปยังโฮสต์โดยตรง
launch_cvd --gpu_mode=gfxstream
Virgl
หากต้องการใช้โหมดกราฟิกที่เร่งด้วย Virgl ให้เปิดอุปกรณ์ Cuttlefish ในพื้นที่ด้วย Flag --gpu_mode=drm_virgl
launch_cvd --gpu_mode=drm_virgl
เมื่อใช้โหมดกราฟิกแบบเร่งของ Virgl ระบบจะแปลการเรียก OpenGL API ไว้ในการเป็นตัวแทนระดับกลาง (ดู Gallium3D) ระบบจะสื่อสารการแสดงผลระดับกลางไปยังโฮสต์ และไลบรารี virglrenderer ในโฮสต์จะแปลการแสดงผลระดับกลางกลับเป็นการเรียก OpenGL API