VR_module Struct Reference

VR_module Struct Reference

#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 הזה כדי לקבל קריאות חזרה (callbacks) כשמשתמשים באפליקציית מציאות מדומה (VR). לאפליקציות VR יש בדרך כלל מספר דרישות מיוחדות לגבי תצוגה וביצועים, כולל:

  • זמן אחזור נמוך של חיישנים – זמן האחזור הכולל מקצה לקצה, מה-IMU, מהתאוצה ומהג'ירו לקריאה חוזרת (callback) גלויה לאפליקציה, צריך להיות נמוך מאוד (בדרך כלל פחות מ-5ms). הדבר נדרש לתמיכה בחיישני HIFI.
  • זמן אחזור קצר לתצוגה – זמן האחזור הכולל מקצה לקצה, מקריאות ה-draw של ה-GPU ועד לעדכון התצוגה בפועל, צריך להיות קצר ככל האפשר. כדי לעשות זאת, משתמשים ב-SurfaceFlinger במצב עם מאגר אחד, ומוודאים שהקריאות לציור מסונכרנות בצורה נכונה עם הסריקה של המסך. ההתנהגות הזו חשופה לאפליקציות באמצעות תוסף EGL. בהמשך מפורטות התוספים של EGL הנדרשים לכך.
  • מסך עם עמידות נמוכה – צריך להגדיר את ההגדרות של עמידות המסך לערך הנמוך ביותר האפשרי תוך שמירה על בהירות סבירה. במסך טיפוסי שפועל ב-60Hz, הפיקסלים צריכים להאיר למשך פחות מ-3.5ms כדי להיחשב כמסך עם עמידות נמוכה. כך אפשר למנוע צללי תנועה במהלך תנועות בסביבת VR, וצריכים להפעיל את התכונה מ-HAL של lights.h כשמגדירים את BRIGHTNESS_MODE_LOW_PERSISTENCE.
  • ביצועים עקביים של ה-GPU וה-CPU – כשמתקבל עומס עבודה מעורב של GPU/CPU לאפליקציית VR עם התפרצויות של עבודה במרווחי זמן קבועים כמה פעמים בפרמטר, תזמון ה-CPU אמור להבטיח שהעבודה של חוט הרינדור של האפליקציה תפעל באופן עקבי תוך אלפית שנייה מהמועד שבו היא תוזמנה, ותושלם לפני סיום חלון הציור. לשם כך, צריך להקצות ליבה אחת של מעבד רק לשרשור הרינדור של אפליקציית ה-VR שפועלת כרגע במצב VR, ולהפוך אותה לזמינה ב-cpuset‏ 'top-app'. באופן דומה, צריך לשמור על קצב שעון מתאים של המעבד, המעבד הגרפי והאוטובוס כדי להבטיח שעומס העבודה של העיבוד יסתיים במסגרת הזמן שהוקצה לעיבוד כל פריים, כשהדגל POWER_HINT_SUSTAINED_PERFORMANCE מוגדר ב-HAL של power.h במצב VR כשאין הגבלת מהירות תרמית במכשיר.
  • צריכות להיות תוספות EGL נדרשות – כל הגדרות ה-GPU הנדרשות כדי לאפשר את היכולות שלמעלה נדרשות, כולל תוספות ה-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.
  • דיווח מדויק על נתונים תרמו-אלקטרוניים – צריך לדווח על טמפרטורות ומגבלות מדויקות של נתונים תרמו-אלקטרוניים ב-HAL‏ thermal.h . באופן ספציפי, צריך לדווח בצורה מדויקת על טמפרטורת העור הנוכחית עבור DEVICE_TEMPERATURE_SKIN, ועל סף ה-vr_throttling_threshold שמדווח על המכשיר הזה צריך לדווח בצורה מדויקת על מגבלת הטמפרטורה שמעליה הרגולטור התרמי של המכשיר מגביל את מהירויות השעון של המעבד, המעבד הגרפי או האוטובוס מתחת לערך המינימלי הנדרש לביצועים עקביים (ראו הנקודה הקודמת ברשימה).

באופן כללי, ספקים שמטמיעים את ה-HAL הזה צפויים להשתמש ב-set_vr_mode כרמז להפעלת אופטימיזציה של ביצועים ספציפית ל-VR שנדרשת לכל אחת מהדרישות שלמעלה, ולהפעלת כל תכונות המכשיר שמתאימות למצבי התצוגה של VR. יכול להיות שהקריאה ל-set_vr_mode לא תבצע שום פעולה אם אין אופטימיזציות זמינות או נדרשות כדי לעמוד בדרישות שלמעלה.

לא יתבצע קריאה בו-זמנית לשיטות ב-HAL הזה מהמסגרת של Android.

ההגדרה מופיעה בשורה 82 בקובץ vr.h .

מסמכי תיעוד של שדה

struct hw_module_t common

שיטות נפוצות במודול. הוא חייב להיות המאפיין הראשון של vr_module , כי משתמשים במבנה הזה עשויים לבצע העברה (cast) של hw_module_t למצביע vr_module בהקשרים שבהם ידוע ש- hw_module_t מפנה ל- vr_module .

ההגדרה מופיעה בשורה 89 בקובץ vr.h .

void(* init)(struct vr_module *module)

שיטה נוחה להטמעת HAL להגדרת כל מצב שנחוץ בזמן ההפעלה בסביבת זמן הריצה. הקריאה הזו מתבצעת פעם אחת מ-VrManagerService במהלך שלב האתחול שלו. לא יתבצעו קריאות לשיטות של ה-HAL הזה לפני init.

ההגדרה מופיעה בשורה 96 בקובץ vr.h .

void* reserved[8-2]

ההגדרה מופיעה בשורה 110 בקובץ vr.h .

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

מגדירים את מצב VR. המצבים האפשריים של הפרמטר המופעל הם: false – מצב VR מושבת, צריך להשבית את כל ההגדרות הספציפיות ל-VR. true – מצב VR מופעל, צריך להפעיל את כל ההגדרות הספציפיות ל-VR.

הפונקציה הזו נקראת בכל פעם שמערכת Android נכנסת למצב VR או יוצאת ממנו. המצב הזה מתרחש בדרך כלל כשהמשתמש עובר מאפליקציית VR שמבצעת עיבוד סטראוסקופי או אליה.

ההגדרה מופיעה בשורה 107 בקובץ vr.h .


התיעוד של המבנה הזה נוצר מהקובץ הבא:
  • hardware/libhardware/include/hardware/ vr.h