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

Commit da774518 authored by Ram Indani's avatar Ram Indani Committed by Android (Google) Code Review
Browse files

Merge "Avoid calling onVsyncGenerated when vrrConfig is not available" into main

parents fc37ec5d 26f08b4b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -313,7 +313,7 @@ nsecs_t VSyncPredictor::nextAnticipatedVSyncTimeFrom(nsecs_t timePoint,
            ? std::max(timePoint, *lastVsyncOpt + minFramePeriod - threshold)
            : timePoint;
    const auto vsyncTime = snapToVsyncAlignedWithRenderRate(baseTime);
    if (FlagManager::getInstance().vrr_config()) {
    if (FlagManager::getInstance().vrr_config() && mDisplayModePtr->getVrrConfig()) {
        const auto vsyncTimePoint = TimePoint::fromNs(vsyncTime);
        const Fps renderRate = mRenderRateOpt ? *mRenderRateOpt : mDisplayModePtr->getPeakFps();
        mVsyncTrackerCallback.onVsyncGenerated(vsyncTimePoint, mDisplayModePtr, renderRate);
+22 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
#include <gtest/gtest.h>
#include <algorithm>
#include <chrono>
#include <optional>
#include <utility>

#include <com_android_graphics_surfaceflinger_flags.h>
@@ -733,6 +734,27 @@ TEST_F(VSyncPredictorTest, adjustsVrrTimeline) {
    EXPECT_EQ(6000, vrrTracker.nextAnticipatedVSyncTimeFrom(5000, 5000));
}

TEST_F(VSyncPredictorTest, absentVrrConfigNoVsyncTrackerCallback) {
    SET_FLAG_FOR_TEST(flags::vrr_config, true);
    const auto refreshRate = Fps::fromPeriodNsecs(mPeriod);
    const std::optional<hal::VrrConfig> vrrConfigOpt = std::nullopt;
    constexpr int32_t kGroup = 0;
    constexpr auto kResolution = ui::Size(1920, 1080);
    const auto mode =
            ftl::as_non_null(createVrrDisplayMode(DisplayModeId(0), refreshRate, vrrConfigOpt,
                                                  kGroup, kResolution, DEFAULT_DISPLAY_ID));
    tracker.setDisplayModePtr(mode);

    auto last = mNow;
    for (auto i = 0u; i < kMinimumSamplesForPrediction; i++) {
        EXPECT_CALL(mVsyncTrackerCallback, onVsyncGenerated(_, _, _)).Times(0);
        EXPECT_THAT(tracker.nextAnticipatedVSyncTimeFrom(mNow), Eq(last + mPeriod));
        mNow += mPeriod;
        last = mNow;
        tracker.addVsyncTimestamp(mNow);
    }
}

} // namespace android::scheduler

// TODO(b/129481165): remove the #pragma below and fix conversion issues
+2 −2
Original line number Diff line number Diff line
@@ -45,8 +45,8 @@ inline DisplayModePtr createDisplayMode(PhysicalDisplayId displayId, DisplayMode
}

inline DisplayModePtr createVrrDisplayMode(
        DisplayModeId modeId, Fps displayRefreshRate, hal::VrrConfig vrrConfig, int32_t group = 0,
        ui::Size resolution = ui::Size(1920, 1080),
        DisplayModeId modeId, Fps displayRefreshRate, std::optional<hal::VrrConfig> vrrConfig,
        int32_t group = 0, ui::Size resolution = ui::Size(1920, 1080),
        PhysicalDisplayId displayId = PhysicalDisplayId::fromPort(0)) {
    return createDisplayModeBuilder(modeId, displayRefreshRate, group, resolution, displayId)
            .setVrrConfig(std::move(vrrConfig))