Tintenfisch: GPU-Grafikbeschleunigung

Der beschleunigte Grafikmodus von Cuttlefish nutzt die physische Grafikverarbeitungseinheit (GPU) Ihres Host-Computers zum Rendern, indem er Gast-Rendering-Befehle an Ihren Host-Computer weiterleitet, die Rendering-Befehlsaufrufe auf Ihrem Host-Computer ausführt und die gerenderten Ergebnisse an den Gast zurückgibt.

Standardmäßig wird das gastseitige Rendering (z. B. Benutzeroberfläche und Videowiedergabe) auf Ihrem Cuttlefish-Gerät von SwiftShader übernommen. SwiftShader ist eine Softwareimplementierung der OpenGL- und Vulkan-APIs. Da es sich bei SwiftShader um eine Software-Implementierung handelt, bietet es eine allgemein zugängliche Rendering-Lösung für Cuttlefish, die auf jedem Host-Computer ausgeführt werden kann.

Allerdings ist die Verwendung von SwiftShader nicht so leistungsstark wie ein normales Gerät. Das Rendern ist ein paralleles Problem, das massiv parallelisiert werden kann, da Pixelwerte unabhängig berechnet werden können. Grafikprozessoren (GPUs) sind Hardwareeinheiten, die dieses Problem lösen, indem sie das Rendering beschleunigen.

Anforderungen

Der beschleunigte Grafikmodus erfordert, dass der Host über Folgendes verfügt:

  • EGL-fähiger Treiber, der die Erweiterung GL_KHR_surfaceless_context unterstützt
  • OpenGL ES-fähiger Treiber
  • Vulkan-fähiger Treiber

Verwenden Sie beschleunigte Grafikmodi

GfxStream

Um den beschleunigten GfxStream-Grafikmodus zu verwenden, starten Sie Ihr lokales Cuttlefish-Gerät mit der Flagge --gpu_mode=gfxstream . In diesem Modus werden OpenGL- und Vulkan-API-Aufrufe direkt an den Host weitergeleitet.

launch_cvd --gpu_mode=gfxstream

Virgl

Um den beschleunigten Virgl-Grafikmodus zu verwenden, starten Sie Ihr lokales Cuttlefish-Gerät mit der Flagge --gpu_mode=drm_virgl .

launch_cvd --gpu_mode=drm_virgl

Bei Verwendung des beschleunigten Grafikmodus Virgl werden OpenGL-API-Aufrufe in eine Zwischendarstellung übersetzt (siehe Gallium3D ). Die Zwischendarstellung wird dem Host mitgeteilt und die Virglrenderer -Bibliothek auf dem Host übersetzt die Zwischendarstellung zurück in OpenGL-API-Aufrufe.