Referência de estrutura vr_module
#include < vr.h >
Campos de dados | |
estrutura hw_module_t | comum |
vazio(* | init )(estrutura vr_module *módulo) |
vazio(* | set_vr_mode )(struct vr_module *módulo, bool habilitado) |
vazio * | reservado [8-2] |
Descrição detalhada
Implemente este HAL para receber retornos de chamada quando um aplicativo de realidade virtual (VR) estiver sendo usado. Os aplicativos de VR possuem caracteristicamente uma série de requisitos especiais de exibição e desempenho, incluindo:
- Baixa latência do sensor - A latência total de ponta a ponta da IMU, do acelerômetro e do giroscópio para um retorno de chamada visível do aplicativo deve ser extremamente baixa (normalmente <5 ms). Isso é necessário para suporte ao sensor HIFI.
- Baixa latência de exibição – A latência total de ponta a ponta das chamadas de desenho da GPU até a atualização real da tela deve ser a mais baixa possível. Isso é conseguido usando o SurfaceFlinger em um modo de buffer único e garantindo que as chamadas de desenho sejam sincronizadas corretamente com a varredura do display. Esse comportamento é exposto por meio de uma extensão EGL para aplicativos. Veja abaixo as extensões EGL necessárias para isso.
- Exibição de baixa persistência - As configurações de persistência da exibição devem ser definidas o mais baixo possível, mantendo um brilho razoável. Para uma exibição típica rodando a 60 Hz, os pixels devem ser iluminados por <=3,5ms para serem considerados de baixa persistência. Isso evita fantasmas durante movimentos em uma configuração de VR e deve ser ativado nas luzes.h HAL quando BRIGHTNESS_MODE_LOW_PERSISTENCE estiver definido.
- Desempenho consistente da GPU e CPU - Quando dada uma carga de trabalho mista de GPU/CPU para um aplicativo VR com picos de trabalho em intervalos regulares várias vezes por quadro, o agendamento da CPU deve garantir que o trabalho do thread de renderização do aplicativo seja executado de forma consistente dentro de 1 ms de quando programado e concluído antes do final da janela de sorteio. Para esse fim, um único núcleo de CPU deve ser reservado exclusivamente para o thread de renderização do aplicativo VR em execução no momento no modo VR e disponibilizado no cpuset "top-app". Da mesma forma, uma CPU, GPU e clock de barramento apropriados devem ser mantidos para garantir que a carga de trabalho de renderização termine dentro do tempo alocado para renderizar cada quadro quando o sinalizador POWER_HINT_SUSTAINED_PERFORMANCE tiver sido definido no HAL power.h enquanto estiver no modo VR quando o dispositivo estiver não sendo estrangulado termicamente.
- Extensões EGL obrigatórias devem estar presentes - Todas as configurações de GPU necessárias para permitir os recursos acima são obrigatórias, incluindo as extensões 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 e EGL_KHR_wait_sync.
- Relatórios térmicos precisos - As temperaturas e limites térmicos precisos devem ser relatados no HAL Thermal.h . Especificamente, a temperatura atual da pele deve ser informada com precisão para DEVICE_TEMPERATURE_SKIN e o vr_throttling_threshold relatado para este dispositivo deve relatar com precisão o limite de temperatura acima do qual o regulador térmico do dispositivo acelera as taxas de clock da CPU, GPU e/ou barramento abaixo do mínimo necessário para um desempenho consistente ( veja o ponto anterior).
Em geral, espera-se que os fornecedores que implementam este HAL usem set_vr_mode como uma dica para permitir o ajuste de desempenho específico de VR necessário para qualquer um dos requisitos acima e para ativar quaisquer recursos de dispositivo ideais para modos de exibição de VR. A chamada set_vr_mode pode simplesmente não fazer nada se nenhuma otimização estiver disponível ou for necessária para atender aos requisitos acima.
Nenhum método neste HAL será chamado simultaneamente na estrutura do Android.
Documentação de campo
estrutura hw_module_t comum |
Métodos comuns do módulo. Este deve ser o primeiro membro de vr_module , pois os usuários desta estrutura podem converter um hw_module_t em um ponteiro vr_module em contextos onde se sabe que hw_module_t faz referência a um vr_module .
void(* init)(struct vr_module *module) |
void(* set_vr_mode)(struct vr_module *module, bool habilitado) |
Defina o estado do modo VR. Os estados possíveis do parâmetro ativado são: falso - o modo VR está desativado, desative todas as configurações específicas de VR. true - o modo VR está ativado, ative todas as configurações específicas de VR.
Isso é chamado sempre que o sistema Android entra ou sai do modo VR. Isso normalmente ocorrerá quando o usuário alternar para ou de um aplicativo de VR que esteja realizando renderização estereoscópica.
A documentação desta estrutura foi gerada a partir do seguinte arquivo:
- hardware/libhardware/include/hardware/ vr.h