diff options
author | 2022-02-01 23:29:41 -0800 | |
---|---|---|
committer | 2022-02-07 10:44:05 -0800 | |
commit | 0d94320c36cddc1fa11b642186a8165f076f46fd (patch) | |
tree | 432a5ae8f6a2582ddbc1ddc256d28795243942a7 | |
parent | 08d8e537870db7aa945ac786d7bc27b2bc0d8c2c (diff) |
Remove vsync ID generation before multi timelines.
Cleanup. The initial vsync ID generation logic is unnecessary because
it can be handled by generateFrameTimelines.
Bug: 205721584
Test: atest libsurfaceflinger_unittest
Change-Id: I6f5f23577c2db26f05fdbbab788624ed4339800b
-rw-r--r-- | services/surfaceflinger/Scheduler/EventThread.cpp | 32 | ||||
-rw-r--r-- | services/surfaceflinger/tests/unittests/EventThreadTest.cpp | 21 |
2 files changed, 19 insertions, 34 deletions
diff --git a/services/surfaceflinger/Scheduler/EventThread.cpp b/services/surfaceflinger/Scheduler/EventThread.cpp index 627c49a853..c9ab96592e 100644 --- a/services/surfaceflinger/Scheduler/EventThread.cpp +++ b/services/surfaceflinger/Scheduler/EventThread.cpp @@ -108,13 +108,12 @@ DisplayEventReceiver::Event makeHotplug(PhysicalDisplayId displayId, nsecs_t tim DisplayEventReceiver::Event makeVSync(PhysicalDisplayId displayId, nsecs_t timestamp, uint32_t count, nsecs_t expectedVSyncTimestamp, - nsecs_t deadlineTimestamp, int64_t vsyncId) { + nsecs_t deadlineTimestamp) { DisplayEventReceiver::Event event; event.header = {DisplayEventReceiver::DISPLAY_EVENT_VSYNC, displayId, timestamp}; event.vsync.count = count; event.vsync.expectedVSyncTimestamp = expectedVSyncTimestamp; event.vsync.deadlineTimestamp = deadlineTimestamp; - event.vsync.vsyncId = vsyncId; return event; } @@ -356,9 +355,8 @@ void EventThread::onVSyncEvent(nsecs_t timestamp, nsecs_t expectedVSyncTimestamp std::lock_guard<std::mutex> lock(mMutex); LOG_FATAL_IF(!mVSyncState); - const int64_t vsyncId = generateToken(timestamp, deadlineTimestamp, expectedVSyncTimestamp); mPendingEvents.push_back(makeVSync(mVSyncState->displayId, timestamp, ++mVSyncState->count, - expectedVSyncTimestamp, deadlineTimestamp, vsyncId)); + expectedVSyncTimestamp, deadlineTimestamp)); mCondition.notify_all(); } @@ -493,16 +491,9 @@ void EventThread::threadMain(std::unique_lock<std::mutex>& lock) { const auto now = systemTime(SYSTEM_TIME_MONOTONIC); const auto deadlineTimestamp = now + timeout.count(); const auto expectedVSyncTime = deadlineTimestamp + timeout.count(); - const int64_t vsyncId = [&] { - if (mTokenManager != nullptr) { - return mTokenManager->generateTokenForPredictions( - {now, deadlineTimestamp, expectedVSyncTime}); - } - return FrameTimelineInfo::INVALID_VSYNC_ID; - }(); mPendingEvents.push_back(makeVSync(mVSyncState->displayId, now, ++mVSyncState->count, expectedVSyncTime, - deadlineTimestamp, vsyncId)); + deadlineTimestamp)); } } } @@ -579,18 +570,13 @@ void EventThread::generateFrameTimeline(DisplayEventReceiver::Event& event) cons if (deadline > event.header.timestamp) { if (multiplier == 0) { event.vsync.preferredFrameTimelineIndex = currentIndex; - event.vsync.frameTimelines[currentIndex] = - {.vsyncId = event.vsync.vsyncId, - .deadlineTimestamp = event.vsync.deadlineTimestamp, - .expectedVSyncTimestamp = event.vsync.expectedVSyncTimestamp}; - } else { - nsecs_t expectedVSync = - event.vsync.expectedVSyncTimestamp + multiplier * event.vsync.frameInterval; - event.vsync.frameTimelines[currentIndex] = - {.vsyncId = generateToken(event.header.timestamp, deadline, expectedVSync), - .deadlineTimestamp = deadline, - .expectedVSyncTimestamp = expectedVSync}; } + nsecs_t expectedVSync = + event.vsync.expectedVSyncTimestamp + multiplier * event.vsync.frameInterval; + event.vsync.frameTimelines[currentIndex] = + {.vsyncId = generateToken(event.header.timestamp, deadline, expectedVSync), + .deadlineTimestamp = deadline, + .expectedVSyncTimestamp = expectedVSync}; currentIndex++; } } diff --git a/services/surfaceflinger/tests/unittests/EventThreadTest.cpp b/services/surfaceflinger/tests/unittests/EventThreadTest.cpp index 67a0d7ec32..57cb5cf441 100644 --- a/services/surfaceflinger/tests/unittests/EventThreadTest.cpp +++ b/services/surfaceflinger/tests/unittests/EventThreadTest.cpp @@ -275,17 +275,16 @@ void EventThreadTest::expectVsyncEventFrameTimelinesCorrect(nsecs_t expectedTime event.vsync.frameTimelines[i - 1].expectedVSyncTimestamp) << "Expected vsync timestamp out of order for frame timeline " << i; } - if (event.vsync.frameTimelines[i].deadlineTimestamp == preferredDeadline) { - EXPECT_EQ(i, event.vsync.preferredFrameTimelineIndex) - << "Preferred frame timeline index should be " << i; - // For the platform-preferred frame timeline, the vsync ID is 0 because the first frame - // timeline is made before the rest. - EXPECT_EQ(0, event.vsync.frameTimelines[i].vsyncId) - << "Vsync ID incorrect for frame timeline " << i; - } else { - // Vsync ID 0 is used for the preferred frame timeline. - EXPECT_EQ(i + 1, event.vsync.frameTimelines[i].vsyncId) - << "Vsync ID incorrect for frame timeline " << i; + + // Vsync ID order lines up with registration into test token manager. + EXPECT_EQ(i, event.vsync.frameTimelines[i].vsyncId) + << "Vsync ID incorrect for frame timeline " << i; + if (i == event.vsync.preferredFrameTimelineIndex) { + EXPECT_EQ(event.vsync.frameTimelines[i].deadlineTimestamp, preferredDeadline) + << "Preferred deadline timestamp incorrect" << i; + EXPECT_EQ(event.vsync.frameTimelines[i].expectedVSyncTimestamp, + event.vsync.expectedVSyncTimestamp) + << "Preferred expected vsync timestamp incorrect" << i; } } } |