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

Commit 65b9be43 authored by Adithya Srinivasan's avatar Adithya Srinivasan Committed by Android (Google) Code Review
Browse files

Merge "Fix broken FrameLifecycle due to Blast adapter" into sc-dev

parents 14f777d5 b238cd58
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@
#include <renderengine/Image.h>

#include "EffectLayer.h"
#include "FrameTracer/FrameTracer.h"
#include "TimeStats/TimeStats.h"

namespace android {
@@ -337,7 +338,7 @@ bool BufferStateLayer::addFrameEvent(const sp<Fence>& acquireFence, nsecs_t post
bool BufferStateLayer::setBuffer(const sp<GraphicBuffer>& buffer, const sp<Fence>& acquireFence,
                                 nsecs_t postTime, nsecs_t desiredPresentTime, bool isAutoTimestamp,
                                 const client_cache_t& clientCacheId, uint64_t frameNumber,
                                 std::optional<nsecs_t> /* dequeueTime */,
                                 std::optional<nsecs_t> dequeueTime,
                                 const FrameTimelineInfo& info) {
    ATRACE_CALL();

@@ -377,6 +378,14 @@ bool BufferStateLayer::setBuffer(const sp<GraphicBuffer>& buffer, const sp<Fence
        setFrameTimelineVsyncForBufferTransaction(info, postTime);
    }

    if (dequeueTime && *dequeueTime != 0) {
        const uint64_t bufferId = buffer->getId();
        mFlinger->mFrameTracer->traceNewLayer(layerId, getName().c_str());
        mFlinger->mFrameTracer->traceTimestamp(layerId, bufferId, frameNumber, *dequeueTime,
                                               FrameTracer::FrameEvent::DEQUEUE);
        mFlinger->mFrameTracer->traceTimestamp(layerId, bufferId, frameNumber, postTime,
                                               FrameTracer::FrameEvent::QUEUE);
    }
    return true;
}

@@ -628,9 +637,16 @@ status_t BufferStateLayer::updateTexImage(bool& /*recomputeVisibleRegions*/, nse
    }

    const int32_t layerId = getSequence();
    mFlinger->mTimeStats->setAcquireFence(layerId, mDrawingState.frameNumber,
                                          std::make_shared<FenceTime>(mDrawingState.acquireFence));
    mFlinger->mTimeStats->setLatchTime(layerId, mDrawingState.frameNumber, latchTime);
    const uint64_t bufferId = mDrawingState.buffer->getId();
    const uint64_t frameNumber = mDrawingState.frameNumber;
    const auto acquireFence = std::make_shared<FenceTime>(mDrawingState.acquireFence);
    mFlinger->mTimeStats->setAcquireFence(layerId, frameNumber, acquireFence);
    mFlinger->mTimeStats->setLatchTime(layerId, frameNumber, latchTime);

    mFlinger->mFrameTracer->traceFence(layerId, bufferId, frameNumber, acquireFence,
                                       FrameTracer::FrameEvent::ACQUIRE_FENCE);
    mFlinger->mFrameTracer->traceTimestamp(layerId, bufferId, frameNumber, latchTime,
                                           FrameTracer::FrameEvent::LATCH);

    auto& bufferSurfaceFrame = mDrawingState.bufferSurfaceFrameTX;
    if (bufferSurfaceFrame != nullptr &&
+1 −0
Original line number Diff line number Diff line
@@ -124,6 +124,7 @@ protected:

private:
    friend class SlotGenerationTest;
    friend class TransactionFrameTracerTest;
    friend class TransactionSurfaceFrameTest;

    inline void tracePendingBufferCount();
+1 −0
Original line number Diff line number Diff line
@@ -1010,6 +1010,7 @@ protected:
    friend class TestableSurfaceFlinger;
    friend class RefreshRateSelectionTest;
    friend class SetFrameRateTest;
    friend class TransactionFrameTracerTest;
    friend class TransactionSurfaceFrameTest;

    virtual void setInitialValuesForClone(const sp<Layer>& clonedFrom);
+1 −0
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ cc_test {
        "FrameTracerTest.cpp",
        "TimerTest.cpp",
        "TransactionApplicationTest.cpp",
        "TransactionFrameTracerTest.cpp",
        "TransactionSurfaceFrameTest.cpp",
        "StrongTypingTest.cpp",
        "VSyncDispatchTimerQueueTest.cpp",
+4 −0
Original line number Diff line number Diff line
@@ -410,6 +410,10 @@ public:

    const auto& getCompositorTiming() const { return mFlinger->getBE().mCompositorTiming; }

    mock::FrameTracer* getFrameTracer() const {
        return static_cast<mock::FrameTracer*>(mFlinger->mFrameTracer.get());
    }

    /* ------------------------------------------------------------------------
     * Read-write access to private data to set up preconditions and assert
     * post-conditions.
Loading