Merge "Use SwapBuffersCompleted as frame end time" into sc-dev am: 19cefb4d21

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14500981

Change-Id: I4aca2f1415d337bce00f25cb9b68bad1d7558b52
This commit is contained in:
Jorim Jaggi
2021-05-18 15:37:40 +00:00
committed by Automerger Merge Worker

View File

@@ -677,20 +677,8 @@ void CanvasContext::onSurfaceStatsAvailable(void* context, ASurfaceControl* cont
}
if (frameInfo != nullptr) {
if (gpuCompleteTime == -1) {
gpuCompleteTime = frameInfo->get(FrameInfoIndex::SwapBuffersCompleted);
}
if (gpuCompleteTime < frameInfo->get(FrameInfoIndex::IssueDrawCommandsStart)) {
// On Vulkan the GPU commands are flushed to the GPU during IssueDrawCommands rather
// than after SwapBuffers. So if the GPU signals before issue draw commands, then
// something probably went wrong. Anything after that could just be expected
// pipeline differences
ALOGW("Impossible GPU complete time issueCommandsStart=%" PRIi64
" gpuComplete=%" PRIi64,
frameInfo->get(FrameInfoIndex::IssueDrawCommandsStart), gpuCompleteTime);
gpuCompleteTime = frameInfo->get(FrameInfoIndex::SwapBuffersCompleted);
}
frameInfo->set(FrameInfoIndex::FrameCompleted) = gpuCompleteTime;
frameInfo->set(FrameInfoIndex::FrameCompleted) = std::max(gpuCompleteTime,
frameInfo->get(FrameInfoIndex::SwapBuffersCompleted));
frameInfo->set(FrameInfoIndex::GpuCompleted) = gpuCompleteTime;
instance->mJankTracker.finishFrame(*frameInfo, instance->mFrameMetricsReporter);
}