Dump SurfaceFlinger memberikan snapshot SurfaceFlinger pada waktu tertentu. Rekaman aktivitas SurfaceFlinger menampilkan urutan status kronologis yang memberikan insight berharga tentang cara jendela muncul di layar dan menentukan jendela mana yang menerima respons sentuh 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 dihasilkan dari rekaman aktivitas transaksi saat mengambil laporan bug (secara default, konfigurasi Droidfood), serta untuk dump.
Lihat SurfaceFlinger (lapisan) untuk informasi selengkapnya tentang pengumpulan rekaman aktivitas.
Gambar 1. Analisis rekaman aktivitas SurfaceFlinger.
Sisi kiri layar menampilkan tampilan 3D lapisan. Tampilan persegi 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 antarlapisan, 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 proto dump dari semua properti lapisan yang tersedia. Untuk mengetahui informasi selengkapnya tentang fitur bagian dump proto, lihat Properti.
Properti yang diseleksi
Untuk mempermudah proses debug, penampil SurfaceFlinger menyediakan daftar properti yang diseleksi, 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 alasan lapisan tidak terlihat. Direktori ini mencakup:
Flag: Flag ini mengontrol visibilitas, misalnya, HIDDEN
dan OPAQUE
.
Alasan ketidakjelasan: Penjelasan mengapa lapisan atau platform tidak terlihat di layar jika berlaku, misalnya, disembunyikan oleh dirinya sendiri atau induk, atau tidak memiliki buffer untuk menggambar.
Tertutup, Tertutup sebagian, atau Tertutupi:
- Tertutup: Lapisan saat ini dihitung sebagai terlihat, tetapi lapisan
buram lainnya digambar di atasnya, sehingga lapisan saat ini tidak terlihat. Lapisan
di atas lapisan Occluded bersifat buram, yaitu tanda
OPAQUE
ditetapkan, atau format piksel tidak berisi alfa atau tidak ada alfa yang ditetapkan pada lapisan. - Tertutup Sebagian: Lapisan saat ini terlihat sebagian karena lapisan buram
yang digambar di atasnya tidak sepenuhnya menutupinya. Lapisan di atas
lapisan Partially Occluded bersifat buram, yaitu tanda
OPAQUE
ditetapkan, atau format piksel tidak berisi alfa atau tidak ada alfa yang ditetapkan 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 Covered 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 di lapisan. Sebaliknya, bagian Dihitung menampilkan properti yang sedang diterapkan ke lapisan. Perbedaan ini karena geometri dan efek diteruskan ke hierarki dan diwarisi dari elemen induk.
Pada Gambar 2, lapisan meminta Corner Radius 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, ukurannya, dan transformasi.
- Frame Number: 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 menentukan hierarki lapisan:
- Urutan z: Dalam hierarki lapisan, urutan z menentukan posisi relatif lapisan dalam kaitannya dengan saudaranya. 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 tanda tersembunyi.
Input
Properti berikut berisi informasi tentang fokus dan area yang dapat disentuh:
- Pangkas area sentuh dengan item: Gunakan batas lapisan untuk memangkas area yang dapat disentuh.
- Mengganti area sentuh dengan pemangkasan: Gunakan pemangkasan lapisan saat ini sebagai area yang dapat disentuh.