Cuttlefish:GPU 圖形加速

Cuttlefish 的加速圖形模式使用主機的實體圖形處理單元 (GPU) 進行渲染,方法是將客戶機渲染命令傳遞到主機,在主機上執行渲染命令調用,然後將渲染結果傳回給客戶機。

預設情況下,Cuttlefish 裝置中的來賓端渲染(例如 UI 和視訊播放)由 SwiftShader 處理。 SwiftShader 是 OpenGL 和 Vulkan API 的軟體實作。由於 SwiftShader 是一種軟體實現,因此它為 Cuttlefish 提供了一個能夠在任何主機上運行的通用渲染解決方案。

但是,使用 SwiftShader 的效能不如普通設備。渲染是一個可以大規模並行化的平行問題,因為像素值可以獨立計算。圖形處理單元 (GPU) 是透過加速渲染來解決此問題的硬體單元。

要求

圖形加速模式要求主機具備:

  • 支援GL_KHR_surfaceless_context擴充功能的 EGL 驅動程式
  • 支援 OpenGL ES 的驅動程式
  • 支援 Vulkan 的驅動程式

使用加速圖形模式

GFX串流

若要使用 GfxStream 加速圖形模式,請使用--gpu_mode=gfxstream標誌啟動本機 Cuttlefish 裝置。使用此模式,OpenGL 和 Vulkan API 呼叫將直接轉送到主機。

launch_cvd --gpu_mode=gfxstream

維爾格爾

若要使用 Virgl 加速圖形模式,請使用--gpu_mode=drm_virgl標誌啟動本機 Cuttlefish 裝置。

launch_cvd --gpu_mode=drm_virgl

當使用 Virgl 加速圖形模式時,OpenGL API 呼叫會轉換為中間表示(請參閱Gallium3D )。中間表示被傳送到主機,主機上的virglrenderer庫將中間表示轉換回 OpenGL API 呼叫。