SurfaceFlinger

SurfaceFlinger 덤프는 특정 시점의 SurfaceFlinger 스냅샷을 제공합니다. SurfaceFlinger 트레이스는 창이 화면에 표시되는 방식에 관한 유용한 통계를 제공하고 특정 위치에서 터치 응답을 수신하는 창을 결정하는 상태의 연대순 시퀀스를 갖추고 있습니다. 이 정보는 앱이 터치에 반응하지 않음 또는 동영상을 시청하는 동안 깜박임이 발생함과 같은 문제를 해결하는 데 필수적입니다.

Winscope의 SurfaceFlinger 뷰어는 활성 모드를 사용하여 수집된 트레이스 또는 버그 신고 (기본적으로 Droidfood 구성)를 받을 때 트랜잭션 트레이스에서 생성된 트레이스뿐 아니라 덤프에 관한 이 정보를 표시합니다.

트레이스 수집에 관한 자세한 내용은 SurfaceFlinger (레이어)를 참고하세요.

SurfaceFlinger 트레이스 분석

그림 1. SurfaceFlinger 트레이스 분석

화면 왼쪽에는 레이어의 3D 뷰가 표시됩니다. 직사각형 뷰는 레이어 경계, z 순서, 불투명도, 상대 Z, 둥근 모서리를 고려합니다.

계층 구조 칩

탭의 중앙 세그먼트에는 레이어 간의 상위-하위 관계와 같은 추가 정보에 관한 칩이 있는 레이어 계층 구조가 다음과 같이 표시됩니다.

  • V: 표시되는 레이어를 식별합니다.
  • RelZParent: RelZ 하위 요소가 있는 레이어를 식별합니다.
  • RelZ: RelZParent가 있는 레이어를 식별하고 z 순서로 계층 구조로 그립니다.
  • HWC: 하드웨어 컴포저로 구성된 레이어를 식별합니다.
  • GPU: GPU로 구성된 레이어를 식별합니다.

화면 오른쪽에는 선별된 속성 목록과 사용 가능한 모든 레이어 속성의 프로토 덤프가 표시됩니다. proto dump 섹션의 기능에 관한 자세한 내용은 속성을 참고하세요.

선별된 숙박 시설

디버깅을 쉽게 하기 위해 SurfaceFlinger 뷰어는 가장 자주 사용되는 정보를 더 체계적인 형식으로 제공하는 선별된 속성 목록을 제공합니다.

SurfaceFlinger 속성

그림 2. SurfaceFlinger 속성

이 목록에는 다음과 같은 카테고리가 포함됩니다.

공개 상태

이 블록에는 레이어 표시 상태에 관한 정보와 표시되지 않는 이유에 관한 설명이 포함됩니다. 세부내용은 다음과 같습니다.

플래그: 공개 상태를 제어합니다(예: HIDDENOPAQUE).

표시되지 않는 이유: 해당하는 경우 레이어 또는 노출 영역이 화면에 표시되지 않는 이유를 설명합니다(예: 자체 또는 상위 요소에 의해 숨겨져 있거나 그리기 버퍼가 없음).

가려짐, 부분적으로 가려짐 또는 가림:

  • 가려짐: 현재 레이어는 표시되는 것으로 계산되지만 다른 불투명 레이어가 그 위에 그려져 현재 레이어가 보이지 않습니다. 가려진 레이어 위의 레이어는 불투명합니다. 즉, OPAQUE 플래그가 설정되어 있거나, 픽셀 형식에 알파가 포함되어 있지 않거나, 레이어에 알파가 설정되어 있지 않습니다.
  • 부분적으로 가려짐: 현재 레이어 위에 그려진 불투명 레이어가 레이어를 완전히 가리지 않으므로 현재 레이어가 부분적으로 표시됩니다. 부분적으로 가려진 레이어 위의 레이어는 불투명합니다. 즉, OPAQUE 플래그가 설정되어 있거나 픽셀 형식에 알파가 포함되어 있지 않거나 레이어에 알파가 설정되어 있지 않습니다.
  • 가려짐: 현재 레이어가 불투명하지 않은 레이어로 완전히 또는 부분적으로 가려져 있으며 화면에 계속 표시될 수 있습니다. Covered 레이어 위의 레이어가 불투명하지 않습니다. 즉, OPAQUE 플래그가 설정되지 않았거나 픽셀 형식에 알파가 포함되어 있거나 레이어에 알파가 설정되어 있습니다. 그러나 SurfaceFlinger 트레이스의 경우 SurfaceFlinger 아래 레이어의 경우 Covered 레이어가 표시됩니다.

    SurfaceFlinger의 가려진 레이어

    그림 3. SurfaceFlinger의 가려진 레이어

도형 및 효과

이 섹션에서는 현재 레이어에 대해 요청되고 계산된 도형 및 효과를 설명합니다.

요청됨 섹션에는 레이어에 설정되는 속성이 표시됩니다. 반면 계산됨 섹션에는 레이어에 적용되는 속성이 표시됩니다. 이는 도형과 효과가 계층 구조를 따라 전달되고 상위 요소에서 상속되기 때문입니다.

그림 2에서 레이어는 모서리 반경을 0 픽셀로 설정하도록 요청합니다. 하지만 상위 레이어 중 하나가 모서리 반경을 97.419픽셀로 설정하여 이 값이 적용됩니다.

버퍼

다음 속성은 레이어에 버퍼가 있는지 여부, 크기, 변환에 관한 정보를 표시합니다.

  • 프레임 번호: 앱이 생성될 때 시작되는 증분 숫자입니다.
  • 대상 프레임: 버퍼를 대상 프레임으로 정의된 경계로 크기 조절하는 데 사용됩니다.

계층 구조

다음 속성은 레이어의 계층 구조가 결정되는 방식을 설명합니다.

  • z 순서: 레이어 계층 구조에서 z 순서는 레이어의 형제 레이어와의 상대적 배치를 결정합니다. z 값이 0인 레이어는 상위 요소 위에 배치됩니다. 여러 레이어가 동일한 z 값을 공유하는 경우 레이어 ID가 더 높은 레이어가 맨 위에 배치됩니다.
  • 상위 요소: z 순서의 상대 상위 레이어를 나타냅니다. 하위 요소는 숨김 플래그를 제외하고 상대 상위 요소에서 속성을 상속하지 않습니다.

입력

다음 속성에는 터치 가능한 영역과 포커스에 관한 정보가 포함됩니다.

  • 항목으로 터치 영역 자르기: 레이어 경계를 사용하여 터치 가능한 영역을 자릅니다.
  • 터치 영역을 자르기로 대체: 현재 레이어 자르기를 터치 가능한 영역으로 사용합니다.