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

Commit 68063156 authored by Ady Abraham's avatar Ady Abraham Committed by Android (Google) Code Review
Browse files

Merge "SF: add traces for isVsyncValid"

parents aae5b053 9243bba2
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -28,10 +28,10 @@
#include <ftl/enum.h>
#include <ftl/enum.h>
#include <ftl/fake_guard.h>
#include <ftl/fake_guard.h>
#include <ftl/small_map.h>
#include <ftl/small_map.h>
#include <gui/TraceUtils.h>
#include <gui/WindowInfo.h>
#include <gui/WindowInfo.h>
#include <system/window.h>
#include <system/window.h>
#include <utils/Timers.h>
#include <utils/Timers.h>
#include <utils/Trace.h>


#include <FrameTimeline/FrameTimeline.h>
#include <FrameTimeline/FrameTimeline.h>
#include <scheduler/interface/ICompositor.h>
#include <scheduler/interface/ICompositor.h>
@@ -171,6 +171,7 @@ bool Scheduler::isVsyncValid(TimePoint expectedVsyncTimestamp, uid_t uid) const
        return true;
        return true;
    }
    }


    ATRACE_FORMAT("%s uid: %d frameRate: %s", __func__, uid, to_string(*frameRate).c_str());
    return mVsyncSchedule->getTracker().isVSyncInPhase(expectedVsyncTimestamp.ns(), *frameRate);
    return mVsyncSchedule->getTracker().isVSyncInPhase(expectedVsyncTimestamp.ns(), *frameRate);
}
}


+11 −1
Original line number Original line Diff line number Diff line
@@ -31,8 +31,8 @@
#include <android-base/stringprintf.h>
#include <android-base/stringprintf.h>
#include <cutils/compiler.h>
#include <cutils/compiler.h>
#include <cutils/properties.h>
#include <cutils/properties.h>
#include <gui/TraceUtils.h>
#include <utils/Log.h>
#include <utils/Log.h>
#include <utils/Trace.h>


#include "RefreshRateSelector.h"
#include "RefreshRateSelector.h"
#include "VSyncPredictor.h"
#include "VSyncPredictor.h"
@@ -282,6 +282,13 @@ bool VSyncPredictor::isVSyncInPhase(nsecs_t timePoint, Fps frameRate) const {
}
}


bool VSyncPredictor::isVSyncInPhaseLocked(nsecs_t timePoint, unsigned divisor) const {
bool VSyncPredictor::isVSyncInPhaseLocked(nsecs_t timePoint, unsigned divisor) const {
    const TimePoint now = TimePoint::now();
    const auto getTimePointIn = [](TimePoint now, nsecs_t timePoint) -> float {
        return ticks<std::milli, float>(TimePoint::fromNs(timePoint) - now);
    };
    ATRACE_FORMAT("%s timePoint in: %.2f divisor: %zu", __func__, getTimePointIn(now, timePoint),
                  divisor);

    struct VsyncError {
    struct VsyncError {
        nsecs_t vsyncTimestamp;
        nsecs_t vsyncTimestamp;
        float error;
        float error;
@@ -304,6 +311,7 @@ bool VSyncPredictor::isVSyncInPhaseLocked(nsecs_t timePoint, unsigned divisor) c
    if (knownTimestampIter == mRateDivisorKnownTimestampMap.end()) {
    if (knownTimestampIter == mRateDivisorKnownTimestampMap.end()) {
        const auto vsync = nextAnticipatedVSyncTimeFromLocked(justBeforeTimePoint);
        const auto vsync = nextAnticipatedVSyncTimeFromLocked(justBeforeTimePoint);
        mRateDivisorKnownTimestampMap[dividedPeriod] = vsync;
        mRateDivisorKnownTimestampMap[dividedPeriod] = vsync;
        ATRACE_FORMAT_INSTANT("(first) knownVsync in: %.2f", getTimePointIn(now, vsync));
        return true;
        return true;
    }
    }


@@ -323,6 +331,8 @@ bool VSyncPredictor::isVSyncInPhaseLocked(nsecs_t timePoint, unsigned divisor) c


    const auto minVsyncError = std::min_element(vsyncs.begin(), vsyncs.end());
    const auto minVsyncError = std::min_element(vsyncs.begin(), vsyncs.end());
    mRateDivisorKnownTimestampMap[dividedPeriod] = minVsyncError->vsyncTimestamp;
    mRateDivisorKnownTimestampMap[dividedPeriod] = minVsyncError->vsyncTimestamp;
    ATRACE_FORMAT_INSTANT("knownVsync in: %.2f",
                          getTimePointIn(now, minVsyncError->vsyncTimestamp));
    return std::abs(minVsyncError->vsyncTimestamp - timePoint) < period / 2;
    return std::abs(minVsyncError->vsyncTimestamp - timePoint) < period / 2;
}
}