Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 16355787 authored by Melody Hsu's avatar Melody Hsu
Browse files

Track pendingBuffer count in RequestedLayerState

Allows for easier retrieval without added lock contention.
RequestedLayerState stores a pointer to the original
buffer count from legacy layer.

Bug: b/294922229
Test: presubmit
Flag: EXEMPT, mechanical refactor
Change-Id: Iaab1b2214cc670f6e2d385ba4aba31e635a34030
parent 886c2c04
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ struct LayerCreationArgs {
    ui::LayerStack layerStackToMirror = ui::INVALID_LAYER_STACK;
    uint32_t parentId = UNASSIGNED_LAYER_ID;
    uint32_t layerIdToMirror = UNASSIGNED_LAYER_ID;
    std::atomic<int32_t>* pendingBuffers = 0;
};

} // namespace android::surfaceflinger
+2 −1
Original line number Diff line number Diff line
@@ -56,7 +56,8 @@ RequestedLayerState::RequestedLayerState(const LayerCreationArgs& args)
        ownerUid(args.ownerUid),
        ownerPid(args.ownerPid),
        parentId(args.parentId),
        layerIdToMirror(args.layerIdToMirror) {
        layerIdToMirror(args.layerIdToMirror),
        pendingBuffers(args.pendingBuffers) {
    layerId = static_cast<int32_t>(args.sequence);
    changes |= RequestedLayerState::Changes::Created;
    metadata.merge(args.metadata);
+1 −0
Original line number Diff line number Diff line
@@ -131,6 +131,7 @@ struct RequestedLayerState : layer_state_t {
    uint64_t barrierFrameNumber = 0;
    uint32_t barrierProducerId = 0;
    std::string debugName;
    std::atomic<int32_t>* pendingBuffers = 0;

    // book keeping states
    bool handleAlive = true;
+1 −1
Original line number Diff line number Diff line
@@ -1347,7 +1347,7 @@ Rect Layer::computeBufferCrop(const State& s) {
}

void Layer::decrementPendingBufferCount() {
    int32_t pendingBuffers = --mPendingBufferTransactions;
    int32_t pendingBuffers = --mPendingBuffers;
    tracePendingBufferCount(pendingBuffers);
}

+2 −2
Original line number Diff line number Diff line
@@ -369,7 +369,7 @@ public:

    // See mPendingBufferTransactions
    void decrementPendingBufferCount();
    std::atomic<int32_t>* getPendingBufferCounter() { return &mPendingBufferTransactions; }
    std::atomic<int32_t>* getPendingBufferCounter() { return &mPendingBuffers; }
    std::string getPendingBufferCounterName() { return mBlastTransactionName; }
    void callReleaseBufferCallback(const sp<ITransactionCompletedListener>& listener,
                                   const sp<GraphicBuffer>& buffer, uint64_t framenumber,
@@ -562,7 +562,7 @@ private:
    //     - If the integer increases, a buffer arrived at the server.
    //     - If the integer decreases in latchBuffer, that buffer was latched
    //     - If the integer decreases in setBuffer, a buffer was dropped
    std::atomic<int32_t> mPendingBufferTransactions{0};
    std::atomic<int32_t> mPendingBuffers{0};

    // Contains requested position and matrix updates. This will be applied if the client does
    // not specify a destination frame.
Loading