vr_module Struct Reference

vr_module Struct Reference

#include < vr.h >

שדות נתונים

struct hw_module_t מְשׁוּתָף
בָּטֵל(* init )(struct vr_module *module)
בָּטֵל(* set_vr_mode )(struct vr_module *module, bool enabled)
בטל* שמור [8-2]

תיאור מפורט

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

  • חביון חיישן נמוך - זמן האחזור הכולל מקצה לקצה מה-IMU, מד התאוצה והג'ירו ועד להתקשרות חוזרת גלויה לאפליקציה חייבת להיות נמוכה ביותר (בדרך כלל פחות מ-5ms). זה נדרש לתמיכה בחיישני HIFI.
  • חביון תצוגה נמוך - השהיה הכוללת מקצה לקצה מקריאות ציור ה-GPU לעדכון התצוגה בפועל חייבת להיות נמוכה ככל האפשר. זה מושג על ידי שימוש ב-SurfaceFlinger במצב מאגר יחיד, והבטחה ששיחות ציור מסונכרנות בצורה נכונה עם סריקת התצוגה. התנהגות זו נחשפת באמצעות סיומת EGL ליישומים. ראה להלן את הרחבות EGL הדרושות לכך.
  • תצוגה עם עמידות נמוכה - יש להגדיר את הגדרות עמידות התצוגה נמוך ככל האפשר תוך שמירה על בהירות סבירה. עבור תצוגה טיפוסית הפועלת ב-60Hz, פיקסלים צריכים להיות מוארים למשך <=3.5ms כדי להיחשב לעמידות נמוכה. זה מונע רוחות רפאים במהלך תנועות בהגדרת VR, ויש להפעיל אותו מהאורות.h HAL כאשר BRIGHTNESS_MODE_LOW_PERSISTENCE מוגדר.
  • ביצועים עקביים של ה-GPU וה-CPU - כאשר ניתן עומס עבודה מעורב של GPU/CPU עבור יישום VR עם פרצי עבודה במרווחי זמן קבועים מספר פעמים בפריים, תזמון ה-CPU אמור להבטיח שעבודת השרשור של עיבוד האפליקציה מופעלת באופן עקבי תוך 1ms מרגע מתוזמן, והושלם לפני סוף חלון ההגרלה. לשם כך, יש לשמור ליבת מעבד יחידה אך ורק עבור פתיל העיבוד של אפליקציית ה-VR הפועל כעת במצב VR, ולהפוך לזמינה בערכת "האפליקציה העליונה". כמו כן, יש לשמור על קצב שעון מתאים של CPU, GPU ואוטובוס כדי להבטיח שעומס העבודה של הרינדור יסתיים בתוך הזמן שהוקצב לעיבוד כל מסגרת כאשר הדגל POWER_HINT_SUSTAINED_PERFORMANCE הוגדר ב- power.h HAL במצב VR כאשר המכשיר נמצא לא נחנק תרמית.
  • הרחבות EGL נדרשות חייבות להיות נוכחות - נדרשות כל הגדרות GPU הנדרשות כדי לאפשר את היכולות שלעיל, כולל הרחבות EGL: EGL_ANDROID_create_native_client_buffer, EGL_ANDROID_front_buffer_auto_refresh, EGL_EXT_protected_content, EGL_KHR_mutable_render_KHRit, EGL_KHR_mutable_render_KHRit, EGL_KHR_mutable_render_buffer ו_syncwa ג.
  • דיווח תרמי מדויק - יש לדווח על טמפרטורות ומגבלות תרמיות מדויקות ב- thermal.h HAL. באופן ספציפי, יש לדווח במדויק על טמפרטורת העור הנוכחית עבור DEVICE_TEMPERATURE_SKIN ו-vr_throttling_threshold המדווח עבור מכשיר זה חייב לדווח במדויק על מגבלת הטמפרטורה שמעליה המושל התרמי של המכשיר מצר את קצבי המעבד, ה-GPU ו/או האוטובוס מתחת למינימום הדרוש לביצועים עקביים ( ראה נקודה קודמת).

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

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

הגדרה בשורה 82 של קובץ vr.h.

תיעוד שטח

struct hw_module_t נפוץ

שיטות נפוצות של המודול. זה חייב להיות החבר הראשון של vr_module מכיוון שמשתמשים במבנה זה עשויים להטיל 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.

בטל* שמור[8-2]

הגדרה בשורה 110 של קובץ vr.h.

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

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

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

הגדרה בשורה 107 של קובץ vr.h.


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