SurfaceFlinger: expose vsync id extra buffers
Expose a function for clients to call and query the number
of extra buffers needed when vsync id is passed with the buffer.
Test: launch an app and observe systrace
Test: SF unit tests
Bug: 178148035
Change-Id: Icbeec66073feeae9768f0dcc45831b26144ab6f6
diff --git a/services/surfaceflinger/tests/unittests/SchedulerTest.cpp b/services/surfaceflinger/tests/unittests/SchedulerTest.cpp
index e688e10..510b620 100644
--- a/services/surfaceflinger/tests/unittests/SchedulerTest.cpp
+++ b/services/surfaceflinger/tests/unittests/SchedulerTest.cpp
@@ -69,6 +69,8 @@
Scheduler::ConnectionHandle mConnectionHandle;
mock::EventThread* mEventThread;
sp<MockEventThreadConnection> mEventThreadConnection;
+
+ TestableSurfaceFlinger mFlinger;
};
SchedulerTest::SchedulerTest() {
@@ -187,4 +189,14 @@
EXPECT_CALL(*mEventThread, onConfigChanged(_, _, _)).Times(0);
}
+TEST_F(SchedulerTest, calculateExtraBufferCount) {
+ EXPECT_EQ(0, mFlinger.calculateExtraBufferCount(Fps(60), 30ms));
+ EXPECT_EQ(1, mFlinger.calculateExtraBufferCount(Fps(90), 30ms));
+ EXPECT_EQ(2, mFlinger.calculateExtraBufferCount(Fps(120), 30ms));
+
+ EXPECT_EQ(1, mFlinger.calculateExtraBufferCount(Fps(60), 40ms));
+
+ EXPECT_EQ(0, mFlinger.calculateExtraBufferCount(Fps(60), 10ms));
+}
+
} // namespace android