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

Commit cbe8b6ce authored by Anton Ivanov's avatar Anton Ivanov
Browse files

Add TransactionBarriers to QueuedTransactionState.

Bug: 356936695
Test: unit
Flag: EXEMPT not yet used
Change-Id: I24f065ac3b540617f67962787b348dfa4076bb36
parent 749dc49d
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
#include <common/FlagManager.h>
#include <ftl/flags.h>
#include <gui/LayerState.h>
#include <gui/TransactionState.h>
#include <system/window.h>

namespace android {
@@ -62,7 +63,8 @@ struct QueuedTransactionState {
                           std::vector<ListenerCallbacks> listenerCallbacks, int originPid,
                           int originUid, uint64_t transactionId,
                           std::vector<uint64_t> mergedTransactionIds,
                           std::vector<gui::EarlyWakeupInfo> earlyWakeupInfos)
                           std::vector<gui::EarlyWakeupInfo> earlyWakeupInfos,
                           std::vector<gui::TransactionBarrier> transactionBarriers)
          : frameTimelineInfo(frameTimelineInfo),
            states(std::move(composerStates)),
            displays(std::move(displayStates)),
@@ -79,7 +81,8 @@ struct QueuedTransactionState {
            originUid(originUid),
            id(transactionId),
            mergedTransactionIds(std::move(mergedTransactionIds)),
            earlyWakeupInfos(std::move(earlyWakeupInfos)) {}
            earlyWakeupInfos(std::move(earlyWakeupInfos)),
            transactionBarriers(std::move(transactionBarriers)) {}

    // Invokes `void(const layer_state_t&)` visitor for matching layers.
    template <typename Visitor>
@@ -147,6 +150,7 @@ struct QueuedTransactionState {
    bool sentFenceTimeoutWarning = false;
    std::vector<uint64_t> mergedTransactionIds;
    std::vector<gui::EarlyWakeupInfo> earlyWakeupInfos;
    std::vector<gui::TransactionBarrier> transactionBarriers;
    ftl::Flags<adpf::Workload> workloadHint;
};

+18 −19
Original line number Diff line number Diff line
@@ -5197,8 +5197,7 @@ status_t SurfaceFlinger::setTransactionState(TransactionState&& transactionState
        }
    }

    QueuedTransactionState state{
            transactionState.mFrameTimelineInfo,
    QueuedTransactionState state{transactionState.mFrameTimelineInfo,
                                 std::move(resolvedStates),
                                 std::move(transactionState.mDisplayStates),
                                 flags,
@@ -5215,7 +5214,7 @@ status_t SurfaceFlinger::setTransactionState(TransactionState&& transactionState
                                 transactionState.getId(),
                                 transactionState.mMergedTransactionIds,
                                 transactionState.mEarlyWakeupInfos,
    };
                                 std::move(transactionState.mBarriers)};
    state.workloadHint = queuedWorkload;

    if (mTransactionTracing) {
+2 −1
Original line number Diff line number Diff line
@@ -431,7 +431,8 @@ public:
                                     static_cast<int>(getuid()),
                                     transaction.transactionState.getId(),
                                     transaction.transactionState.mMergedTransactionIds,
                                     transaction.transactionState.mEarlyWakeupInfos);
                                     transaction.transactionState.mEarlyWakeupInfos,
                                     transaction.transactionState.mBarriers);
            mFlinger.setTransactionStateInternal(transactionState);
        }
        mFlinger.flushTransactionQueues();