ข้อมูลสรุปของ SurfaceFlinger จะแสดงภาพรวมของ SurfaceFlinger ณ เวลาหนึ่งๆ การติดตาม SurfaceFlinger จะแสดงลําดับสถานะตามลําดับเวลาซึ่งให้ข้อมูลเชิงลึกที่มีคุณค่าเกี่ยวกับลักษณะที่หน้าต่างปรากฏบนหน้าจอและระบุหน้าต่างที่ตอบสนองต่อการสัมผัส ณ ตําแหน่งหนึ่งๆ ข้อมูลนี้จำเป็นต่อการแก้ปัญหา เช่น แอปไม่ตอบสนองต่อการสัมผัสหรือฉันพบปัญหาภาพกะพริบขณะดูวิดีโอ
เครื่องมือดู SurfaceFlinger ของ Winscope จะแสดงข้อมูลนี้สําหรับการติดตามที่รวบรวมโดยใช้โหมดที่ใช้งานอยู่หรือที่สร้างขึ้นจากการติดตามธุรกรรมเมื่อส่งรายงานข้อบกพร่อง (โดยค่าเริ่มต้นคือการกำหนดค่า Droidfood) รวมถึงสําหรับการถ่ายโอนข้อมูล
ดูข้อมูลเพิ่มเติมเกี่ยวกับการรวบรวมร่องรอยได้ที่ SurfaceFlinger (เลเยอร์)
รูปที่ 1 การวิเคราะห์ร่องรอย SurfaceFlinger
ด้านซ้ายของหน้าจอจะแสดงมุมมอง 3 มิติของเลเยอร์ มุมมองสี่เหลี่ยมผืนผ้าจะพิจารณาขอบเขตของเลเยอร์ ลําดับ z ความทึบแสง Z แบบสัมพัทธ์ และมุมโค้งมน
ชิปลําดับชั้น
ส่วนกลางของแท็บจะแสดงลําดับชั้นของเลเยอร์พร้อมชิปสําหรับข้อมูลเพิ่มเติม เช่น ความสัมพันธ์หลักและย่อยระหว่างเลเยอร์ ดังนี้
- V: ระบุเลเยอร์ที่มีการแสดง
- RelZParent: ระบุเลเยอร์ที่มี RelZ ย่อย
- RelZ: ระบุเลเยอร์ที่มี RelZParent และวาดตามลําดับ z ตามลําดับชั้น
- HWC: ระบุเลเยอร์ที่สร้างโดยเครื่องมือแต่งภาพฮาร์ดแวร์
- GPU: ระบุเลเยอร์ที่สร้างโดย GPU
ด้านขวาของหน้าจอจะมีรายการพร็อพเพอร์ตี้ที่ได้รับการดูแลจัดการ รวมถึงการดัมพ์โปรโตของพร็อพเพอร์ตี้เลเยอร์ทั้งหมดที่มี ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์ของส่วนการดัมพ์โปรโตได้ที่พร็อพเพอร์ตี้
ที่พักที่ได้รับการดูแลจัดการ
โปรแกรมดู SurfaceFlinger มีรายการพร็อพเพอร์ตี้ที่ดูแลจัดการซึ่งแสดงข้อมูลที่พบบ่อยที่สุดในรูปแบบที่เป็นระเบียบมากขึ้น เพื่อช่วยให้การแก้ไขข้อบกพร่องง่ายขึ้น
รูปที่ 2 พร็อพเพอร์ตี้ SurfaceFlinger
รายการนี้มีหมวดหมู่ต่อไปนี้
ระดับการแชร์
บล็อกนี้มีข้อมูลเกี่ยวกับระดับการมองเห็นเลเยอร์และคําอธิบายสาเหตุที่เลเยอร์นั้นไม่แสดง แอปประกอบด้วย
Flag: ควบคุมระดับการเข้าถึง เช่น HIDDEN
และ OPAQUE
เหตุผลที่มองไม่เห็น: คำอธิบายสาเหตุที่เลเยอร์หรือพื้นผิวมองไม่เห็นบนหน้าจอ (หากมี) เช่น ซ่อนอยู่ด้วยตัวเลเยอร์เองหรือองค์ประกอบหลัก หรือไม่มีบัฟเฟอร์ที่จะวาด
บดบัง บดบังบางส่วน หรือบดบัง
- บดบัง: ระบบคำนวณว่าเลเยอร์ปัจจุบันแสดงอยู่ แต่มีเลเยอร์ทึบอีกเลเยอร์หนึ่งวาดทับอยู่ ทำให้เลเยอร์ปัจจุบันมองไม่เห็น เลเยอร์ที่อยู่เหนือเลเยอร์บดบังทึบแสง กล่าวคือ มีการตั้งค่า Flag
OPAQUE
หรือรูปแบบพิกเซลไม่มีค่าอัลฟ่า หรือไม่มีการตั้งค่าอัลฟ่าในเลเยอร์ - บดบังบางส่วน: เลเยอร์ปัจจุบันมองเห็นได้บางส่วนเนื่องจากเลเยอร์ทึบที่วาดทับไม่ได้ปกปิดเลเยอร์นั้นทั้งหมด เลเยอร์ที่อยู่เหนือเลเยอร์บดบังบางส่วนทึบแสง กล่าวคือ มีการตั้งค่า Flag
OPAQUE
หรือรูปแบบพิกเซลไม่มีค่าอัลฟ่า หรือไม่มีการตั้งค่าอัลฟ่าในเลเยอร์ ถูกบดบัง: เลเยอร์ปัจจุบันถูกบดบังทั้งหมดหรือบางส่วนโดยเลเยอร์ที่ไม่ทึบแสง และอาจยังมองเห็นบนหน้าจอได้ เลเยอร์ที่อยู่เหนือเลเยอร์ที่ปกคลุมไม่ใช่เลเยอร์ทึบแสง กล่าวคือ ไม่ได้ตั้งค่า Flag
OPAQUE
หรือรูปแบบพิกเซลมีค่าอัลฟ่าหรือมีการตั้งค่าอัลฟ่าในเลเยอร์ อย่างไรก็ตาม สําหรับร่องรอยของ SurfaceFlinger เลเยอร์ที่ปกคลุมจะแสดงเป็น "มองเห็นได้" สําหรับเลเยอร์ที่อยู่ใต้ SurfaceFlingerรูปที่ 3 เลเยอร์ที่มีหลังคาคลุมใน SurfaceFlinger
เรขาคณิตและเอฟเฟกต์
ส่วนนี้จะอธิบายเรขาคณิตและเอฟเฟกต์ที่ขอและคำนวณแล้วสำหรับเลเยอร์ปัจจุบัน
ส่วนที่ขอจะแสดงพร็อพเพอร์ตี้ที่ตั้งค่าไว้ในเลเยอร์ ส่วนที่คำนวณแล้วจะแสดงพร็อพเพอร์ตี้ที่ใช้กับเลเยอร์ ความแตกต่างนี้เกิดขึ้นเนื่องจากเรขาคณิตและเอฟเฟกต์จะส่งผ่านลําดับชั้นและรับค่ามาจากองค์ประกอบหลัก
ในรูปที่ 2 เลเยอร์จะขอให้ตั้งค่ารัศมีมุมเป็น 0 พิกเซล แต่เลเยอร์หลักเลเยอร์ใดเลเยอร์หนึ่งกำหนดรัศมีมุมเป็น 97.419 พิกเซล ซึ่งเป็นค่าที่ใช้
บัฟเฟอร์
พร็อพเพอร์ตี้ต่อไปนี้แสดงข้อมูลว่าเลเยอร์มีบัฟเฟอร์ มีขนาดเท่าใด และมีการแปลงหรือไม่
- หมายเลขเฟรม: ตัวเลขที่เพิ่มขึ้นเรื่อยๆ โดยเริ่มจากการสร้างแอป
- เฟรมปลายทาง: ใช้เพื่อปรับขนาดบัฟเฟอร์ให้เท่ากับขอบเขตที่กําหนดโดยเฟรมปลายทาง
ลำดับชั้น
พร็อพเพอร์ตี้ต่อไปนี้อธิบายวิธีกําหนดลําดับชั้นของเลเยอร์
- ลําดับ z: ในลําดับชั้นของเลเยอร์ ลําดับ z จะกําหนดตําแหน่งสัมพัทธ์ของเลเยอร์หนึ่งๆ เทียบกับเลเยอร์อื่นๆ ในลําดับชั้นเดียวกัน เลเยอร์ที่มีค่า z เท่ากับ 0 จะวางอยู่เหนือเลเยอร์หลัก หากเลเยอร์หลายเลเยอร์ใช้ค่า z เดียวกัน ระบบจะวางเลเยอร์ที่มีรหัสเลเยอร์สูงกว่าไว้ด้านบน
- relative parent: ระบุเลเยอร์หลักแบบสัมพัทธ์ในลําดับ z รายการย่อยจะไม่รับค่าพร็อพเพอร์ตี้ใดๆ จากรายการหลักที่เกี่ยวข้อง ยกเว้นแฟล็กที่ซ่อนอยู่
อินพุต
พร็อพเพอร์ตี้ต่อไปนี้มีข้อมูลเกี่ยวกับขอบเขตที่สัมผัสได้และโฟกัส
- ครอบตัดพื้นที่ที่สัมผัสด้วยรายการ: ใช้ขอบเขตเลเยอร์เพื่อครอบตัดพื้นที่ที่สัมผัสได้
- แทนที่ภูมิภาคการแตะด้วยครอบตัด: ใช้การครอบตัดเลเยอร์ปัจจุบันเป็นภูมิภาคที่สัมผัสได้