Mątwy: akceleracja grafiki GPU

Tryb przyspieszonej grafiki mątwy wykorzystuje fizyczny procesor graficzny (GPU) komputera hosta do renderowania, przekazując polecenia renderowania gościa do komputera hosta, uruchamiając wywołania poleceń renderowania na komputerze hosta i przekazując wyrenderowane wyniki z powrotem do gościa.

Domyślnie renderowanie po stronie gościa (na przykład interfejs użytkownika i odtwarzanie wideo) na urządzeniu Cuttlefish jest obsługiwane przez SwiftShader. SwiftShader to programowa implementacja interfejsów API OpenGL i Vulkan. Ponieważ SwiftShader jest implementacją oprogramowania, zapewnia powszechnie dostępne rozwiązanie do renderowania dla mątwy, które może działać na dowolnym komputerze hosta.

Jednak korzystanie z SwiftShader nie jest tak wydajne jak w przypadku normalnego urządzenia. Renderowanie to problem równoległy, który można masowo zrównoleglić, ponieważ wartości pikseli można obliczać niezależnie. Jednostki przetwarzania grafiki (GPU) to jednostki sprzętowe, które rozwiązują ten problem, przyspieszając renderowanie.

Wymagania

Przyspieszony tryb graficzny wymaga, aby host posiadał:

  • Sterownik obsługujący EGL obsługujący rozszerzenie GL_KHR_surfaceless_context
  • Sterownik obsługujący OpenGL ES
  • Kierowca zdolny do Vulkana

Użyj przyspieszonych trybów graficznych

GfxStream

Aby skorzystać z przyspieszonego trybu graficznego GfxStream, uruchom lokalne urządzenie Cuttlefish z flagą --gpu_mode=gfxstream . W tym trybie wywołania OpenGL i Vulkan API są przekazywane bezpośrednio do hosta.

launch_cvd --gpu_mode=gfxstream

Virgl

Aby skorzystać z przyspieszonego trybu graficznego Virgl, uruchom lokalne urządzenie Cuttlefish z flagą --gpu_mode=drm_virgl .

launch_cvd --gpu_mode=drm_virgl

Podczas korzystania z przyspieszonego trybu graficznego Virgl wywołania API OpenGL są tłumaczone na reprezentację pośrednią (patrz Gallium3D ). Reprezentacja pośrednia jest przekazywana do hosta, a biblioteka virglrenderer na hoście tłumaczy tę reprezentację z powrotem na wywołania API OpenGL.