Sepia: aceleración de gráficos GPU

El modo de gráficos acelerados de Cuttlefish utiliza la unidad física de procesamiento de gráficos (GPU) de su máquina host para renderizar pasando comandos de renderizado del invitado a su máquina host, ejecutando las llamadas de comandos de renderizado en su máquina host y pasando los resultados renderizados al invitado.

De forma predeterminada, SwiftShader maneja la representación del lado invitado (por ejemplo, UI y reproducción de video) en su dispositivo Cuttlefish. SwiftShader es una implementación de software de las API OpenGL y Vulkan. Debido a que SwiftShader es una implementación de software, proporciona una solución de renderizado universalmente accesible para Cuttlefish capaz de ejecutarse en cualquier máquina host.

Sin embargo, usar SwiftShader no tiene tanto rendimiento como un dispositivo normal. El renderizado es un problema paralelo que puede paralelizarse masivamente, ya que los valores de los píxeles se pueden calcular de forma independiente. Las unidades de procesamiento de gráficos (GPU) son unidades de hardware que abordan este problema acelerando el renderizado.

Requisitos

El modo de gráficos acelerados requiere que el host tenga:

  • Controlador con capacidad EGL que admite la extensión GL_KHR_surfaceless_context
  • Controlador compatible con OpenGL ES
  • Conductor capaz de Vulkan

Utilice modos de gráficos acelerados

GfxStream

Para utilizar el modo de gráficos acelerados de GfxStream, inicie su dispositivo Cuttlefish local con el indicador --gpu_mode=gfxstream . Al utilizar este modo, las llamadas API de OpenGL y Vulkan se reenvían directamente al host.

launch_cvd --gpu_mode=gfxstream

virgl

Para utilizar el modo de gráficos acelerados de Virgl, inicie su dispositivo Cuttlefish local con la bandera --gpu_mode=drm_virgl .

launch_cvd --gpu_mode=drm_virgl

Cuando se utiliza el modo de gráficos acelerados de Virgl, las llamadas a la API de OpenGL se traducen a una representación intermedia (consulte Gallium3D ). La representación intermedia se comunica al host y la biblioteca virglrenderer en el host traduce la representación intermedia a llamadas API OpenGL.