Use SwapBuffersCompleted as frame end time

...in case GPU completes really quickly.

Fixes: 181899835
Test: atest FrameMetricsListenerTest --iterations 50
Change-Id: I73b9380f92eb15f94ae4754746ee98c7fbc4e6c7
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index 891a994..c1f61e08 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -677,20 +677,8 @@
     }
 
     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);
     }