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

Commit e7a9e6ee authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "SF: use a pointer for out param in classifyJankLocked" into main

parents 60068af2 e96e79fa
Loading
Loading
Loading
Loading
+13 −7
Original line number Original line Diff line number Diff line
@@ -543,12 +543,14 @@ std::string SurfaceFrame::miniDump() const {
}
}


void SurfaceFrame::classifyJankLocked(int32_t displayFrameJankType, const Fps& refreshRate,
void SurfaceFrame::classifyJankLocked(int32_t displayFrameJankType, const Fps& refreshRate,
                                      Fps displayFrameRenderRate, nsecs_t& deadlineDelta) {
                                      Fps displayFrameRenderRate, nsecs_t* outDeadlineDelta) {
    if (mActuals.presentTime == Fence::SIGNAL_TIME_INVALID) {
    if (mActuals.presentTime == Fence::SIGNAL_TIME_INVALID) {
        // Cannot do any classification for invalid present time.
        // Cannot do any classification for invalid present time.
        mJankType = JankType::Unknown;
        mJankType = JankType::Unknown;
        mJankSeverityType = JankSeverityType::Unknown;
        mJankSeverityType = JankSeverityType::Unknown;
        deadlineDelta = -1;
        if (outDeadlineDelta) {
            *outDeadlineDelta = -1;
        }
        return;
        return;
    }
    }


@@ -559,7 +561,9 @@ void SurfaceFrame::classifyJankLocked(int32_t displayFrameJankType, const Fps& r
        mJankType = mPresentState != PresentState::Presented ? JankType::Dropped
        mJankType = mPresentState != PresentState::Presented ? JankType::Dropped
                                                             : JankType::AppDeadlineMissed;
                                                             : JankType::AppDeadlineMissed;
        mJankSeverityType = JankSeverityType::Unknown;
        mJankSeverityType = JankSeverityType::Unknown;
        deadlineDelta = -1;
        if (outDeadlineDelta) {
            *outDeadlineDelta = -1;
        }
        return;
        return;
    }
    }


@@ -568,11 +572,14 @@ void SurfaceFrame::classifyJankLocked(int32_t displayFrameJankType, const Fps& r
        return;
        return;
    }
    }


    deadlineDelta = mActuals.endTime - mPredictions.endTime;
    const nsecs_t presentDelta = mActuals.presentTime - mPredictions.presentTime;
    const nsecs_t presentDelta = mActuals.presentTime - mPredictions.presentTime;
    const nsecs_t deltaToVsync = refreshRate.getPeriodNsecs() > 0
    const nsecs_t deltaToVsync = refreshRate.getPeriodNsecs() > 0
            ? std::abs(presentDelta) % refreshRate.getPeriodNsecs()
            ? std::abs(presentDelta) % refreshRate.getPeriodNsecs()
            : 0;
            : 0;
    const nsecs_t deadlineDelta = mActuals.endTime - mPredictions.endTime;
    if (outDeadlineDelta) {
        *outDeadlineDelta = deadlineDelta;
    }


    if (deadlineDelta > mJankClassificationThresholds.deadlineThreshold) {
    if (deadlineDelta > mJankClassificationThresholds.deadlineThreshold) {
        mFrameReadyMetadata = FrameReadyMetadata::LateFinish;
        mFrameReadyMetadata = FrameReadyMetadata::LateFinish;
@@ -671,7 +678,7 @@ void SurfaceFrame::onPresent(nsecs_t presentTime, int32_t displayFrameJankType,
    mActuals.presentTime = presentTime;
    mActuals.presentTime = presentTime;
    nsecs_t deadlineDelta = 0;
    nsecs_t deadlineDelta = 0;


    classifyJankLocked(displayFrameJankType, refreshRate, displayFrameRenderRate, deadlineDelta);
    classifyJankLocked(displayFrameJankType, refreshRate, displayFrameRenderRate, &deadlineDelta);


    if (mPredictionState != PredictionState::None) {
    if (mPredictionState != PredictionState::None) {
        // Only update janky frames if the app used vsync predictions
        // Only update janky frames if the app used vsync predictions
@@ -686,8 +693,7 @@ void SurfaceFrame::onCommitNotComposited(Fps refreshRate, Fps displayFrameRender


    mDisplayFrameRenderRate = displayFrameRenderRate;
    mDisplayFrameRenderRate = displayFrameRenderRate;
    mActuals.presentTime = mPredictions.presentTime;
    mActuals.presentTime = mPredictions.presentTime;
    nsecs_t deadlineDelta = 0;
    classifyJankLocked(JankType::None, refreshRate, displayFrameRenderRate, nullptr);
    classifyJankLocked(JankType::None, refreshRate, displayFrameRenderRate, deadlineDelta);
}
}


void SurfaceFrame::tracePredictions(int64_t displayFrameToken, nsecs_t monoBootOffset) const {
void SurfaceFrame::tracePredictions(int64_t displayFrameToken, nsecs_t monoBootOffset) const {
+1 −1
Original line number Original line Diff line number Diff line
@@ -237,7 +237,7 @@ private:
    void tracePredictions(int64_t displayFrameToken, nsecs_t monoBootOffset) const;
    void tracePredictions(int64_t displayFrameToken, nsecs_t monoBootOffset) const;
    void traceActuals(int64_t displayFrameToken, nsecs_t monoBootOffset) const;
    void traceActuals(int64_t displayFrameToken, nsecs_t monoBootOffset) const;
    void classifyJankLocked(int32_t displayFrameJankType, const Fps& refreshRate,
    void classifyJankLocked(int32_t displayFrameJankType, const Fps& refreshRate,
                            Fps displayFrameRenderRate, nsecs_t& deadlineDelta) REQUIRES(mMutex);
                            Fps displayFrameRenderRate, nsecs_t* outDeadlineDelta) REQUIRES(mMutex);


    const int64_t mToken;
    const int64_t mToken;
    const int32_t mInputEventId;
    const int32_t mInputEventId;