Cuttlefish 的加速图形模式使用主机物理图形处理器 (GPU) 进行渲染,方法是将访客渲染命令传递到您的主机,在主机上运行渲染命令调用,并将渲染结果传递回访客。
在 Android 11 或更高版本中运行的 Cuttlefish 设备会检测并使用加速图形。如果主机不支持加速图形,或者 Android 版本是 Android 10 或更低版本,则 Cuttlefish 设备中的访客端渲染(例如,界面和视频播放)由 SwiftShader 处理。SwiftShader 是 OpenGL 和 Vulkan API 的软件实现。由于 SwiftShader 是软件实现,因此它为 Cuttlefish 提供了普遍可访问的渲染解决方案,能够在任何主机上运行。
但是,使用 SwiftShader 的性能不如普通设备。渲染是一个可以大规模并行化的并行问题,因为像素值可以独立计算。图形处理器 (GPU) 是通过加速渲染来解决此问题的硬件单元。
要求
加速图形模式要求主机具有
- 支持
GL_KHR_surfaceless_context
扩展程序的 EGL 功能驱动程序 - OpenGL ES 功能驱动程序
- Vulkan 功能驱动程序
使用加速图形模式
GfxStream
要使用 GfxStream 加速图形模式,请使用 --gpu_mode=gfxstream
标志启动本地 Cuttlefish 设备。使用此模式,OpenGL 和 Vulkan API 调用将直接转发到主机。
launch_cvd --gpu_mode=gfxstream
Virgl
要使用 Virgl 加速图形模式,请使用 --gpu_mode=drm_virgl
标志启动本地 Cuttlefish 设备。
launch_cvd --gpu_mode=drm_virgl
使用 Virgl 加速图形模式时,OpenGL API 调用会转换为中间表示形式(请参阅 Gallium3D)。中间表示形式会传达给主机,主机上的 virglrenderer 库会将中间表示形式转换回 OpenGL API 调用。