struct BufferInfo {
    nsecs_t mDesiredPresentTime;
    std::shared_ptr<FenceTime> mFenceTime;
    sp<Fence> mFence;
    uint32_t mTransform{0};
    ui::Dataspace mDataspace{ui::Dataspace::UNKNOWN};
    Rect mCrop;
    uint32_t mScaleMode{NATIVE_WINDOW_SCALING_MODE_FREEZE};
    Region mSurfaceDamage;
    HdrMetadata mHdrMetadata;
    int mApi;
    PixelFormat mPixelFormat{PIXEL_FORMAT_NONE};
    bool mTransformToDisplayInverse{false};

    sp<GraphicBuffer> mBuffer;
    int mBufferSlot{BufferQueue::INVALID_BUFFER_SLOT};

    bool mFrameLatencyNeeded{false};
};

BufferInfo 是定义在 BufferLayer 中的结构体。BufferInfo 为了跟踪当前活跃的 buffer 数据,从提交信息可知,它是在 layer 镜像使用的。

commit 4244e0356083fba0a367b9cb5422cd24d567518a
Author: chaviw <[email protected]>
Date:   Wed Sep 4 11:27:49 2019 -0700

    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