Dump SurfaceFlinger memberikan snapshot SurfaceFlinger pada waktu tertentu. Trace SurfaceFlinger menampilkan urutan kronologis status yang memberikan insight berharga tentang tampilan jendela di layar dan menentukan jendela mana yang menerima respons sentuh di lokasi tertentu. Informasi ini membantu Anda memecahkan masalah, seperti aplikasi tidak merespons sentuhan saya atau Saya mengalami kedipan saat menonton video.
Di Winscope, penampil SurfaceFlinger menampilkan informasi ini untuk rekaman aktivitas yang Anda kumpulkan menggunakan mode aktif atau yang dihasilkan dari rekaman aktivitas transaksi saat mengambil laporan bug (secara default, konfigurasi Droidfood), serta untuk dump.
Lihat SurfaceFlinger (lapisan) untuk mengetahui informasi selengkapnya tentang pengumpulan rekaman aktivitas.
Gambar 1. Analisis rekaman aktivitas SurfaceFlinger.
Sisi kiri layar menampilkan tampilan 3D lapisan. Tampilan rects mempertimbangkan batas lapisan, urutan Z, opasitas, Z relatif, dan sudut membulat.
Chip hierarki
Segmen tengah tab menampilkan hierarki lapisan dengan chip untuk informasi selengkapnya, seperti hubungan induk-turunan antar-lapisan, sebagai berikut:
- V: Mengidentifikasi lapisan yang terlihat.
- RelZParent: Mengidentifikasi lapisan dengan turunan RelZ.
- RelZ: Mengidentifikasi lapisan dengan RelZParent dan digambar dalam urutan Z sebagai hierarkinya.
- HWC: Mengidentifikasi lapisan yang disusun oleh Hardware Composer.
- GPU: Mengidentifikasi lapisan yang disusun oleh GPU.
Sisi kanan layar menampilkan daftar properti yang telah diseleksi, serta proto dump semua properti lapisan yang tersedia. Untuk mengetahui informasi selengkapnya tentang fitur bagian proto dump, lihat Properti.
Properti yang diseleksi
Untuk mempermudah proses debug, penampil SurfaceFlinger menyediakan daftar properti yang telah diseleksi, yang menyajikan informasi yang paling umum digunakan dalam format yang lebih tertata:
Gambar 2. Properti SurfaceFlinger.
Daftar ini mencakup kategori berikut.
Visibilitas
Blok ini berisi informasi tentang visibilitas lapisan dan penjelasan tentang alasan lapisan tidak terlihat. Ini mencakup:
Flag: Flag ini mengontrol visibilitas, misalnya,
HIDDENdanOPAQUE.Invisibility reason: Penjelasan tentang alasan lapisan atau platform tidak terlihat di layar jika berlaku, misalnya, disembunyikan oleh lapisan itu sendiri atau induknya, atau tidak memiliki buffer untuk digambar.
Occluded, Partially Occluded, atau Covered:
- Occluded: Lapisan saat ini dihitung sebagai terlihat, tetapi lapisan buram lain digambar di atasnya, sehingga lapisan saat ini tidak terlihat. Lapisan di atas lapisan Occluded bersifat buram, yaitu, flag
OPAQUE-nya ditetapkan, atau format piksel tidak berisi alfa atau tidak ada alfa yang ditetapkan pada lapisan. - Partially Occluded: Lapisan saat ini terlihat sebagian karena lapisan buram yang digambar di atasnya tidak sepenuhnya menutupi lapisan saat ini. Lapisan di atas lapisan Partially Occluded bersifat buram, yaitu, flag
OPAQUEditetapkan, atau format piksel tidak berisi alfa atau tidak ada alfa yang ditetapkan pada lapisan. Covered: Lapisan saat ini ditutupi, baik seluruhnya maupun sebagian, oleh lapisan non-buram dan mungkin masih terlihat di layar. Lapisan di atas lapisan Covered tidak buram, yaitu, flag
OPAQUEtidak ditetapkan atau format piksel berisi alfa atau alfa ditetapkan pada lapisan. Namun, untuk rekaman aktivitas SurfaceFlinger, lapisan Covered ditampilkan sebagai terlihat, untuk lapisan di bawah SurfaceFlinger:
Gambar 3. Lapisan tertutup di SurfaceFlinger.
- Occluded: Lapisan saat ini dihitung sebagai terlihat, tetapi lapisan buram lain digambar di atasnya, sehingga lapisan saat ini tidak terlihat. Lapisan di atas lapisan Occluded bersifat buram, yaitu, flag
Geometri dan Efek
Bagian ini menjelaskan geometri dan efek yang diminta dan dihitung untuk lapisan saat ini.
Bagian Requested menampilkan properti yang ditetapkan pada lapisan. Sebaliknya, bagian Calculated menampilkan properti yang diterapkan ke lapisan. Perbedaan ini terjadi karena geometri dan efek diteruskan ke hierarki dan diwarisi dari elemen induk.
Pada Gambar 2, lapisan meminta Corner Radius ditetapkan ke 0 piksel. Namun, salah satu lapisan induknya menetapkan Corner Radius ke 97,419 piksel, yang merupakan nilai yang diterapkan.
Buffer
Properti berikut menampilkan informasi tentang apakah lapisan memiliki buffer, ukurannya, dan transformasinya:
- Frame Number: Angka inkremental yang dimulai saat aplikasi dibuat.
- Destination Frame: Digunakan untuk menskalakan buffer ke batas yang ditentukan oleh frame tujuan.
Hierarki
Properti berikut menjelaskan cara hierarki lapisan ditentukan:
- z-order: Dalam hierarki lapisan, urutan Z menentukan posisi relatif lapisan dalam kaitannya dengan elemen yang setara. Lapisan dengan nilai z 0 diposisikan di atas induknya. Jika beberapa lapisan memiliki nilai z yang sama, lapisan dengan ID lapisan yang lebih tinggi akan ditempatkan di atas.
- relative parent: Menunjukkan lapisan induk relatif dalam urutan Z. Turunan tidak mewarisi properti apa pun dari induk relatifnya, kecuali flag tersembunyi.
Input
Properti berikut berisi informasi tentang wilayah yang dapat disentuh dan fokus:
- Crop touch region with item: Menggunakan batas lapisan untuk memangkas wilayah yang dapat disentuh.
- Replace touch region with crop: Menggunakan pemangkasan lapisan saat ini sebagai wilayah yang dapat disentuh.