diff options
| author | 2023-02-27 17:41:39 +0000 | |
|---|---|---|
| committer | 2023-02-27 19:48:32 +0000 | |
| commit | ea6ff8192014357d3e720263bee60444e1f8f1d7 (patch) | |
| tree | 438683674562186b098735759771c152314afee1 /services/surfaceflinger/SurfaceFlinger.cpp | |
| parent | a7caedcbabb35443a7d7c0d0ef4aef6fa8f5af8e (diff) | |
[sf] write layer snapshots to layer trace
Switch from using drawingstate to layer snapshots
to generate layer trace if new front end is enabled.
Test: atest FlickerTests
Bug: 238781169
Change-Id: I9d75ee51ba77763db6fdd4c29f55e3fc498b683c
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 07b2fa153b..3882d0c106 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -5680,14 +5680,27 @@ LayersProto SurfaceFlinger::dumpDrawingStateProto(uint32_t traceFlags) const { } } + if (mLegacyFrontEndEnabled) { + LayersProto layersProto; + for (const sp<Layer>& layer : mDrawingState.layersSortedByZ) { + if (stackIdsToSkip.find(layer->getLayerStack().id) != stackIdsToSkip.end()) { + continue; + } + layer->writeToProto(layersProto, traceFlags); + } + return layersProto; + } + + const frontend::LayerHierarchy& root = mLayerHierarchyBuilder.getHierarchy(); LayersProto layersProto; - for (const sp<Layer>& layer : mDrawingState.layersSortedByZ) { - if (stackIdsToSkip.find(layer->getLayerStack().id) != stackIdsToSkip.end()) { + for (auto& [child, variant] : root.mChildren) { + if (variant != frontend::LayerHierarchy::Variant::Attached || + stackIdsToSkip.find(child->getLayer()->layerStack.id) != stackIdsToSkip.end()) { continue; } - layer->writeToProto(layersProto, traceFlags); + LayerProtoHelper::writeHierarchyToProto(layersProto, *child, mLayerSnapshotBuilder, + mLegacyLayers, traceFlags); } - return layersProto; } |