diff options
author | Rob Carr <racarr@google.com> | 2022-06-06 16:26:01 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-06-06 16:26:01 +0000 |
commit | 7a85fb13e35ba63d92d5252181bd2263be0f4c3c (patch) | |
tree | 0a5804c0c7868f0f48253cd22d5af885c5b02432 | |
parent | 99621f173a654ab221961aafba394f97ee4ecd74 (diff) | |
parent | 05da008e9dcc1466e2e7779d5f5408bbf5c7f4d6 (diff) | |
download | native-7a85fb13e35ba63d92d5252181bd2263be0f4c3c.tar.gz |
Merge "SurfaceFlinger: Correct logic error in early release" into tm-dev
-rw-r--r-- | services/surfaceflinger/BufferLayer.cpp | 2 | ||||
-rw-r--r-- | services/surfaceflinger/BufferStateLayer.cpp | 4 | ||||
-rw-r--r-- | services/surfaceflinger/CompositionEngine/src/Output.cpp | 1 | ||||
-rw-r--r-- | services/surfaceflinger/Layer.h | 3 |
4 files changed, 5 insertions, 5 deletions
diff --git a/services/surfaceflinger/BufferLayer.cpp b/services/surfaceflinger/BufferLayer.cpp index f8c53c338e..d9c89cd821 100644 --- a/services/surfaceflinger/BufferLayer.cpp +++ b/services/surfaceflinger/BufferLayer.cpp @@ -358,8 +358,6 @@ void BufferLayer::onPostComposition(const DisplayDevice* display, // composition. if (!mBufferInfo.mFrameLatencyNeeded) return; - mAlreadyDisplayedThisCompose = false; - // Update mFrameEventHistory. finalizeFrameEventHistory(glDoneFence, compositorTiming); diff --git a/services/surfaceflinger/BufferStateLayer.cpp b/services/surfaceflinger/BufferStateLayer.cpp index 1a5b925b13..fecf5ae059 100644 --- a/services/surfaceflinger/BufferStateLayer.cpp +++ b/services/surfaceflinger/BufferStateLayer.cpp @@ -79,10 +79,10 @@ void BufferStateLayer::onLayerDisplayed(ftl::SharedFuture<FenceResult> futureFen // For example we can only use it if all the displays are client comp, and we need // to merge all the client comp fences. We could do this, but for now we just // disable the optimization when a layer is composed on multiple displays. - if (mAlreadyDisplayedThisCompose) { + if (mClearClientCompositionFenceOnLayerDisplayed) { mLastClientCompositionFence = nullptr; } else { - mAlreadyDisplayedThisCompose = true; + mClearClientCompositionFenceOnLayerDisplayed = true; } // The previous release fence notifies the client that SurfaceFlinger is done with the previous diff --git a/services/surfaceflinger/CompositionEngine/src/Output.cpp b/services/surfaceflinger/CompositionEngine/src/Output.cpp index aac478de40..c3385a8a8b 100644 --- a/services/surfaceflinger/CompositionEngine/src/Output.cpp +++ b/services/surfaceflinger/CompositionEngine/src/Output.cpp @@ -1300,6 +1300,7 @@ std::vector<LayerFE::LayerSettings> Output::generateClientCompositionRequests( const auto& layerState = layer->getState(); const auto* layerFEState = layer->getLayerFE().getCompositionState(); auto& layerFE = layer->getLayerFE(); + layerFE.setWasClientComposed(nullptr); const Region clip(viewportRegion.intersect(layerState.visibleRegion)); ALOGV("Layer: %s", layerFE.getDebugName()); diff --git a/services/surfaceflinger/Layer.h b/services/surfaceflinger/Layer.h index 3988e51f84..24abad9b45 100644 --- a/services/surfaceflinger/Layer.h +++ b/services/surfaceflinger/Layer.h @@ -620,6 +620,7 @@ public: void setWasClientComposed(const sp<Fence>& fence) override { mLastClientCompositionFence = fence; + mClearClientCompositionFenceOnLayerDisplayed = false; } const char* getDebugName() const override; @@ -1035,7 +1036,7 @@ protected: mutable bool mDrawingStateModified = false; sp<Fence> mLastClientCompositionFence; - bool mAlreadyDisplayedThisCompose = false; + bool mClearClientCompositionFenceOnLayerDisplayed = false; private: virtual void setTransformHint(ui::Transform::RotationFlags) {} |