מילות המפתח MUST, MUST NOT, SHOULD ו-STRONGLY RECOMMENDED בדף הזה צריכות להתפרש כמו שמתואר ב-RFC 2119.
מערכת אורחת (תמונת מכונה וירטואלית)
הדרישות שבקטע הזה חלות על מערכת האורחים.
זיכרון
המערכת צריכה לספק לפחות 2 GB של זיכרון לכל מכונה וירטואלית.
ממשקי בינאריים של אפליקציות
הטמעות במכשירים:
- חייב להיות תואם לאחד או יותר מממשקי ה-ABI של Android NDK שהוגדרו.
- חובה להשתמש באותו Android NDK ABI לכל תמונות מכונות וירטואליות באותו מכשיר.
- חייבת להיות תאימות לקוד המקור (לדוגמה, תאימות לכותרת) ותאימות בינארית (לממשק ABI) לכל ספרייה נדרשת ברשימה הבאה.
חובה להפוך את כל הספריות הבאות, שמספקות ממשקי API מקוריים, לזמינות לאפליקציות של Software Defined Vehicle (SDV):
-
libc(C library) -
libdl(dynamic linker) -
libdrm.so(Direct Rendering Manager userspace library) -
libgbm.so(ניהול כללי של מאגר נתונים זמני) -
libEGL.so(native OpenGL surface management) -
libGLESv1_CM.so(OpenGL ES 1.x) -
libGLESv2.so(OpenGL ES 2.0) -
libGLESv3.so(OpenGL ES 3.x) -
liblog(רישום ביומן ב-Android) libtinyalsav2.so(הקלטת אודיו והפעלה)-
libvulkan.so(Vulkan)
-
אסור להוסיף או להסיר את הפונקציות הציבוריות של הספריות המקוריות הקודמות.
חובה לייצא את כל סמלי הפונקציות של OpenGL ES 3.1 ושל Android Extension Pack כפי שמוגדרים ב-NDK, דרך ספריית libGLESv3.so. שימו לב: כל הסמלים חייבים להיות נוכחים, אבל OpenGL ES מתאר בפירוט רב יותר את הדרישות לגבי המועד שבו צפוי יישום מלא של כל פונקציה תואמת.
חובה לייצא את סמלי הפונקציות של Vulkan 1.1, וגם את התוספים
VK_KHR_surface,VK_KHR_swapchain,VK_KHR_maintenance1ו-VK_KHR_get_physical_device_properties2דרך ספרייתlibvulkan.so. שימו לב: כל הסמלים חייבים להיות נוכחים, אבל ב-Vulkan מפורטות הדרישות לגבי המקרים שבהם נדרש יישום מלא של כל פונקציה תואמת.צריך לבנות אותו באמצעות קוד המקור וקבצי הכותרת שזמינים בפרויקט Android Open Source Project (AOSP) במעלה הזרם.
גרפיקה
המערכת חייבת להשתמש ב-virtio-gpu לעיבוד גרפי עם שיפור מהירות באמצעות חומרה. הדרייבר בצד האורח צריך להשתמש ב-gfxstream לצורך רינדור.
קלט
מערכת האורחים חייבת לכלול תמיכה באירועי קלט שמועברים ממערכת המארח באמצעות virtio-input.
OpenGL ES
הטמעות במכשירים:
- חייב לזהות בצורה נכונה את הגרסאות הנתמכות של OpenGL ES (1.1, 2.0, 3.0, 3.1, 3.2) באמצעות ממשקי ה-API המקוריים.
- חייבים לכלול תמיכה בכל ממשקי ה-API המקוריים התואמים לכל גרסה של OpenGL ES שהם תומכים בה.
- חייב לתמוך ב-OpenGL ES 1.1 וב-2.0.
- מומלץ מאוד לתמוך ב-OpenGL ES 3.1.
- צריך לתמוך ב-OpenGL ES 3.2.
- חובה לדווח באמצעות ממשקי ה-API המנוהלים של OpenGL ES וממשקי ה-API המקוריים על כל תוספי OpenGL ES שהוטמעו, ולהיפך, אסור לדווח על מחרוזות של תוספים שלא נתמכים.
- חובה לתמוך בתוספים הבאים:
EGL_EXT_image_dma_buf_importEGL_EXT_image_dma_buf_import_modifiersEGL_KHR_fence_syncEGL_KHR_image_baseEGL_KHR_wait_syncGL_OES_EGL_image
מומלץ מאוד להטמיע OpenGL ES במכשירים באמצעות ספריית ANGLE עם קצה עורפי של Vulkan.
Vulkan
הטמעות במכשירים:
- מומלץ מאוד לכלול תמיכה ב-Vulkan 1.3.
- אסור לתמוך בגרסת וריאציה של Vulkan (כלומר, החלק של הווריאציה בגרסת הליבה של Vulkan חייב להיות אפס).
- חובה לתמוך בתוספים הבאים:
VK_ANDROID_external_memory_android_hardware_bufferVK_EXT_external_memory_dma_bufVK_EXT_queue_family_foreignVK_KHR_external_memory_fdVK_KHR_external_semaphore_fd
תאימות למולטימדיה
הטמעות במכשירים חייבות לאפשר הפעלה של תוכן אודיו גולמי עם המאפיינים הבאים:
- פורמטים של מקורות: Linear PCM, 16 ביט, 8 ביט, float
- ערוצים: מונו, סטריאו, הגדרות תקינות של ריבוי ערוצים עם עד שמונה ערוצים
- תדירויות דגימה (ב-Hz):
- 8,000, 11,025, 16,000, 22,050, 24,000, 32,000, 44,100, 48,000 בהגדרות הערוץ שצוינו קודם
- 96,000 במונו ובסטריאו
הטמעות של מכשירים חייבות לאפשר הקלטה של תוכן אודיו גולמי. לפחות, הטמעות של מכשירים חייבות לתמוך במאפיינים הבאים:
- פורמט: Linear PCM, 16 ביט
- תדירויות דגימה: 8,000, 11,025, 16,000, 44,100, 48,000 Hz
- ערוצים: מונו
הטמעות של מכשירים צריכות לאפשר לכידה של תוכן אודיו גולמי עם המאפיינים הבאים:
- פורמט: Linear PCM, 16 ביט ו-24 ביט
- תדירויות דגימה: 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 Hz
- ערוצים: מספר הערוצים שווה למספר המיקרופונים במכשיר
הטמעות של מכשירים חייבות לספק תמיכה בהפעלה ובשמירה של אודיו דרך
libtinyalsav2.soAPI, באמצעות מכשירvirtio-soundלגישה לחומרה, וחייבות לתמוך ב-ALSA API.מקודדים ומפענחים של וידאו חייבים לתמוך לפחות באחד מפורמטי הצבעים YUV420 8:8:8 planar או semiplanar.
מפענחי וידאו ומקודדי וידאו חייבים לתמוך בקודק H.264 AVC.
הטמעות של מכשירים חייבות לתמוך בפרופיל הראשי של H.264 ברמה 3.1 ובפרופיל Baseline. התמיכה בסדר פרוסות שרירותי (ASO), בסדר גמיש של בלוקים גדולים (FMO) ובפרוסות מיותרות (RS) היא אופציונלית.
מקודדי וידאו:
- חובה לתמוך בפרופילים של קידוד וידאו באיכות רגילה (SD) שמפורטים בטבלה הבאה.
צריכה להיות תמיכה בפרופילים של קידוד סרטונים באיכות HD, כמו שמופיע בטבלה הבאה.
איכות רגילה (SD) איכות רגילה (SD) HD 720p HD 1080p רזולוציית הווידאו 320 x 240 px 720 x 480 פיקסלים 1280 x 720 פיקסלים 1,920 x 1,080 פיקסלים קצב פריימים של סרטון 20 פריימים לשנייה 30 פריימים לשנייה 30 פריימים לשנייה 30 פריימים לשנייה קצב העברת נתונים של סרטון 384 Kbps 2 Mbps 4 Mbps 10 Mbps
מפענחי וידאו:
- חייב לתמוך בפרופילים של פענוח וידאו באיכות HD 720p שמופיעים בטבלה הבאה.
חובה לתמוך בפרופילים של פענוח וידאו באיכות HD 1080p שמופיעים בטבלה הבאה.
איכות רגילה (SD) איכות רגילה (SD) HD 720p HD 1080p רזולוציית הווידאו 320 x 240 px 720 x 480 פיקסלים 1280 x 720 פיקסלים 1,920 x 1,080 פיקסלים קצב פריימים של סרטון 30 פריימים לשנייה 30 פריימים לשנייה 60 fps 30 פריימים לשנייה קצב העברת נתונים של סרטון 800 Kbps 2 Mbps 8 Mbps 20 Mbps
הטמעות במכשירים חייבות לספק תמיכה ברכיבי codec של מדיה באמצעות Video4Linux API.
הטמעות של מכשירים חייבות לספק גישה למפענח וידאו באמצעות חומרה באמצעות Video4Linux API.
כל מקודדי הווידאו והתמונות שמופעלת בהם האצת חומרה חייבים לתמוך בקידוד של פריימים ממצלמות החומרה. הטמעות של מכשירים חייבות לספק גישה לחומרה לקידוד ולפענוח של סרטונים באמצעות
virtio-media.הטמעות של מכשירים חייבות לספק גישה למצלמת וידאו באמצעות Video4Linux API.
מערכת המארח (היפר-ויז'ור וחומרה)
הדרישות שבקטע הזה חלות על מערכת המארח ועל סביבת ההיפר-ויז'ור.
וירטואליזציה
- בנוסף למכשירי
virtioשנדרשים בפרופיל הליבה, מערכת המארח חייבת לספק את הפריטים הבאים:-
virtio-gpu: עבור GPU וירטואלי ותצוגה -
virtio-input: להעברת אירועי קלט (לדוגמה, מגע, מקלדת) -
virtio-sound: למכשירי אודיו וירטואליים -
virtio-videoאוvirtio-media: למכשירי קודק וידאו וירטואליים
-
קלט
- המכשיר חייב לתמוך במכשירי קלט ולהעביר אירועים למערכות אורחות באמצעות
virtio-input. המכשיר צריך לתמוך בקלט של מצביע, לחצן ובקר סיבובי.