fix uninitialization issue in JankTracker

We should initialize mSwapDeadline in JankTracker, or it can be a very
large randomized value and then makes jank tracker not collect concrete
jank type of frames appropriately as expected.

Bug: 161656795
Test: run cts -m CtsIncidentHostTestCases -t
   com.android.server.cts.GraphicsStatsValidationTest#testJankyDrawFrame
Change-Id: I057a50a74502918619204f9164f6a954f8e9c5de
This commit is contained in:
Zhiyin Luo (罗植尹)
2020-01-11 17:14:05 +08:00
committed by John Reck
parent 22187fa9a0
commit 7a0d224756
2 changed files with 4 additions and 1 deletions

View File

@@ -139,6 +139,9 @@ void JankTracker::finishFrame(const FrameInfo& frame) {
(*mGlobalData)->reportJank();
}
if (mSwapDeadline < 0) {
mSwapDeadline = frame[FrameInfoIndex::IntendedVsync] + mFrameInterval;
}
bool isTripleBuffered = (mSwapDeadline - frame[FrameInfoIndex::IntendedVsync]) > (mFrameInterval * 0.1);
mSwapDeadline = std::max(mSwapDeadline + mFrameInterval,

View File

@@ -75,7 +75,7 @@ private:
std::array<int64_t, NUM_BUCKETS> mThresholds;
int64_t mFrameInterval;
nsecs_t mSwapDeadline;
nsecs_t mSwapDeadline = -1;
// The amount of time we will erase from the total duration to account
// for SF vsync offsets with HWC2 blocking dequeueBuffers.
// (Vsync + mDequeueBlockTolerance) is the point at which we expect