vr_module 구조체 참조
#include <
vr.h
>
데이터 필드 |
|
struct hw_module_t | 일반적인 |
void(* | init )(struct vr_module *module) |
void(* | set_vr_mode )(struct vr_module *module, bool enabled) |
void * | reserved [8-2] |
상세 설명
이 HAL을 구현하여 가상 현실 (VR) 애플리케이션이 사용될 때 콜백을 수신합니다. 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 이내에 일관되게 실행되고 그리기 창이 끝나기 전에 완료되도록 해야 합니다. 이를 위해 VR 모드에서 현재 실행 중인 VR 애플리케이션의 렌더링 스레드 전용으로 단일 CPU 코어를 예약하고 'top-app' cpuset에서 사용할 수 있어야 합니다. 마찬가지로 기기가 열적으로 제한되지 않는 VR 모드에서 power.h HAL에 POWER_HINT_SUSTAINED_PERFORMANCE 플래그가 설정된 경우 각 프레임을 렌더링하는 데 할당된 시간 내에 렌더링 워크로드가 완료되도록 적절한 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을 구현하는 공급업체는 set_vr_mode를 힌트로 사용하여 위 요구사항에 필요한 VR 관련 성능 조정을 사용 설정하고 VR 디스플레이 모드에 최적화된 기기 기능을 사용 설정해야 합니다. 위의 요구사항을 충족하기 위해 사용할 수 있는 최적화가 없거나 최적화가 필요하지 않은 경우 set_vr_mode 호출은 아무것도 하지 않을 수 있습니다.
이 HAL의 메서드는 Android 프레임워크에서 동시에 호출되지 않습니다.
필드 문서
struct hw_module_t common |
모듈의 일반적인 메서드입니다. 이 구조체의 사용자는 hw_module_t 가 vr_module 을 참조하는 것으로 알려진 컨텍스트에서 hw_module_t 를 vr_module 포인터로 변환할 수 있으므로 이 πρέπει 는 VR_MODULE 의 첫 번째 구성원입니다.
void(* init)(struct vr_module *module) |
void(* set_vr_mode)(struct vr_module *module, bool enabled) |
이 구조체에 관한 문서는 다음 파일에서 생성되었습니다.
- hardware/libhardware/include/hardware/ vr.h