Sotong: Akselerasi grafis GPU

Mode grafis yang diakselerasi Cuttlefish menggunakan unit pemrosesan grafis (GPU) fisik mesin host Anda untuk rendering dengan meneruskan perintah rendering tamu ke mesin host, menjalankan panggilan perintah rendering di mesin host, dan meneruskan hasil yang dirender kembali ke tamu.

Perangkat Cuttlefish yang berjalan di Android 11 atau lebih tinggi mendeteksi dan menggunakan grafis yang dipercepat. Jika mesin host tidak mendukung grafik yang dipercepat atau versi Android adalah Android 10 atau yang lebih rendah, rendering sisi tamu (misalnya, UI dan pemutaran video) di perangkat Cuttlefish Anda ditangani oleh SwiftShader. SwiftShader adalah implementasi software OpenGL dan Vulkan API. Karena SwiftShader adalah implementasi software, SwiftShader menyediakan solusi rendering yang dapat diakses secara universal untuk Cuttlefish yang mampu berjalan di mesin host apa pun.

Namun, penggunaan SwiftShader tidak seperforma perangkat normal. Rendering adalah masalah paralel yang dapat diparalelkan secara masif, karena nilai piksel dapat dihitung secara independen. Unit pemrosesan grafis (GPU) adalah unit hardware yang mengatasi masalah ini dengan mempercepat rendering.

Persyaratan

Mode grafis yang dipercepat mengharuskan host memiliki:

  • Driver yang mendukung EGL yang mendukung ekstensi GL_KHR_surfaceless_context
  • Driver yang kompatibel dengan OpenGL ES
  • Driver yang kompatibel dengan Vulkan

Menggunakan mode grafis yang dipercepat

GfxStream

Untuk menggunakan mode grafis akselerasi GfxStream, luncurkan perangkat Cuttlefish lokal dengan tanda --gpu_mode=gfxstream. Dengan mode ini, panggilan API OpenGL dan Vulkan diteruskan langsung ke host.

launch_cvd --gpu_mode=gfxstream

Virgl

Untuk menggunakan mode grafis akselerasi Virgl, luncurkan perangkat Cuttlefish lokal Anda dengan flag --gpu_mode=drm_virgl.

launch_cvd --gpu_mode=drm_virgl

Saat menggunakan mode grafis yang dipercepat Virgl, panggilan OpenGL API akan diterjemahkan menjadi representasi perantara (lihat Gallium3D). Representasi menengah dikomunikasikan ke host dan library virglrenderer pada host akan menerjemahkan representasi perantara kembali ke panggilan OpenGL API.