summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alec Mouri <alecmouri@google.com> 2025-02-26 13:24:44 -0800
committer Alec Mouri <alecmouri@google.com> 2025-02-28 13:11:48 -0800
commit14fd41aa3ba99fcdbccb7a104acfc9f55163e433 (patch)
tree8045e90122fb656fb36b95d44137c38013e7ec50
parent5a2c6135a6f8f608c15058c531688e1bb516cb8b (diff)
Don't skip blurring recently-decomposed cachedsets.
If we had found that a cachedset had a blur effect applied, then we tell the layer requesting the blur to skip blurring. This is so that we do not blur twice. But, this does not hold if we needed to update a cachedset, meaning that the blur effect was no longer applied. This was previously causing us to never render a blur. Bug: 390403736 Change-Id: I4389a8c73b20556abe392fe3b464408c6775fc34 Flag: EXEMPT bug fix Test: Notification shade + blurs
-rw-r--r--services/surfaceflinger/CompositionEngine/src/planner/Flattener.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/services/surfaceflinger/CompositionEngine/src/planner/Flattener.cpp b/services/surfaceflinger/CompositionEngine/src/planner/Flattener.cpp
index 783209c26a..b29082384d 100644
--- a/services/surfaceflinger/CompositionEngine/src/planner/Flattener.cpp
+++ b/services/surfaceflinger/CompositionEngine/src/planner/Flattener.cpp
@@ -325,6 +325,7 @@ bool Flattener::mergeWithCachedSets(const std::vector<const LayerState*>& layers
priorBlurLayer == (*incomingLayerIter)->getOutputLayer();
OutputLayer::CompositionState& state =
(*incomingLayerIter)->getOutputLayer()->editState();
+
state.overrideInfo = {
.buffer = mNewCachedSet->getBuffer(),
.acquireFence = mNewCachedSet->getDrawFence(),
@@ -378,6 +379,7 @@ bool Flattener::mergeWithCachedSets(const std::vector<const LayerState*>& layers
};
++incomingLayerIter;
}
+ priorBlurLayer = currentLayerIter->getBlurLayer();
} else if (currentLayerIter->getLayerCount() > 1) {
// Break the current layer into its constituent layers
++mInvalidatedCachedSetAges[currentLayerIter->getAge()];
@@ -400,8 +402,8 @@ bool Flattener::mergeWithCachedSets(const std::vector<const LayerState*>& layers
currentLayerIter->updateAge(now);
merged.emplace_back(*currentLayerIter);
++incomingLayerIter;
+ priorBlurLayer = currentLayerIter->getBlurLayer();
}
- priorBlurLayer = currentLayerIter->getBlurLayer();
++currentLayerIter;
}