SF: BufferStateLayer cleanup
Clean up some of the logic now that
BufferLayer has been merged into BufferStateLayer.
Test: presubmit
Bug: 238781169
Change-Id: I5114dd8d457638f810fe02d29bfab3444e042d2d
diff --git a/services/surfaceflinger/BufferStateLayer.h b/services/surfaceflinger/BufferStateLayer.h
index df7ae61..8bad3d2 100644
--- a/services/surfaceflinger/BufferStateLayer.h
+++ b/services/surfaceflinger/BufferStateLayer.h
@@ -40,6 +40,7 @@
#include "DisplayHardware/HWComposer.h"
#include "FrameTimeline.h"
#include "FrameTracker.h"
+#include "HwcSlotGenerator.h"
#include "Layer.h"
#include "LayerVector.h"
#include "SurfaceFlinger.h"
@@ -74,10 +75,7 @@
// GRALLOC_USAGE_PROTECTED sense.
bool isProtected() const override;
- // isFixedSize - true if content has a fixed size
- bool isFixedSize() const override;
-
- bool usesSourceCrop() const override;
+ bool usesSourceCrop() const override { return true; }
bool isHdrY410() const override;
@@ -89,13 +87,9 @@
// the visible regions need to be recomputed (this is a fairly heavy
// operation, so this should be set only if needed). Typically this is used
// to figure out if the content or size of a surface has changed.
- bool latchBuffer(bool& recomputeVisibleRegions, nsecs_t latchTime,
- nsecs_t expectedPresentTime) override;
+ bool latchBuffer(bool& recomputeVisibleRegions, nsecs_t latchTime) override;
bool hasReadyFrame() const override;
- // Returns the current scaling mode
- uint32_t getEffectiveScalingMode() const override;
-
// Calls latchBuffer if the buffer has a frame queued and then releases the buffer.
// This is used if the buffer is just latched and releases to free up the buffer
// and will not be shown on screen.
@@ -122,14 +116,6 @@
void releasePendingBuffer(nsecs_t dequeueReadyTime) override;
- void finalizeFrameEventHistory(const std::shared_ptr<FenceTime>& glDoneFence,
- const CompositorTiming& compositorTiming) override;
-
- // Returns true if the next buffer should be presented at the expected present time,
- // overridden by BufferStateLayer and BufferQueueLayer for implementation
- // specific logic
- bool isBufferDue(nsecs_t /*expectedPresentTime*/) const { return true; }
-
Region getActiveTransparentRegion(const Layer::State& s) const override {
return s.transparentRegionHint;
}
@@ -166,7 +152,6 @@
bool updateGeometry() override;
bool fenceHasSignaled() const;
- bool framePresentTimeIsCurrent(nsecs_t expectedPresentTime) const;
bool onPreComposition(nsecs_t) override;
// See mPendingBufferTransactions
@@ -174,9 +159,6 @@
std::atomic<int32_t>* getPendingBufferCounter() override { return &mPendingBufferTransactions; }
std::string getPendingBufferCounterName() override { return mBlastTransactionName; }
- // Returns true if the next buffer should be presented at the expected present time
- bool shouldPresentNow(nsecs_t /*expectedPresentTime*/) const override { return true; }
-
protected:
void gatherBufferInfo();
void onSurfaceFrameCreated(const std::shared_ptr<frametimeline::SurfaceFrame>& surfaceFrame);
@@ -268,11 +250,7 @@
bool hasFrameUpdate() const;
- status_t updateTexImage(bool& recomputeVisibleRegions, nsecs_t latchTime,
- nsecs_t expectedPresentTime);
-
- status_t updateActiveBuffer();
- status_t updateFrameNumber();
+ void updateTexImage(nsecs_t latchTime);
sp<Layer> createClone() override;
@@ -323,45 +301,6 @@
// not specify a destination frame.
ui::Transform mRequestedTransform;
- // TODO(marissaw): support sticky transform for LEGACY camera mode
-
- class HwcSlotGenerator : public ClientCache::ErasedRecipient {
- public:
- HwcSlotGenerator() {
- for (int i = 0; i < BufferQueue::NUM_BUFFER_SLOTS; i++) {
- mFreeHwcCacheSlots.push(i);
- }
- }
-
- void bufferErased(const client_cache_t& clientCacheId);
-
- int getHwcCacheSlot(const client_cache_t& clientCacheId);
-
- private:
- friend class SlotGenerationTest;
- int addCachedBuffer(const client_cache_t& clientCacheId) REQUIRES(mMutex);
- int getFreeHwcCacheSlot() REQUIRES(mMutex);
- void evictLeastRecentlyUsed() REQUIRES(mMutex);
- void eraseBufferLocked(const client_cache_t& clientCacheId) REQUIRES(mMutex);
-
- struct CachedBufferHash {
- std::size_t operator()(const client_cache_t& clientCacheId) const {
- return std::hash<uint64_t>{}(clientCacheId.id);
- }
- };
-
- std::mutex mMutex;
-
- std::unordered_map<client_cache_t, std::pair<int /*HwcCacheSlot*/, uint64_t /*counter*/>,
- CachedBufferHash>
- mCachedBuffers GUARDED_BY(mMutex);
- std::stack<int /*HwcCacheSlot*/> mFreeHwcCacheSlots GUARDED_BY(mMutex);
-
- // The cache increments this counter value when a slot is updated or used.
- // Used to track the least recently-used buffer
- uint64_t mCounter = 0;
- };
-
sp<HwcSlotGenerator> mHwcSlotGenerator;
};