Tham chiếu cấu trúc vr_module
#include < vr.h >
Trường dữ liệu | |
cấu trúc hw_module_t | chung |
khoảng trống(* | init )(struct vr_module *mô-đun) |
khoảng trống(* | set_vr_mode )(mô-đun struct vr_module *, đã bật bool) |
trống * | dành riêng [8-2] |
miêu tả cụ thể
Triển khai HAL này để nhận lệnh gọi lại khi ứng dụng thực tế ảo (VR) đang được sử dụng. Các ứng dụng VR đặc trưng có một số yêu cầu về hiệu suất và hiển thị đặc biệt, bao gồm:
- Độ trễ cảm biến thấp - Tổng độ trễ từ đầu đến cuối từ IMU, gia tốc kế và con quay hồi chuyển đến lệnh gọi lại hiển thị trong ứng dụng phải cực kỳ thấp (thường là <5 mili giây). Điều này là cần thiết để hỗ trợ cảm biến HIFI.
- Độ trễ hiển thị thấp - Tổng độ trễ từ đầu đến cuối từ lệnh gọi GPU đến bản cập nhật hiển thị thực tế phải càng thấp càng tốt. Điều này đạt được bằng cách sử dụng SurfaceFlinger ở chế độ một bộ đệm và đảm bảo rằng các lệnh gọi vẽ được đồng bộ hóa chính xác với quá trình quét màn hình. Hành vi này được bộc lộ thông qua tiện ích mở rộng EGL cho các ứng dụng. Xem bên dưới để biết các tiện ích mở rộng EGL cần thiết cho việc này.
- Hiển thị độ bền thấp - Cài đặt độ bền hiển thị phải được đặt ở mức thấp nhất có thể trong khi vẫn duy trì độ sáng hợp lý. Đối với màn hình thông thường chạy ở tần số 60Hz, các pixel phải được chiếu sáng trong thời gian <=3,5 mili giây để được coi là có độ bền thấp. Điều này tránh hiện tượng bóng mờ khi chuyển động trong cài đặt VR và phải được bật từ đèn.h HAL khi BRIGHTNESS_MODE_LOW_PERSISTENCE được đặt.
- Hiệu suất ổn định của GPU và CPU - Khi được cung cấp khối lượng công việc GPU/CPU hỗn hợp cho ứng dụng VR với các đợt công việc đều đặn vài lần một khung hình, việc lên lịch CPU phải đảm bảo rằng công việc của luồng kết xuất ứng dụng được chạy nhất quán trong vòng 1 mili giây kể từ khi đã lên lịch và hoàn thành trước khi kết thúc thời gian rút thăm. Để đạt được mục đích này, một lõi CPU phải được dành riêng cho luồng kết xuất của ứng dụng VR hiện đang chạy khi ở chế độ VR và được cung cấp trong bộ CPU "ứng dụng hàng đầu". Tương tự, phải duy trì tốc độ xung nhịp CPU, GPU và bus thích hợp để đảm bảo khối lượng công việc kết xuất kết thúc trong thời gian được phân bổ để hiển thị từng khung hình khi cờ POWER_HINT_SUSTAINED_PERFORMANCE được đặt ở nguồn.h HAL trong khi ở chế độ VR khi thiết bị đang hoạt động không bị điều tiết nhiệt.
- Phải có tiện ích mở rộng EGL bắt buộc - Cần có mọi cài đặt GPU để cho phép các khả năng trên, bao gồm các tiện ích mở rộng 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 và EGL_KHR_wait_sync.
- Báo cáo nhiệt chính xác - Nhiệt độ và giới hạn nhiệt chính xác phải được báo cáo trong HAL nhiệt.h . Cụ thể, nhiệt độ bề mặt hiện tại phải được báo cáo chính xác cho DEVICE_TEMPERATURE_SKIN và ngưỡng vr_throttling_threshold được báo cáo cho thiết bị này phải báo cáo chính xác giới hạn nhiệt độ mà bộ điều chỉnh nhiệt của thiết bị điều chỉnh tốc độ xung nhịp CPU, GPU và/hoặc bus xuống dưới mức tối thiểu cần thiết để có hiệu suất ổn định ( xem điểm đầu dòng trước đó).
Nhìn chung, các nhà cung cấp triển khai HAL này dự kiến sẽ sử dụng set_vr_mode làm gợi ý để cho phép điều chỉnh hiệu suất dành riêng cho VR cần thiết cho bất kỳ yêu cầu nào ở trên và bật mọi tính năng của thiết bị tối ưu cho chế độ hiển thị VR. Cuộc gọi set_vr_mode có thể đơn giản là không làm gì nếu không có tối ưu hóa nào hoặc không cần thiết để đáp ứng các yêu cầu trên.
Không có phương thức nào trong HAL này sẽ được gọi đồng thời từ khung Android.
Tài liệu hiện trường
cấu trúc hw_module_t chung |
Các phương pháp chung của mô-đun. Đây phải là thành viên đầu tiên của vr_module vì người dùng cấu trúc này có thể truyền hw_module_t tới con trỏ vr_module trong các bối cảnh đã biết rằng hw_module_t tham chiếu đến vr_module .
void(* init)(struct vr_module *module) |
Phương pháp thuận tiện cho việc triển khai HAL nhằm thiết lập bất kỳ trạng thái nào cần thiết khi khởi động thời gian chạy. Điều này được gọi một lần từ VrManagerService trong giai đoạn khởi động của nó. Không có phương thức nào từ HAL này sẽ được gọi trước init.
void(* set_vr_mode)(mô-đun struct vr_module *, đã bật bool) |
Đặt trạng thái chế độ VR. Các trạng thái có thể có của tham số được bật là: sai - Chế độ VR bị tắt, tắt tất cả cài đặt dành riêng cho VR. đúng - Chế độ VR được bật, hãy bật tất cả cài đặt dành riêng cho VR.
Điều này được gọi bất cứ khi nào hệ thống Android chuyển sang hoặc rời khỏi chế độ VR. Điều này thường xảy ra khi người dùng chuyển sang hoặc từ một ứng dụng VR đang thực hiện hiển thị lập thể.
Tài liệu cho cấu trúc này được tạo từ tệp sau:
- phần cứng/libhardware/bao gồm/phần cứng/ vr.h