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

Commit 997a11f0 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add tracing to FrameTracker" into main

parents f1ec08e4 974a5aa8
Loading
Loading
Loading
Loading
+55 −35
Original line number Diff line number Diff line
@@ -253,6 +253,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
            mSurfaceChangedCallback = new ViewRootImpl.SurfaceChangedCallback() {
                @Override
                public void surfaceCreated(SurfaceControl.Transaction t) {
                    Trace.beginSection("FrameTracker#surfaceCreated");
                    mHandler.runWithScissors(() -> {
                        if (mSurfaceControl == null) {
                            mSurfaceControl = mViewRoot.getSurfaceControl();
@@ -262,6 +263,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
                            }
                        }
                    }, EXECUTOR_TASK_TIMEOUT);
                    Trace.endSection();
                }

                @Override
@@ -464,6 +466,8 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
    @Override
    public void onJankDataAvailable(SurfaceControl.JankData[] jankData) {
        postCallback(() -> {
            try {
                Trace.beginSection("FrameTracker#onJankDataAvailable");
                if (mCancelled || mMetricsFinalized) {
                    return;
                }
@@ -481,6 +485,9 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
                    }
                }
                processJankInfos();
            } finally {
                Trace.endSection();
            }
        });
    }

@@ -507,6 +514,8 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
    @Override
    public void onFrameMetricsAvailable(int dropCountSinceLastInvocation) {
        postCallback(() -> {
            try {
                Trace.beginSection("FrameTracker#onFrameMetricsAvailable");
                if (mCancelled || mMetricsFinalized) {
                    return;
                }
@@ -515,7 +524,8 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
                // We should keep tracking the begin / end timestamp that we can compare with
                // vsync timestamp to check if the frame is in the duration of the CUJ.
                long totalDurationNanos = mMetricsWrapper.getMetric(FrameMetrics.TOTAL_DURATION);
            boolean isFirstFrame = mMetricsWrapper.getMetric(FrameMetrics.FIRST_DRAW_FRAME) == 1;
                boolean isFirstFrame =
                    mMetricsWrapper.getMetric(FrameMetrics.FIRST_DRAW_FRAME) == 1;
                long frameVsyncId =
                        mMetricsWrapper.getTiming()[FrameMetrics.Index.FRAME_TIMELINE_VSYNC_ID];

@@ -530,6 +540,9 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
                            frameVsyncId, totalDurationNanos, isFirstFrame));
                }
                processJankInfos();
            } finally {
                Trace.endSection();
            }
        });
    }

@@ -575,6 +588,13 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai

    @UiThread
    private void finish() {
        Trace.beginSection("FrameTracker#finish");
        finishTraced();
        Trace.endSection();
    }

    @UiThread
    private void finishTraced() {
        if (mMetricsFinalized || mCancelled) return;
        mMetricsFinalized = true;