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

Commit 4c6982e5 authored by Vishnu Nair's avatar Vishnu Nair Committed by Android (Google) Code Review
Browse files

Merge "Pass a valid fence time if the acquire fence has not signaled" into main

parents fed6905a bd7d07ec
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -359,8 +359,12 @@ void SurfaceFrame::setActualQueueTime(nsecs_t actualQueueTime) {

void SurfaceFrame::setAcquireFenceTime(nsecs_t acquireFenceTime) {
    std::scoped_lock lock(mMutex);
    if (CC_UNLIKELY(acquireFenceTime == Fence::SIGNAL_TIME_PENDING)) {
        mActuals.endTime = mActualQueueTime;
    } else {
        mActuals.endTime = std::max(acquireFenceTime, mActualQueueTime);
    }
}

void SurfaceFrame::setDropTime(nsecs_t dropTime) {
    std::scoped_lock lock(mMutex);
+10 −0
Original line number Diff line number Diff line
@@ -479,6 +479,16 @@ TEST_F(FrameTimelineTest, surfaceFrameEndTimeAcquireFenceAfterQueue) {
    EXPECT_EQ(surfaceFrame->getActuals().endTime, 456);
}

TEST_F(FrameTimelineTest, surfaceFrameEndTimeAcquireFenceUnsignaled) {
    auto surfaceFrame = mFrameTimeline->createSurfaceFrameForToken({}, sPidOne, 0, sLayerIdOne,
                                                                   "acquireFenceAfterQueue",
                                                                   "acquireFenceAfterQueue",
                                                                   /*isBuffer*/ true, sGameMode);
    surfaceFrame->setActualQueueTime(123);
    surfaceFrame->setAcquireFenceTime(Fence::SIGNAL_TIME_PENDING);
    EXPECT_EQ(surfaceFrame->getActuals().endTime, 123);
}

TEST_F(FrameTimelineTest, surfaceFrameEndTimeAcquireFenceBeforeQueue) {
    auto surfaceFrame = mFrameTimeline->createSurfaceFrameForToken({}, sPidOne, 0, sLayerIdOne,
                                                                   "acquireFenceAfterQueue",