В режиме ускоренной графики Cuttlefish для рендеринга используется физический графический процессор (GPU) вашей хост-машины. Он передает команды рендеринга гостевой системы на вашу хост-машину, выполняет вызовы команд рендеринга на вашей хост-машине и передает результаты рендеринга обратно гостевой системе.
Устройство Cuttlefish под управлением Android 11 или выше обнаруживает и использует ускоренную графику. Если хост-машина не поддерживает ускоренную графику или версия Android — Android 10 или ниже, рендеринг на стороне гостевой системы (например, пользовательский интерфейс и воспроизведение видео) на вашем устройстве Cuttlefish обрабатывается SwiftShader. SwiftShader — это программная реализация API OpenGL и Vulkan. Поскольку SwiftShader является программной реализацией, он предоставляет универсальное решение для рендеринга в Cuttlefish, способное работать на любой хост-машине.
Однако использование SwiftShader не обеспечивает такой же производительности, как на обычном устройстве. Рендеринг — это параллельная задача, которую можно значительно распараллелить, поскольку значения пикселей могут вычисляться независимо. Графические процессоры (GPU) — это аппаратные устройства, которые решают эту проблему, ускоряя рендеринг.
Требования
Для работы в режиме ускоренной графики на хост-системе должны быть установлены следующие компоненты:
- Драйвер, поддерживающий EGL и расширение
GL_KHR_surfaceless_context - Драйвер, поддерживающий OpenGL ES
- драйвер, поддерживающий Vulkan
Используйте ускоренные графические режимы
GfxStream
Для использования графического ускорения GfxStream запустите локальное устройство Cuttlefish с флагом --gpu_mode=gfxstream . В этом режиме вызовы API OpenGL и Vulkan перенаправляются непосредственно на хост.
launch_cvd --gpu_mode=gfxstream
Виргл
Для использования графического ускорения Virgl запустите локальное устройство Cuttlefish с флагом --gpu_mode=drm_virgl .
launch_cvd --gpu_mode=drm_virgl
При использовании графического режима ускорения Virgl вызовы API OpenGL преобразуются в промежуточное представление (см. Gallium3D ). Это промежуточное представление передается на хост, и библиотека virglrenderer на хосте преобразует его обратно в вызовы API OpenGL.