Dump SurfaceFlinger memberikan snapshot SurfaceFlinger pada waktu tertentu. Fitur rekaman aktivitas SurfaceFlinger menampilkan urutan kronologis status yang memberikan insight berharga tentang cara jendela muncul di layar dan menentukan jendela mana yang menerima respons sentuhan di lokasi tertentu. Informasi ini penting untuk memecahkan masalah seperti aplikasi tidak merespons sentuhan saya atau Saya mengalami kedipan saat menonton video.
Penampil SurfaceFlinger Winscope menampilkan informasi ini untuk rekaman aktivitas yang dikumpulkan menggunakan mode aktif atau dibuat 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 melengkung.
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 pilihan, serta dump proto dari semua properti lapisan yang tersedia. Untuk mengetahui informasi selengkapnya tentang fitur bagian dump proto, lihat Properti.
Properti yang diseleksi
Untuk mempermudah proses pen-debug-an, penampil SurfaceFlinger menyediakan daftar properti yang telah dikurasi, yang menampilkan informasi yang paling sering digunakan dalam format yang lebih teratur:
Gambar 2. Properti SurfaceFlinger.
Daftar ini mencakup kategori berikut.
Visibilitas
Blok ini berisi informasi tentang visibilitas lapisan dan penjelasan tentang mengapa lapisan tidak terlihat. Direktori ini mencakup:
Flag: Ini mengontrol visibilitas, misalnya, HIDDEN
dan OPAQUE
.
Alasan tidak terlihat: Penjelasan mengapa lapisan atau permukaan tidak terlihat di layar jika berlaku, misalnya, tersembunyi dengan sendirinya atau oleh induknya, atau tidak memiliki buffer untuk digambar.
Tertutup, Tertutup sebagian, atau Tertutup:
- Tertutup: Lapisan saat ini dihitung sebagai terlihat, tetapi lapisan buram lain digambar di atasnya, sehingga membuat lapisan saat ini tidak terlihat. Lapisan di atas lapisan Tertutup buram, yaitu, baik tanda
OPAQUE
disetel, atau format piksel tidak berisi alfa atau tidak ada alfa yang disetel pada lapisan. - Tertutup Sebagian: Lapisan saat ini terlihat sebagian karena lapisan buram
yang digambar di atasnya tidak sepenuhnya menutupi lapisan saat ini. Lapisan di atas lapisan
Sebagian Tertutup bersifat buram, yaitu tanda
OPAQUE
disetel, atau format piksel tidak berisi alfa atau tidak ada alfa yang disetel pada lapisan. Tertutup: Lapisan saat ini tertutup, baik seluruhnya maupun sebagian, oleh lapisan yang tidak buram dan mungkin masih terlihat di layar. Lapisan di atas lapisan Covered tidak buram, yaitu, tanda
OPAQUE
tidak disetel atau format piksel berisi alfa atau alfa disetel pada lapisan. Namun, untuk rekaman aktivitas SurfaceFlinger, lapisan Tertutup ditampilkan sebagai terlihat, untuk lapisan di bawah SurfaceFlinger:Gambar 3. Lapisan yang tercakup di SurfaceFlinger.
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 diturunkan dalam hierarki dan diwarisi dari elemen induk.
Pada Gambar 2, lapisan meminta agar Radius Sudut ditetapkan ke 0 px. Namun, salah satu lapisan induknya menetapkan Radius Sudut menjadi 97,419 px, yang merupakan nilai yang diterapkan:
Buffer
Properti berikut menampilkan informasi tentang apakah lapisan memiliki buffer, ukuran, dan transformasinya.
- Nomor Frame: Nomor inkremental yang dimulai saat aplikasi dibuat.
- Frame Tujuan: Digunakan untuk menskalakan buffer ke batas yang ditentukan oleh frame tujuan.
Hierarki
Properti berikut menjelaskan cara hierarki lapisan ditentukan:
- Urutan z: Dalam hierarki lapisan, urutan z menentukan pemosisian relatif lapisan dalam kaitannya dengan lapisan 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.
- induk relatif: 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 fokus dan wilayah yang dapat disentuh:
- Pangkas wilayah sentuh dengan item: Gunakan batas lapisan untuk memangkas wilayah yang dapat disentuh.
- Ganti wilayah sentuh dengan pangkas: Menggunakan pangkas lapisan saat ini sebagai wilayah yang dapat disentuh.