Loading services/surfaceflinger/Scheduler/VSyncPredictor.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -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); Loading services/surfaceflinger/tests/unittests/VSyncPredictorTest.cpp +22 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ #include <gtest/gtest.h> #include <algorithm> #include <chrono> #include <optional> #include <utility> #include <com_android_graphics_surfaceflinger_flags.h> Loading Loading @@ -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 Loading services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockDisplayMode.h +2 −2 Original line number Diff line number Diff line Loading @@ -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)) Loading Loading
services/surfaceflinger/Scheduler/VSyncPredictor.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -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); Loading
services/surfaceflinger/tests/unittests/VSyncPredictorTest.cpp +22 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ #include <gtest/gtest.h> #include <algorithm> #include <chrono> #include <optional> #include <utility> #include <com_android_graphics_surfaceflinger_flags.h> Loading Loading @@ -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 Loading
services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockDisplayMode.h +2 −2 Original line number Diff line number Diff line Loading @@ -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)) Loading