Referência de estrutura vr_module

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.

Definição na linha 82 do arquivo vr.h .

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 .

Definição na linha 89 do arquivo vr.h .

void(* init)(struct vr_module *module)

Método de conveniência para a implementação HAL configurar qualquer estado necessário na inicialização do tempo de execução. Isso é chamado uma vez do VrManagerService durante a fase de inicialização. Nenhum método deste HAL será chamado antes do init.

Definição na linha 96 do arquivo vr.h .

vazio* reservado[8-2]

Definição na linha 110 do arquivo vr.h .

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.

Definição na linha 107 do arquivo vr.h .


A documentação desta estrutura foi gerada a partir do seguinte arquivo:
  • hardware/libhardware/include/hardware/ vr.h