SurfaceFlinger 덤프는 특정 시점의 SurfaceFlinger 스냅샷을 제공합니다. SurfaceFlinger 트레이스는 창이 화면에 표시되는 방식에 관한 유용한 정보를 제공하고 특정 위치에서 터치 응답을 수신하는 창을 결정하는 상태의 연대순 시퀀스를 갖습니다. 이 정보는 앱이 터치에 반응하지 않음 또는 동영상을 시청하는 동안 깜박임이 발생함과 같은 문제를 해결하는 데 필수적입니다.
Winscope의 SurfaceFlinger 뷰어는 활성 모드를 사용하여 수집된 트레이스 또는 버그 신고 (기본적으로 Droidfood 구성)를 받을 때 트랜잭션 트레이스에서 생성된 트레이스뿐 아니라 덤프에 관한 이 정보를 표시합니다.
화면 왼쪽에는 레이어의 3D 뷰가 표시됩니다. 직사각형 뷰는 레이어 경계, z 순서, 불투명도, 상대 Z, 둥근 모서리를 고려합니다.
계층 구조 칩
탭의 중앙 세그먼트에는 레이어 간의 상위-하위 관계와 같은 자세한 정보를 위한 칩이 있는 레이어 계층 구조가 다음과 같이 표시됩니다.
V: 표시되는 레이어를 식별합니다.
RelZParent: RelZ 하위 요소가 있는 레이어를 식별합니다.
RelZ: RelZParent가 있는 레이어를 식별하고 z 순서로 계층 구조로 그립니다.
HWC: 하드웨어 컴포저로 구성된 레이어를 식별합니다.
GPU: GPU로 구성된 레이어를 식별합니다.
화면 오른쪽에는 선별된 속성 목록과 사용 가능한 모든 레이어 속성의 프로토 덤프가 표시됩니다. proto dump 섹션의 기능에 관한 자세한 내용은 속성을 참고하세요.
선별된 숙박 시설
디버깅을 쉽게 하기 위해 SurfaceFlinger 뷰어는 가장 자주 사용되는 정보를 더 체계적인 형식으로 제공하는 선별된 속성 목록을 제공합니다.
그림 2. SurfaceFlinger 속성
이 목록에는 다음과 같은 카테고리가 포함됩니다.
공개 상태
이 블록에는 레이어 표시 상태에 관한 정보와 표시되지 않는 이유에 관한 설명이 포함됩니다. 세부내용은 다음과 같습니다.
플래그: 공개 상태를 제어합니다(예: HIDDEN 및 OPAQUE).
표시되지 않는 이유: 해당하는 경우 레이어 또는 노출 영역이 화면에 표시되지 않는 이유를 설명합니다(예: 자체 또는 상위 요소에 의해 숨겨져 있거나 그리기 버퍼가 없음).
가려짐, 부분적으로 가려짐 또는 가림:
가려짐: 현재 레이어는 표시되는 것으로 계산되지만 다른 불투명 레이어가 그 위에 그려져 현재 레이어가 보이지 않게 됩니다. 가려진 레이어 위의 레이어는 불투명합니다. 즉, OPAQUE 플래그가 설정되어 있거나, 픽셀 형식에 알파가 포함되어 있지 않거나, 레이어에 알파가 설정되어 있지 않습니다.
부분적으로 가려짐: 현재 레이어 위에 그려진 불투명 레이어가 레이어를 완전히 가리지 않으므로 현재 레이어가 부분적으로 표시됩니다. 부분적으로 가려진 레이어 위의 레이어는 불투명합니다. 즉, OPAQUE 플래그가 설정되어 있거나, 픽셀 형식에 알파가 포함되어 있지 않거나, 레이어에 알파가 설정되어 있지 않습니다.
가려짐: 현재 레이어가 불투명하지 않은 레이어로 완전히 또는 부분적으로 가려져 있으며 화면에 계속 표시될 수 있습니다. Covered 레이어 위의 레이어가 불투명하지 않습니다. 즉, OPAQUE 플래그가 설정되지 않았거나 픽셀 형식에 알파가 포함되어 있거나 레이어에 알파가 설정되어 있습니다. 그러나 SurfaceFlinger 트레이스의 경우 SurfaceFlinger 아래의 레이어에 Covered 레이어가 표시됩니다.
그림 3. SurfaceFlinger의 가려진 레이어
도형 및 효과
이 섹션에서는 현재 레이어에 대해 요청되고 계산된 도형 및 효과를 설명합니다.
요청됨 섹션에는 레이어에 설정되는 속성이 표시됩니다. 반면 계산됨 섹션에는 레이어에 적용되는 속성이 표시됩니다. 이는 도형과 효과가 계층 구조를 따라 전달되고 상위 요소에서 상속되기 때문입니다.
그림 2에서 레이어는 모서리 반경을 0px로 설정하도록 요청합니다. 하지만 상위 레이어 중 하나가 모서리 반경을 97.419픽셀로 설정하여 이 값이 적용됩니다.
버퍼
다음 속성은 레이어에 버퍼가 있는지 여부, 크기, 변환에 관한 정보를 표시합니다.
프레임 번호: 앱이 생성될 때 시작되는 증분 숫자입니다.
대상 프레임: 버퍼를 대상 프레임으로 정의된 경계로 크기 조절하는 데 사용됩니다.
계층 구조
다음 속성은 레이어 계층 구조가 결정되는 방식을 설명합니다.
z 순서: 레이어 계층 구조에서 z 순서는 레이어의 형제 레이어와의 상대적 배치를 결정합니다. z 값이 0인 레이어는 상위 요소 위에 배치됩니다. 여러 레이어가 동일한 z 값을 공유하는 경우 레이어 ID가 더 높은 레이어가 맨 위에 배치됩니다.
상위 요소: z 순서의 상대 상위 레이어를 나타냅니다.
하위 요소는 숨김 플래그를 제외하고 상대 상위 요소에서 속성을 상속하지 않습니다.
입력
다음 속성에는 터치 가능한 영역과 포커스에 관한 정보가 포함됩니다.
항목으로 터치 영역 자르기: 레이어 경계를 사용하여 터치 가능한 영역을 자릅니다.
터치 영역을 자르기로 대체: 현재 레이어 자르기를 터치 가능한 영역으로 사용합니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# SurfaceFlinger\n\n[SurfaceFlinger](/docs/core/graphics/surfaceflinger-windowmanager#surfaceflinger)\ndumps provide a snapshot of SurfaceFlinger at a specific time. SurfaceFlinger\ntraces feature a chronological sequence of states that provide valuable insights\ninto how a window appears on screen and determines which window receives touch\nresponses at specific locations. This information is essential for\ntroubleshooting issues such as *the app isn't responding to my touch* or *I\nexperienced flickering while watching a video*.\n\nWinscope's SurfaceFlinger viewer displays this information for traces\ncollected using either the active mode or generated from the transactions trace\nwhen taking a bug report (by default, the Droidfood configuration), as well as\nfor dumps.\n\nSee [SurfaceFlinger (layers)](/docs/core/graphics/winscope/capture/adb#capture-adb-sf)\nfor more information about trace collection.\n\n**Figure 1.** SurfaceFlinger trace analysis.\n\nThe left side of the screen features a 3D view of the layers. The rects view\nconsiders layer bounds, z-order, opacity, relative Z, and rounded corners.\n\nHierarchy chips\n---------------\n\nThe tab's central segment shows the layer hierarchy with chips for more\ninformation, such as the parent-child relationships between layers, as follows:\n\n- **V**: Identifies visible layers.\n- **RelZParent** : Identifies layers with a **RelZ** child.\n- **RelZ** : Identifies layers with a **RelZParent** and drawn in z-order as their hierarchy.\n\n| **Warning:** The following items are deprecated since Android 15 but available on older traces.\n\n- **HWC**: Identifies layers composed by the Hardware Composer.\n- **GPU**: Identifies layers composed by the GPU.\n\nThe right side of the screen features a list of curated **properties** , as well\nas a **proto dump** of all available layer properties. For more information\nabout the features of the proto dump section see\n[Properties](/docs/core/graphics/winscope/analyze/overview#analyze-properties).\n\nCurated properties\n------------------\n\nTo make debugging easier, the SurfaceFlinger viewer provides a curated list of\nproperties, presenting the most commonly used information in a more organized\nformat:\n\n**Figure 2.** SurfaceFlinger properties.\n\nThis list includes the following categories.\n\n### Visibility\n\nThis block contains information about the layer visibility and an explanation to\nwhy it isn't visible. It includes:\n\n**Flags:** These control visibility, for example, `HIDDEN` and `OPAQUE`.\n\n**Invisibility reason:** An explanation for why the layer or surface is\ninvisible on the screen if applicable, for example, hidden by itself or its\nparent, or have no buffer to draw.\n\n**Occluded** , **Partially occluded** , or **Covered:**\n\n- **Occluded:** The current layer is calculated as visible, but another opaque layer is drawn on top of it, making the current layer invisible. The layer above the **Occluded** layer is opaque, that is, either its `OPAQUE` flag is set, or the pixel format doesn't contain alpha or no alpha is set on the layer.\n- **Partially Occluded:** The current layer is partially visible as the opaque layer drawn on top of it doesn't entirely cover it. The layer above the **Partially Occluded** layer is opaque, that is, the `OPAQUE` flag is set, or the pixel format doesn't contain alpha or no alpha is set on the layer.\n- **Covered:** The current layer is covered, either entirely or partially, by\n a non opaque layer and may still be visible on screen. The layer above the\n **Covered** layer isn't opaque, that is, the `OPAQUE` flag isn't set or\n the pixel format contains alpha or alpha is set on the layer. However, for\n SurfaceFlinger traces, a **Covered** layer is shown as visible, for layers\n below SurfaceFlinger:\n\n **Figure 3.** Covered layer on SurfaceFlinger.\n | **Note:** A non opaque layer supports translucent pixels. If the layer contents are fully opaque the layer below it won't appear on screen.\n\n| **Note:** The layer may be considered visible, but isn't shown on screen if it's occluded by one or more opaque layers or covered by a translucent layer with opaque pixels.\n\n### Geometry and Effects\n\nThis section describes the requested and computed geometry and effects for the\ncurrent layer.\n\nThe **Requested** section shows the properties being set on the layer. In\ncontrast, the **Calculated** section displays the properties that are being\napplied to the layer. This distinction is because geometry and effects are\npassed down the hierarchy and inherited from parent elements.\n\nIn Figure 2, the layer requests the **Corner Radius** to be set to\n0 px. However, one of its parent layers sets the **Corner Radius** to be\n97.419 px, which is the applied value:\n\n### Buffer\n\nThe following properties display information about whether the layer has a\nbuffer, its size, and transform.\n\n- **Frame Number:** Incremental number starting when an app is created.\n- **Destination Frame:** Used to scale the buffer to the bounds defined by destination frame.\n\n### Hierarchy\n\nThe following properties describe how the hierarchy of layers is determined:\n\n- **z-order:** In the hierarchy of layers, the z-ordering determines the relative positioning of a layer in relation to its siblings. A layer with a z-value of 0 is positioned above its parent. If multiple layers share the same z-value, the layer with the higher layer ID is placed on top.\n- **relative parent:** Indicates the relative parent layer in the z-order. The child doesn't inherit any properties from its relative parent except for the hidden flag.\n\n### Input\n\nThe following properties contain information about touchable region and focus:\n\n- **Crop touch region with item:** Use layer bounds to crop the touchable region.\n- **Replace touch region with crop:** Use current layers crop as its touchable region."]]