โหมดกราฟิกแบบเร่งความเร็วของ Cuttlefish ใช้หน่วยประมวลผลกราฟิกทางกายภาพ (GPU) ของเครื่องโฮสต์ของคุณสำหรับการเรนเดอร์โดยการส่งคำสั่งการเรนเดอร์แบบเกสต์ไปยังเครื่องโฮสต์ของคุณ การรันคำสั่งการเรนเดอร์จะเรียกบนเครื่องโฮสต์ของคุณ และส่งผลลัพธ์ที่เรนเดอร์กลับไปยังเกสต์
ตามค่าเริ่มต้น การเรนเดอร์ฝั่งแขก (เช่น UI และการเล่นวิดีโอ) ในอุปกรณ์ Cuttlefish ของคุณจะถูกจัดการโดย SwiftShader SwiftShader เป็นการใช้งานซอฟต์แวร์ของ OpenGL และ Vulkan API เนื่องจาก SwiftShader เป็นการปรับใช้ซอฟต์แวร์ จึงมอบโซลูชันการเรนเดอร์ที่เข้าถึงได้ในระดับสากลสำหรับ Cuttlefish ที่สามารถทำงานบนเครื่องโฮสต์ใดก็ได้
อย่างไรก็ตาม การใช้ 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