diff options
| author | 2025-02-26 13:24:44 -0800 | |
|---|---|---|
| committer | 2025-02-28 13:11:48 -0800 | |
| commit | 14fd41aa3ba99fcdbccb7a104acfc9f55163e433 (patch) | |
| tree | 8045e90122fb656fb36b95d44137c38013e7ec50 | |
| parent | 5a2c6135a6f8f608c15058c531688e1bb516cb8b (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.cpp | 4 |
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; } |