Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f97e15e authored by John Reck's avatar John Reck
Browse files

Fix a logspam

On skiavk the flush to GPU happens sooner than it does on skiagl,
which was resulting in false-positive warning logs. Adjust the
condition to avoid this, so it should now only log if the GPU
fence time is significantly incorrect.

Fixes: 180488606
Test: doesn't log on skiavk
Change-Id: Ie6546b788663b5d863fb064f55245bead4eb0160
parent ae4d48eb
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -667,10 +667,14 @@ void CanvasContext::onSurfaceStatsAvailable(void* context, ASurfaceControl* cont
        if (gpuCompleteTime == -1) {
            gpuCompleteTime = frameInfo->get(FrameInfoIndex::SwapBuffersCompleted);
        }
        if (gpuCompleteTime < frameInfo->get(FrameInfoIndex::SwapBuffers)) {
            // TODO (b/180488606): Investigate why this can happen for first frames.
            ALOGW("Impossible GPU complete time swapBuffers=%" PRIi64 " gpuComplete=%" PRIi64,
                    frameInfo->get(FrameInfoIndex::SwapBuffers), gpuCompleteTime);
        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;