diff options
| author | 2023-02-23 00:08:01 +0000 | |
|---|---|---|
| committer | 2023-02-24 18:09:00 +0000 | |
| commit | c765c6c352611de7b080d731914c42bcaa935ec2 (patch) | |
| tree | 9e16b7bd460994e1e16de3417278c4760d7d0802 /services/surfaceflinger/SurfaceFlinger.cpp | |
| parent | d47bceea5a8da823b38eb5ca71bb8206b95c1958 (diff) | |
[sf] Add fps, meta data and opaque to layer snapshots
Test: atest ASurfaceControlTest#testSurfaceTransaction_setBufferOpaque_opaque
Bug: 238781169
Change-Id: I7abe5e9c2ce787e5c50888119ed3522cda6f1ebd
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 26 | 
1 files changed, 17 insertions, 9 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 29af6d1b7a..39f8307549 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -2197,14 +2197,17 @@ bool SurfaceFlinger::updateLayerSnapshots(VsyncId vsyncId, LifecycleUpdate& upda      {          ATRACE_NAME("LayerSnapshotBuilder:update"); -        frontend::LayerSnapshotBuilder::Args args{.root = mLayerHierarchyBuilder.getHierarchy(), -                                                  .layerLifecycleManager = mLayerLifecycleManager, -                                                  .displays = mFrontEndDisplayInfos, -                                                  .displayChanges = mFrontEndDisplayInfosChanged, -                                                  .globalShadowSettings = -                                                          mDrawingState.globalShadowSettings, -                                                  .supportsBlur = mSupportsBlur, -                                                  .forceFullDamage = mForceFullDamage}; +        frontend::LayerSnapshotBuilder::Args +                args{.root = mLayerHierarchyBuilder.getHierarchy(), +                     .layerLifecycleManager = mLayerLifecycleManager, +                     .displays = mFrontEndDisplayInfos, +                     .displayChanges = mFrontEndDisplayInfosChanged, +                     .globalShadowSettings = mDrawingState.globalShadowSettings, +                     .supportsBlur = mSupportsBlur, +                     .forceFullDamage = mForceFullDamage, +                     .supportedLayerGenericMetadata = +                             getHwComposer().getSupportedLayerGenericMetadata(), +                     .genericLayerMetadataKeyMap = getGenericLayerMetadataKeyMap()};          mLayerSnapshotBuilder.update(args);      } @@ -7779,6 +7782,7 @@ std::vector<std::pair<Layer*, LayerFE*>> SurfaceFlinger::moveSnapshotsToComposit          compositionengine::CompositionRefreshArgs& refreshArgs, bool cursorOnly, int64_t vsyncId) {      std::vector<std::pair<Layer*, LayerFE*>> layers;      if (mLayerLifecycleManagerEnabled) { +        nsecs_t currentTime = systemTime();          mLayerSnapshotBuilder.forEachVisibleSnapshot(                  [&](std::unique_ptr<frontend::LayerSnapshot>& snapshot) {                      if (cursorOnly && @@ -7797,6 +7801,7 @@ std::vector<std::pair<Layer*, LayerFE*>> SurfaceFlinger::moveSnapshotsToComposit                                          snapshot->getDebugString().c_str());                      auto& legacyLayer = it->second;                      sp<LayerFE> layerFE = legacyLayer->getCompositionEngineLayerFE(snapshot->path); +                    snapshot->fps = getLayerFramerate(currentTime, snapshot->sequence);                      layerFE->mSnapshot = std::move(snapshot);                      refreshArgs.layers.push_back(layerFE);                      layers.emplace_back(legacyLayer.get(), layerFE.get()); @@ -7868,7 +7873,10 @@ SurfaceFlinger::getLayerSnapshotsForScreenshots(uint32_t rootLayerId, uint32_t u                       .supportsBlur = mSupportsBlur,                       .forceFullDamage = mForceFullDamage,                       .parentCrop = {parentCrop}, -                     .excludeLayerIds = std::move(excludeLayerIds)}; +                     .excludeLayerIds = std::move(excludeLayerIds), +                     .supportedLayerGenericMetadata = +                             getHwComposer().getSupportedLayerGenericMetadata(), +                     .genericLayerMetadataKeyMap = getGenericLayerMetadataKeyMap()};          mLayerSnapshotBuilder.update(args);          auto getLayerSnapshotsFn = getLayerSnapshotsForScreenshots({}, uid);  |