Каракатица: графическое ускорение с помощью графического процессора

Ускоренный графический режим 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.

,

Ускоренный графический режим 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.