หมึกกระดอง: การเร่งกราฟิกด้วย GPU

โหมดกราฟิกแบบเร่งของ Cuttlefish ใช้หน่วยประมวลผลกราฟิกจริง (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

ใช้โหมดกราฟิกแบบเร่ง

สตรีม GFX

หากต้องการใช้โหมดกราฟิกแบบเร่งของ 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 ในโฮสต์จะแปลการนำเสนอระดับกลางกลับไปยังการเรียก API ของ OpenGL