vr_module Odniesienie do struktury

vr_module Odniesienie do struktury

#include < vr.h >

Pola danych

struktura hw_module_t wspólny
próżnia(* init )(struktura vr_module *moduł)
próżnia(* set_vr_mode )(struct vr_module *moduł, bool włączony)
próżnia * zarezerwowane [8-2]

szczegółowy opis

Zaimplementuj tę warstwę HAL, aby otrzymywać wywołania zwrotne, gdy używana jest aplikacja rzeczywistości wirtualnej (VR). Aplikacje VR charakteryzują się szeregiem specjalnych wymagań dotyczących wyświetlania i wydajności, w tym:

  • Niskie opóźnienie czujnika — całkowite opóźnienie między IMU, akcelerometrem i żyroskopem a wywołaniem zwrotnym widocznym dla aplikacji musi być wyjątkowo niskie (zwykle < 5 ms). Jest to wymagane do obsługi czujnika HIFI.
  • Niskie opóźnienie wyświetlania — całkowite opóźnienie między wywołaniami rysowania GPU a rzeczywistą aktualizacją wyświetlacza musi być możliwie najniższe. Osiąga się to poprzez użycie SurfaceFlingera w trybie pojedynczego bufora i zapewnienie, że wywołania rysowania są prawidłowo zsynchronizowane ze skanowaniem wyświetlacza. To zachowanie jest ujawniane poprzez rozszerzenie EGL w aplikacjach. Poniżej znajdziesz potrzebne do tego rozszerzenia EGL.
  • Wyświetlacz o niskiej trwałości — ustawienia trwałości wyświetlania muszą być ustawione na możliwie najniższym poziomie, przy jednoczesnym zachowaniu rozsądnej jasności. W przypadku typowego wyświetlacza pracującego z częstotliwością 60 Hz piksele powinny świecić przez <= 3,5 ms, aby można je było uznać za mało trwałe. Pozwala to uniknąć efektu ducha podczas ruchów w ustawieniu VR i powinno być włączone z poziomu świateł.h HAL, gdy ustawiono BRIGHTNESS_MODE_LOW_PERSISTENCE.
  • Stała wydajność procesora graficznego i procesora — w przypadku mieszanego obciążenia procesora graficznego/procesora dla aplikacji VR z seriami pracy w regularnych odstępach czasu, kilka razy na klatkę, planowanie procesora powinno zapewniać spójne działanie wątku renderowania aplikacji w ciągu 1 ms od momentu zaplanowane i zakończone przed końcem okna losowania. W tym celu pojedynczy rdzeń procesora musi być zarezerwowany wyłącznie dla wątku renderowania aktualnie uruchomionej aplikacji VR w trybie VR i udostępniony w zestawie procesora „najwyższej aplikacji”. Podobnie należy zachować odpowiednią częstotliwość taktowania procesora, procesora graficznego i magistrali, aby zapewnić zakończenie renderowania w czasie przeznaczonym na renderowanie każdej klatki, gdy flaga POWER_HINT_SUSTAINED_PERFORMANCE została ustawiona w power.h HAL w trybie VR, gdy urządzenie jest nie jest dławiony termicznie.
  • Muszą być obecne wymagane rozszerzenia EGL — wymagane są wszelkie ustawienia GPU wymagane do umożliwienia powyższych możliwości, w tym rozszerzenia EGL: EGL_ANDROID_create_native_client_buffer, EGL_ANDROID_front_buffer_auto_refresh, EGL_EXT_protected_content, EGL_KHR_mutable_render_buffer, EGL_KHR_reusable_sync i EGL_KHR_wait_sync.
  • Dokładne raportowanie termiczne — dokładne temperatury i wartości graniczne muszą być zgłaszane w Thermal.h HAL. W szczególności należy dokładnie podać aktualną temperaturę skóry dla DEVICE_TEMPERATURE_SKIN, a parametr vr_throttling_threshold zgłoszony dla tego urządzenia musi dokładnie podawać limit temperatury, powyżej którego regulator termiczny urządzenia ogranicza częstotliwość taktowania procesora, karty graficznej i/lub magistrali poniżej minimum niezbędnego do zapewnienia stałej wydajności ( patrz poprzedni podpunkt).

Ogólnie rzecz biorąc, oczekuje się, że dostawcy wdrażający tę warstwę HAL będą używać set_vr_mode jako wskazówki umożliwiającej dostrojenie wydajności specyficznej dla VR potrzebnej do spełnienia któregokolwiek z powyższych wymagań oraz włączenie dowolnych funkcji urządzenia optymalnych dla trybów wyświetlania VR. Wywołanie set_vr_mode może po prostu nic nie zrobić, jeśli nie są dostępne żadne optymalizacje lub są one konieczne do spełnienia powyższych wymagań.

Żadne metody w tej warstwie HAL nie będą wywoływane jednocześnie ze środowiska Android.

Definicja w linii 82 pliku vr.h .

Dokumentacja terenowa

struktura hw_module_t wspólna

Typowe metody modułu. Musi to być pierwszy element vr_module , ponieważ użytkownicy tej struktury mogą rzutować hw_module_t na wskaźnik vr_module w kontekstach, w których wiadomo, że hw_module_t odwołuje się do vr_module .

Definicja w linii 89 pliku vr.h .

void(* init)(struct vr_module *moduł)

Wygodna metoda implementacji HAL w celu skonfigurowania dowolnego stanu wymaganego podczas uruchamiania. Jest to wywoływane jednorazowo z usługi VrManagerService podczas fazy rozruchu. Żadne metody z tej warstwy HAL nie zostaną wywołane przed init.

Definicja w linii 96 pliku vr.h .

nieważne* zarezerwowane[8-2]

Definicja w linii 110 pliku vr.h .

void(* set_vr_mode)(struct vr_module *moduł, bool włączony)

Ustaw stan trybu VR. Możliwe stany włączonego parametru to: false - tryb VR jest wyłączony, wyłącz wszystkie ustawienia specyficzne dla VR. true - tryb VR jest włączony, włącz wszystkie ustawienia specyficzne dla VR.

Jest to wywoływane za każdym razem, gdy system Android wchodzi lub wychodzi z trybu VR. Zwykle ma to miejsce, gdy użytkownik przełącza się do lub z aplikacji VR, która wykonuje renderowanie stereoskopowe.

Definicja w linii 107 pliku vr.h .


Dokumentacja tej struktury została wygenerowana z następującego pliku:
  • hardware/libhardware/include/hardware/ vr.h