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

Commit 61175136 authored by Adithya Srinivasan's avatar Adithya Srinivasan Committed by Automerger Merge Worker
Browse files

Merge "Fix broken FrameLifecycle due to Blast adapter" into sc-dev am: 65b9be43

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/13499207

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I9a1ef24036c7bc8c85f0a6c8ce35a7337defb9e8
parents 0f7b3749 65b9be43
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