ปลาหมึก: การเร่งความเร็วกราฟิก GPU

โหมดกราฟิกแบบเร่งความเร็วของ 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