Zrzuty SurfaceFlinger zawierają migawkę stanu usługi SurfaceFlinger w określonym momencie. Ślady SurfaceFlinger zawierają chronologiczną sekwencję stanów, które dostarczają cennych informacji o tym, jak okno pojawia się na ekranie, i określają, które okno otrzymuje odpowiedzi na dotyk w określonych lokalizacjach. Te informacje są niezbędne do rozwiązywania problemów, takich jak aplikacja nie reaguje na dotyk lub podczas oglądania filmu wystąpiło migotanie.
Przeglądarka SurfaceFlinger w Winscope wyświetla te informacje w przypadku śladów zebranych w trybie aktywnym lub wygenerowanych na podstawie śladu transakcji podczas tworzenia raportu o błędzie (domyślnie konfiguracja Droidfood), a także w przypadku zrzutów.
Więcej informacji o zbieraniu śladów znajdziesz w sekcji SurfaceFlinger (warstwy).
Rysunek 1. Analiza logu czasu SurfaceFlinger.
Po lewej stronie ekranu znajduje się widok 3D warstw. Widok prostokątów uwzględnia granice warstwy, kolejność nakładania elementów, krycie, względną wartość Z i zaokrąglone rogi.
Elementy hierarchii
Środkowa część karty zawiera hierarchię warstw z informacjami w postaci elementów, np. relacje nadrzędny-podrzędny między warstwami:
- V: identyfikuje widoczne warstwy.
- RelZParent: identyfikuje warstwy z elementem podrzędnym RelZ.
- RelZ: identyfikuje warstwy z elementem RelZParent, które są rysowane w kolejności z określonej w hierarchii.
- HWC: identyfikuje warstwy utworzone przez kompozytor sprzętowy.
- GPU: identyfikuje warstwy utworzone przez procesor graficzny.
Po prawej stronie ekranu znajduje się lista wyselekcjonowanych właściwości oraz zrzut protokołu wszystkich dostępnych właściwości warstwy. Więcej informacji o funkcjach sekcji zrzutu protokołu znajdziesz w artykule Właściwości.
Wybrane usługi
Aby ułatwić debugowanie, przeglądarka SurfaceFlinger zawiera wyselekcjonowaną listę właściwości, prezentując najczęściej używane informacje w bardziej uporządkowanym formacie:
Rysunek 2. Właściwości SurfaceFlinger.
Lista zawiera te kategorie:
Widoczność
Ten blok zawiera informacje o widoczności warstwy i wyjaśnienie, dlaczego nie jest ona widoczna. Usługa ta obejmuje:
Flagi: kontrolują widoczność, np. HIDDEN
i OPAQUE
.
Przyczyna niewidoczności: wyjaśnienie, dlaczego warstwa lub powierzchnia jest niewidoczna na ekranie (jeśli dotyczy), np. jest ukryta sama lub przez element nadrzędny albo nie ma bufora do rysowania.
Zasłonięte, Częściowo zasłonięte lub Zasłonięte:
- Zasłonięta: bieżąca warstwa jest obliczana jako widoczna, ale na jej wierzchu jest rysowana inna nieprzezroczysta warstwa, przez co bieżąca warstwa jest niewidoczna. Warstwa nad warstwą Occluded jest nieprzezroczysta, tzn. ma ustawioną flagę
OPAQUE
lub format piksela nie zawiera kanału alfa albo w warstwie nie jest ustawiony kanał alfa. - Częściowo zasłonięta: bieżąca warstwa jest częściowo widoczna, ponieważ nieprzezroczysta warstwa narysowana na niej nie zakrywa jej w całości. Warstwa nad warstwą Częściowo zasłonięta jest nieprzezroczysta, tzn. ustawiona jest flaga
OPAQUE
lub format piksela nie zawiera kanału alfa albo w warstwie nie jest ustawiony kanał alfa. Zakryta: bieżąca warstwa jest całkowicie lub częściowo zakryta przez nieprzezroczystą warstwę i może być nadal widoczna na ekranie. Warstwa powyżej warstwy Covered nie jest nieprzezroczysta, tzn. flaga
OPAQUE
nie jest ustawiona lub format piksela zawiera kanał alfa albo kanał alfa jest ustawiony w warstwie. W przypadku śladów usługi SurfaceFlinger warstwa Covered jest widoczna w przypadku warstw poniżej usługi SurfaceFlinger:Rysunek 3. Warstwa pokryta w usłudze SurfaceFlinger.
Geometria i efekty
W tej sekcji opisujemy żądaną i obliczoną geometrię oraz efekty dla bieżącej warstwy.
W sekcji Żądane wyświetlają się właściwości ustawiane w warstwie. Z kolei w sekcji Obliczone wyświetlane są właściwości, które są stosowane do warstwy. Wynika to z faktu, że geometria i efekty są przekazywane w hierarchii i dziedziczone z elementów nadrzędnych.
Na rysunku 2 warstwa wymaga ustawienia promienia narożnika na 0 pikseli. Jednak jedna z warstw nadrzędnych ma ustawioną promień narożnika na 97, 419 piksela, co jest wartością zastosowaną:
Bufor
Poniższe właściwości wyświetlają informacje o tym, czy warstwa ma bufor, jego rozmiar i przekształcenie.
- Numer klatki: numer rosnący, który zaczyna się od momentu utworzenia aplikacji.
- Ramka docelowa: służy do skalowania bufora do granic określonych przez ramkę docelową.
Hierarchia
O tym, jak jest określana hierarchia warstw, decydują te właściwości:
- Kolejność nakładania elementów: w hierarchii warstw kolejność nakładania elementów określa względne położenie warstwy w stosunku do innych warstw. Warstwa o wartości z równej 0 jest umieszczana nad elementem nadrzędnym. Jeśli kilka warstw ma tę samą wartość z, warstwa o wyższym identyfikatorze warstwy jest umieszczana na górze.
- względna warstwa nadrzędna: wskazuje względną warstwę nadrzędną w kolejności z. Element podrzędny nie dziedziczy żadnych właściwości po względnym elemencie nadrzędnym z wyjątkiem flagi ukrycia.
Urządzenie wejściowe
Te właściwości zawierają informacje o obszarze, który można dotknąć, i o fokusie:
- Przytnij obszar dotykowy za pomocą elementu: użyj granic warstwy, aby przyciąć obszar dotykowy.
- Zastąp obszar dotykowy przyciętym obrazem: użyj przycięcia bieżących warstw jako obszaru dotykowego.