vr_module 구조체 참조

vr_module 구조체 참조

#include < vr.h >

데이터 필드

구조체 hw_module_t 흔한
무효의(* 초기화 )(struct vr_module *모듈)
무효의(* set_vr_mode )(struct vr_module *모듈, 부울 활성화됨)
무효의 * 예약됨 [8-2]

상세 설명

가상 현실(VR) 애플리케이션이 사용될 때 콜백을 수신하려면 이 HAL을 구현하세요. VR 애플리케이션에는 특징적으로 다음과 같은 다양한 특수 디스플레이 및 성능 요구 사항이 있습니다.

  • 낮은 센서 대기 시간 - IMU, 가속도계, 자이로에서 애플리케이션 표시 콜백까지의 총 엔드투엔드 대기 시간은 매우 낮아야 합니다(일반적으로 5ms 미만). 이는 HIFI 센서 지원에 필요합니다.
  • 낮은 디스플레이 대기 시간 - GPU 그리기 호출부터 실제 디스플레이 업데이트까지의 전체 종단 간 대기 시간은 최대한 낮아야 합니다. 이는 단일 버퍼 모드에서 SurfaceFlinger를 사용하고 그리기 호출이 디스플레이 스캔아웃과 올바르게 동기화되도록 보장함으로써 달성됩니다. 이 동작은 EGL 확장을 통해 애플리케이션에 노출됩니다. 이에 필요한 EGL 확장은 아래를 참조하세요.
  • 낮은 지속성 디스플레이 - 적절한 밝기를 유지하면서 디스플레이 지속성 설정을 최대한 낮게 설정해야 합니다. 60Hz에서 실행되는 일반적인 디스플레이의 경우 낮은 지속성으로 간주하려면 픽셀이 3.5ms 미만 동안 조명을 받아야 합니다. 이는 VR 설정에서 이동하는 동안 고스팅을 방지하고 BRIGHTNESS_MODE_LOW_PERSISTENCE가 설정된 경우 Lights.h HAL에서 활성화해야 합니다.
  • GPU 및 CPU의 일관된 성능 - 프레임당 여러 번 일정한 간격으로 작업이 급증하는 VR 애플리케이션에 대한 혼합 GPU/CPU 워크로드가 주어지면 CPU 스케줄링은 애플리케이션 렌더 스레드 작업이 1ms 이내에 일관되게 실행되도록 보장해야 합니다. 추첨 기간이 끝나기 전에 예정되고 완료됩니다. 이를 위해 단일 CPU 코어는 VR 모드에 있는 동안 현재 실행 중인 VR 애플리케이션의 렌더 스레드 전용으로 예약되어야 하며 "top-app" CPUSet에서 사용할 수 있어야 합니다. 마찬가지로 기기가 VR 모드에 있는 동안 POWER_HINT_SUSTAINED_PERFORMANCE 플래그가 power.h HAL에 설정된 경우 각 프레임을 렌더링하는 데 할당된 시간 내에 렌더링 워크로드가 완료되도록 적절한 CPU, GPU 및 버스 클럭 속도를 유지해야 합니다. 열적으로 제한되지 않습니다.
  • 필수 EGL 확장이 있어야 합니다. 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 및 EGL_KHR_wait_sync)을 포함하여 위 기능을 허용하는 데 필요한 모든 GPU 설정이 필요합니다.
  • 정확한 열 보고 - 정확한 열 온도 및 제한은 Thermal.h HAL에 보고되어야 합니다. 특히 현재 피부 온도는 DEVICE_TEMPERATURE_SKIN에 대해 정확하게 보고되어야 하며 이 장치에 대해 보고된 vr_throttling_threshold는 장치의 열 거버너가 CPU, GPU 및/또는 버스 클록 속도를 일관된 성능에 필요한 최소값 아래로 조절하는 온도 제한을 정확하게 보고해야 합니다( 이전 글머리 기호 참조).

일반적으로 이 HAL을 구현하는 공급업체는 위의 요구 사항에 필요한 VR 관련 성능 조정을 활성화하고 VR 디스플레이 모드에 최적인 모든 장치 기능을 켜기 위한 힌트로 set_vr_mode를 사용해야 합니다. 위의 요구 사항을 충족하는 데 사용할 수 있는 최적화가 없거나 필요한 경우 set_vr_mode 호출은 아무 작업도 수행하지 않을 수 있습니다.

이 HAL의 어떤 메서드도 Android 프레임워크에서 동시에 호출되지 않습니다.

vr.h 파일의 82번째 줄에 정의되어 있습니다.

현장 문서

구조체 hw_module_t 공통

모듈의 일반적인 방법. 이 구조의 사용자는 hw_module_t가 vr_module을 참조하는 것으로 알려진 컨텍스트에서 hw_module_t를 vr_module 포인터로 캐스팅할 수 있으므로 이는 vr_module 번째 멤버 여야 합니다 .

vr.h 파일의 89번째 줄에 정의되어 있습니다.

void(* init)(struct vr_module *모듈)

런타임 시작 시 필요한 상태를 설정하기 위한 HAL 구현의 편리한 메서드입니다. 이는 부팅 단계 동안 VrManagerService에서 한 번 호출됩니다. 이 HAL의 메소드는 초기화 전에 호출되지 않습니다.

vr.h 파일의 96번째 줄에 정의되어 있습니다.

무효* 예약됨[8-2]

vr.h 파일의 110 번째 줄에 정의되어 있습니다.

void(* set_vr_mode)(struct vr_module *모듈, 부울 활성화됨)

VR 모드 상태를 설정합니다. 활성화된 매개변수의 가능한 상태는 다음과 같습니다. false - VR 모드가 비활성화되고 모든 VR 관련 설정이 꺼집니다. true - VR 모드가 활성화되어 모든 VR 관련 설정을 켭니다.

이는 Android 시스템이 VR 모드에 들어가거나 나갈 때마다 호출됩니다. 이는 일반적으로 사용자가 입체 렌더링을 수행하는 VR 애플리케이션으로 전환하거나 그 반대로 전환할 때 발생합니다.

vr.h 파일의 107 번째 줄에 정의되어 있습니다.


이 구조체에 대한 문서는 다음 파일에서 생성되었습니다.