Created bufferInfo to track buffer data in a single place (1/2)
This is in preparation for layer mirroring since mirrored buffer layers
should just copy the bufferInfo instead of the entire BufferQueue or
parts of BufferState
Test: go/wm-smoke
Change-Id: Iba1be05c4b038f0b678150deed8e673bf1e7710b
diff --git a/services/surfaceflinger/BufferLayer.h b/services/surfaceflinger/BufferLayer.h
index ee44cbe..e8838e8 100644
--- a/services/surfaceflinger/BufferLayer.h
+++ b/services/surfaceflinger/BufferLayer.h
@@ -106,6 +106,14 @@
// Should only be called on the main thread.
void latchAndReleaseBuffer() override;
+ bool getTransformToDisplayInverse() const override;
+
+ Rect getBufferCrop() const override;
+
+ uint32_t getBufferTransform() const override;
+
+ ui::Dataspace getDataSpace() const override;
+
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
@@ -115,18 +123,7 @@
virtual bool fenceHasSignaled() const = 0;
virtual bool framePresentTimeIsCurrent(nsecs_t expectedPresentTime) const = 0;
- virtual nsecs_t getDesiredPresentTime() = 0;
- virtual std::shared_ptr<FenceTime> getCurrentFenceTime() const = 0;
-
- virtual void getDrawingTransformMatrix(float *matrix) = 0;
- virtual uint32_t getDrawingTransform() const = 0;
- virtual ui::Dataspace getDrawingDataSpace() const = 0;
- virtual Rect getDrawingCrop() const = 0;
- virtual uint32_t getDrawingScalingMode() const = 0;
- virtual Region getDrawingSurfaceDamage() const = 0;
- virtual const HdrMetadata& getDrawingHdrMetadata() const = 0;
- virtual int getDrawingApi() const = 0;
- virtual PixelFormat getPixelFormat() const = 0;
+ PixelFormat getPixelFormat() const;
virtual uint64_t getFrameNumber(nsecs_t expectedPresentTime) const = 0;
@@ -148,6 +145,25 @@
virtual status_t updateFrameNumber(nsecs_t latchTime) = 0;
protected:
+ struct BufferInfo {
+ nsecs_t mDesiredPresentTime;
+ std::shared_ptr<FenceTime> mFenceTime;
+ sp<Fence> mFence;
+ float mTransformMatrix[16];
+ uint32_t mTransform{0};
+ ui::Dataspace mDataspace;
+ Rect mCrop;
+ uint32_t mScaleMode{NATIVE_WINDOW_SCALING_MODE_FREEZE};
+ Region mSurfaceDamage;
+ HdrMetadata mHdrMetadata;
+ int mApi;
+ PixelFormat mPixelFormat;
+ bool mTransformToDisplayInverse{false};
+ };
+
+ BufferInfo mBufferInfo;
+ virtual void gatherBufferInfo() = 0;
+
/*
* compositionengine::LayerFE overrides
*/
@@ -171,16 +187,14 @@
bool mRefreshPending{false};
+ ui::Dataspace translateDataspace(ui::Dataspace dataspace);
+
private:
// Returns true if this layer requires filtering
bool needsFiltering(const sp<const DisplayDevice>& displayDevice) const override;
uint64_t getHeadFrameNumber(nsecs_t expectedPresentTime) const;
- uint32_t mCurrentScalingMode{NATIVE_WINDOW_SCALING_MODE_FREEZE};
-
- bool mTransformToDisplayInverse{false};
-
// main thread.
bool mBufferLatched{false}; // TODO: Use mActiveBuffer?