From 91ac3b55b4de094ba25ecb45e04c5006b037a140 Mon Sep 17 00:00:00 2001 From: Huihong Luo Date: Thu, 8 Apr 2021 11:07:41 -0700 Subject: Avoid duplicate rendering of the same cached override buffer Bug: 183454078 Test: turn on layer caching, perform manual test Change-Id: I85789afe68e9c0732436eb2f2f63afa26cc8f728 --- services/surfaceflinger/CompositionEngine/src/Output.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/services/surfaceflinger/CompositionEngine/src/Output.cpp b/services/surfaceflinger/CompositionEngine/src/Output.cpp index aed3be93c3..af1edd1308 100644 --- a/services/surfaceflinger/CompositionEngine/src/Output.cpp +++ b/services/surfaceflinger/CompositionEngine/src/Output.cpp @@ -1104,6 +1104,7 @@ std::vector Output::generateClientCompositionRequests( Region stubRegion; bool disableBlurs = false; + sp previousOverrideBuffer = nullptr; for (auto* layer : getOutputLayersOrderedByZ()) { const auto& layerState = layer->getState(); @@ -1153,8 +1154,14 @@ std::vector Output::generateClientCompositionRequests( std::vector results; if (layer->getState().overrideInfo.buffer != nullptr) { - results = layer->getOverrideCompositionList(); - ALOGV("Replacing [%s] with override in RE", layer->getLayerFE().getDebugName()); + if (layer->getState().overrideInfo.buffer != previousOverrideBuffer) { + results = layer->getOverrideCompositionList(); + previousOverrideBuffer = layer->getState().overrideInfo.buffer; + ALOGV("Replacing [%s] with override in RE", layer->getLayerFE().getDebugName()); + } else { + ALOGV("Skipping redundant override buffer for [%s] in RE", + layer->getLayerFE().getDebugName()); + } } else { results = layerFE.prepareClientCompositionList(targetSettings); if (realContentIsVisible && !results.empty()) { -- cgit v1.2.3-59-g8ed1b