summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/SurfaceFlinger.cpp
diff options
context:
space:
mode:
author Vishnu Nair <vishnun@google.com> 2022-08-02 21:47:40 +0000
committer Patrick Williams <pdwilliams@google.com> 2022-09-19 20:58:53 +0000
commitbedb44bb15cd11689b96770a45eccf475778e9eb (patch)
tree85855a80fee51fae9a09f65e3b6ab3909d67573c /services/surfaceflinger/SurfaceFlinger.cpp
parent926bb1293231a4d14128c675da081cd215b65e1b (diff)
SF: Populate RE layer settings from layer snapshot and CE layer state
Make it easier to break FE dependencies to CE by populating RE layer settings from a layer snapshot and CE layer composition state. Test: presubmit Test: go/wm-smoke Bug: 238781169 Change-Id: I92bdc0a0f605c13e2dc1465c8d1ddfd17e554633
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index bcd2b43a62..9a19f0a6c0 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -6653,6 +6653,11 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
std::vector<Layer*> renderedLayers;
bool disableBlurs = false;
traverseLayers([&](Layer* layer) {
+ // Layer::prepareClientComposition uses the layer's snapshot to populate the resulting
+ // LayerSettings. Calling Layer::updateSnapshot ensures that LayerSettings are
+ // generated with the layer's current buffer and geometry.
+ layer->updateSnapshot(true /* updateGeometry */);
+
disableBlurs |= layer->getDrawingState().sidebandStream != nullptr;
Region clip(renderArea.getBounds());