SurfaceFlinger

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.

Analisis rekaman aktivitas SurfaceFlinger

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:

Properti SurfaceFlinger

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, HIDDEN dan OPAQUE.

  • 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 OPAQUE ditetapkan, 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 OPAQUE tidak 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:

      Lapisan yang dicakup di SurfaceFlinger

      Gambar 3. Lapisan tertutup 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 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.