Tài liệu tham khảo về cấu trúc vr_module

Tài liệu tham khảo về cấu trúc vr_module

#include < vr.h >

Trường dữ liệu

struct hw_module_t   common
 
void(*  init (struct vr_module *module)
 
void(*  set_vr_mode )(struct vr_module *module, bool enabled)
 
void *  reserved [8-2]
 

Nội dung mô tả chi tiết

Triển khai HAL này để nhận lệnh gọi lại khi đang sử dụng ứng dụng thực tế ảo (VR). Các ứng dụng VR thường có một số yêu cầu đặc biệt về hiệu suất và màn hình, 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 thấp (thường là <5 mili giây). Đây là yêu cầu để 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 vẽ GPU đến bản cập nhật hiển thị thực tế phải thấp nhất có thể. Điều này được thực hiện bằng cách sử dụng SurfaceFlinger ở chế độ một vùng đệm và đảm bảo rằng các lệnh gọi vẽ được đồng bộ hoá chính xác với quá trình quét màn hình. Hành vi này được hiển thị thông qua một tiện ích EGL cho các ứng dụng. Hãy xem phần dưới đây để biết các tiện ích EGL cần thiết cho việc này.
  • Màn hình có độ bền thấp – Bạn phải đặt chế độ cài đặt độ bền của màn hình ở 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ốc độ 60Hz, các pixel phải được chiếu sáng trong thời gian <=3,5 mili giây thì mới được coi là có độ bền thấp. Điều này giúp tránh hiện tượng bóng ma trong khi di chuyển ở chế độ VR và bạn nên bật tính năng này từ HAL lights.h khi đặt BRIGHTNESS_MODE_LOW_PERSISTENCE.
  • Hiệu suất nhất quán của GPU và CPU – Khi được cung cấp khối lượng công việc GPU/CPU kết hợp cho một ứng dụng VR với các đợt công việc theo chu kỳ đều đặn vài lần một khung hình, việc lập lịch biểu CPU phải đảm bảo rằng công việc của luồng kết xuất ứng dụng chạy nhất quán trong vòng 1 mili giây kể từ thời điểm được lên lịch và hoàn tất trước khi kết thúc cửa sổ vẽ. Để đạt được mục tiêu này, bạn phải dành riêng một lõi CPU cho luồng kết xuất của ứng dụng thực tế ảo đang chạy trong chế độ thực tế ảo và cung cấp luồng này trong cpuset "top-app". Tương tự, bạn 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 hoàn tất trong thời gian được phân bổ để kết xuất từng khung hình khi cờ POWER_HINT_SUSTAINED_PERFORMANCE được đặt trong power.h HAL khi ở chế độ VR khi thiết bị không bị điều tiết nhiệt.
  • Phải có các tiện ích EGL bắt buộc – Bất kỳ chế độ cài đặt GPU nào cần thiết để cho phép các chức năng trên đều bắt buộc, bao gồm cả các tiện ích 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 thermal.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à 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à trên đó trình quản lý nhiệt của thiết bị sẽ điều tiết CPU, GPU và/hoặc tốc độ xung nhịp của bus xuống dưới mức tối thiểu cần thiết để đạt được hiệu suất nhất quán (xem dấu đầ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 ý để bật tính năng đ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 thiết bị tối ưu cho chế độ hiển thị VR. Lệnh gọi set_vr_mode có thể không làm gì cả nếu không có hoặc không cần tối ưu hoá để đáp ứng các yêu cầu trên.

Không có phương thức nào trong HAL này được gọi đồng thời từ khung Android.

Định nghĩa tại dòng 82 của tệp VR.h .

Tài liệu về trường

cấu trúc hw_module_t phổ biến

Các phương thức phổ biến của mô-đun. nà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 một hw_module_t đến một vr_module con trỏ trong ngữ cảnh mà người dùng biết rằng hw_module_t tham chiếu đến một vr_module .

Định nghĩa tại dòng 89 của tệp VR.h .

void(* init)(struct vr_module *module)

Phương thức thuận tiện để triển khai HAL nhằm thiết lập mọi trạng thái cần thiết khi khởi động thời gian chạy. Phương thức này được gọi một lần từ VrManagerService trong giai đoạn khởi động. Không có phương thức nào từ HAL này sẽ được gọi trước khi khởi tạo.

Định nghĩa tại dòng 96 của tệp VR.h .

void* reserved[8-2]

Định nghĩa tại dòng 110 của tệp VR.h .

void(* set_vr_mode)(struct vr_module *module, bool enabled)

Đặt trạng thái chế độ VR. Các trạng thái có thể có của thông số đã bật là: false – chế độ VR bị tắt, tắt tất cả chế độ cài đặt dành riêng cho VR. true – chế độ VR được bật, bật tất cả chế độ cài đặt dành riêng cho VR.

Phương thức này được gọi bất cứ khi nào hệ thống Android chuyển sang hoặc thoát 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 kết xuất hình ảnh ba chiều.

Định nghĩa tại dòng 107 của tệp VR.h .


Tài liệu cho cấu trúc này được tạo từ tệp sau:
  • hardware/libhardware/include/hardware/ vr.h