Sotong: Akselerasi grafis GPU

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

Perangkat Cuttlefish yang berjalan di Android 11 atau lebih tinggi mendeteksi dan menggunakan grafis yang dipercepat. Jika mesin host tidak mendukung grafis yang dipercepat atau versi Android menggunakan Android 10 atau yang lebih rendah, rendering sisi tamu (misalnya, pemutaran video dan UI) di perangkat Cuttlefish ditangani oleh SwiftShader. SwiftShader adalah implementasi software dari OpenGL API dan Vulkan. 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 sebaik perangkat biasa. Rendering adalah masalah paralel yang dapat diparalelkan secara besar-besaran, karena nilai piksel dapat dikomputasi secara terpisah. 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 mendukung OpenGL ES
  • Driver yang mendukung Vulkan

Menggunakan mode grafis yang dipercepat

GfxStream

Untuk menggunakan mode grafis akselerasi GfxStream, luncurkan perangkat Cuttlefish lokal dengan tanda --gpu_mode=gfxstream. Dengan menggunakan mode ini, panggilan OpenGL dan Vulkan API 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.