SurfaceFlinger

SurfaceFlinger dumps מספקים תמונת מצב של SurfaceFlinger בנקודת זמן ספציפית. התכונה SurfaceFlinger traces מציגה רצף כרונולוגי של מצבים שמספק תובנות חשובות לגבי האופן שבו חלון מופיע במסך, וקובעת איזה חלון מקבל תגובות למגע במיקומים ספציפיים. המידע הזה עוזר לפתור בעיות, כמו האפליקציה לא מגיבה למגע שלי או המסך הבהב בזמן הצפייה בסרטון.

ב-Winscope, הצופה SurfaceFlinger מציג את המידע הזה עבור עקבות שאתם אוספים באמצעות המצב הפעיל או שנוצרו מהעקבות של העסקאות כשיוצרים דוח באגים (כברירת מחדל, התצורה של Droidfood), וגם עבור קובצי dump.

מידע נוסף על איסוף נתונים של מעקב זמין במאמר SurfaceFlinger (שכבות).

ניתוח עקבות של SurfaceFlinger

איור 1. ניתוח של נתוני מעקב של SurfaceFlinger.

בצד ימין של המסך מוצגת תצוגת תלת-ממד של השכבות. בתצוגת ה-rects נלקחים בחשבון גבולות השכבה, סדר Z, אטימות, Z יחסי ופינות מעוגלות.

צ'יפים של היררכיה

בקטע המרכזי של הכרטיסייה מוצגת היררכיית השכבות עם צ'יפים למידע נוסף, כמו קשרי הורה-צאצא בין השכבות, באופן הבא:

  • V: מציין שכבות גלויות.
  • RelZParent: מזהה שכבות עם צאצא RelZ.
  • RelZ: מזהה שכבות עם RelZParent ומשרטט אותן לפי סדר z כהיררכיה שלהן.
  • HWC: מזהה שכבות שנוצרו על ידי Hardware Composer.
  • GPU: מזהה שכבות שהורכבו על ידי ה-GPU.

בצד ימין של המסך מוצגת רשימה של מאפיינים שנבחרו בקפידה, וגם proto dump של כל מאפייני השכבות הזמינים. מידע נוסף על התכונות של הקטע proto dump זמין במאמר מאפיינים.

נכסים שנבחרו במיוחד

כדי להקל על ניפוי הבאגים, הצופה של SurfaceFlinger מספק רשימה שנבחרה בקפידה של מאפיינים, ומציג את המידע הנפוץ ביותר בפורמט מאורגן יותר:

מאפייני SurfaceFlinger

איור 2. מאפייני SurfaceFlinger.

הרשימה הזו כוללת את הקטגוריות הבאות.

חשיפה

הבלוק הזה מכיל מידע על הנראות של השכבה והסבר למה היא לא גלויה. היא כוללת:

  • דגלים: הדגלים האלה שולטים בחשיפה, לדוגמה, HIDDEN ו-OPAQUE.

  • הסיבה לחוסר הנראות: הסבר למה השכבה או הפלטפורמה לא נראות במסך, אם רלוונטי. למשל, אם הן מוסתרות על ידי עצמן או על ידי רכיב האב שלהן, או אם אין להן מאגר זמני לציור.

  • מוסתר, מוסתר חלקית או מכוסה:

    • מוסתר: השכבה הנוכחית מחושבת כגלויות, אבל שכבה אטומה אחרת מצוירת מעליה, ולכן השכבה הנוכחית לא גלויה. השכבה שמעל השכבה Occluded היא אטומה, כלומר, הדגל OPAQUE שלה מוגדר, או שפורמט הפיקסלים לא מכיל אלפא או שלא מוגדר אלפא בשכבה.
    • הסתרה חלקית: השכבה הנוכחית גלויה באופן חלקי כי השכבה האטומית שמצוירת מעליה לא מכסה אותה לגמרי. השכבה שמעל השכבה Partially Occluded אטומה, כלומר הדגל OPAQUE מוגדר או שפורמט הפיקסלים לא מכיל אלפא או שלא מוגדר אלפא בשכבה.
    • מוסתר: השכבה הנוכחית מוסתרת, באופן מלא או חלקי, על ידי שכבה לא אטומה, ויכול להיות שהיא עדיין גלויה במסך. השכבה שמעל השכבה Covered לא אטומה, כלומר הדגל OPAQUE לא מוגדר או שפורמט הפיקסלים מכיל אלפא או שהאלפא מוגדר בשכבה. עם זאת, בעקבות SurfaceFlinger, שכבת Covered מוצגת כשכבה גלויה, עבור שכבות מתחת ל-SurfaceFlinger:

      שכבה מכוסה ב-SurfaceFlinger

      איור 3. שכבה מכוסה ב-SurfaceFlinger.

גיאומטריה ואפקטים

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

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

באיור 2, השכבה מבקשת להגדיר את רדיוס הפינה ל-0 פיקסלים. עם זאת, באחת משכבות האב מוגדר רדיוס הפינה כ-97.419 פיקסלים, וזה הערך שמוחל.

חוצץ

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

  • מספר הפריים: מספר מצטבר שמתחיל כשיוצרים אפליקציה.
  • מסגרת יעד: משמשת לשינוי קנה המידה של המאגר לגבולות שמוגדרים על ידי מסגרת היעד.

היררכיה

המאפיינים הבאים מתארים איך נקבעת ההיררכיה של השכבות:

  • סדר Z: בהיררכיה של השכבות, סדר Z קובע את המיקום היחסי של שכבה ביחס לשכבות באותה רמה. שכבה עם ערך z של 0 ממוקמת מעל השכבה הראשית שלה. אם לכמה שכבות יש אותו ערך z, השכבה עם מזהה השכבה הגבוה יותר ממוקמת למעלה.
  • relative parent: מציין את שכבת ההורה היחסית בסדר z. הצאצא לא יורש אף מאפיין מההורה היחסי שלו, מלבד הדגל המוסתר.

קלט

המאפיינים הבאים מכילים מידע על אזור שניתן להקשה ועל מיקוד:

  • חיתוך אזור המגע עם הפריט: שימוש בגבולות השכבה לחיתוך האזור שאפשר לגעת בו.
  • החלפת אזור המגע בחיתוך: שימוש בחיתוך הנוכחי של השכבות כאזור שניתן לגעת בו.