diff options
author | 2021-01-07 14:06:59 +0000 | |
---|---|---|
committer | 2021-01-07 14:06:59 +0000 | |
commit | 4d25380ce2b3fb5ffbe422e23c19ad387ec87ce9 (patch) | |
tree | b90d49a3ff2d804650a961e7221e6389cff23d24 | |
parent | cb0c0a6fbb962ba5ec566e9e0a4faba0d2857896 (diff) | |
parent | 8d34c905f2311bd20f0101d2d0129338298007f5 (diff) |
Merge "Fix jank classification"
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 6967f69876..63201b080c 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -1994,11 +1994,6 @@ void SurfaceFlinger::onMessageRefresh() { mScheduler->onDisplayRefreshed(presentTime); - // Set presentation information before calling postComposition, such that jank information from - // this' frame classification is already available when sending jank info to clients. - mFrameTimeline->setSfPresent(systemTime(), - std::make_shared<FenceTime>(mPreviousPresentFences[0])); - postFrame(); postComposition(); @@ -2120,11 +2115,6 @@ void SurfaceFlinger::postComposition() { ATRACE_CALL(); ALOGV("postComposition"); - nsecs_t dequeueReadyTime = systemTime(); - for (const auto& layer : mLayersWithQueuedFrames) { - layer->releasePendingBuffer(dequeueReadyTime); - } - const auto* display = ON_MAIN_THREAD(getDefaultDisplayDeviceLocked()).get(); getBE().mGlCompositionDoneTimeline.updateSignalTimes(); @@ -2146,6 +2136,17 @@ void SurfaceFlinger::postComposition() { auto presentFenceTime = std::make_shared<FenceTime>(mPreviousPresentFences[0]); getBE().mDisplayTimeline.push(presentFenceTime); + // Set presentation information before calling Layer::releasePendingBuffer, such that jank + // information from previous' frame classification is already available when sending jank info + // to clients, so they get jank classification as early as possible. + mFrameTimeline->setSfPresent(systemTime(), + std::make_shared<FenceTime>(mPreviousPresentFences[0])); + + nsecs_t dequeueReadyTime = systemTime(); + for (const auto& layer : mLayersWithQueuedFrames) { + layer->releasePendingBuffer(dequeueReadyTime); + } + const DisplayStatInfo stats = mScheduler->getDisplayStatInfo(systemTime()); // We use the CompositionEngine::getLastFrameRefreshTimestamp() which might |