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.