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

Commit d854aed1 authored by Pablo Gamito's avatar Pablo Gamito Committed by Android (Google) Code Review
Browse files

Merge "Add Perfetto tags for transition tracing function" into main

parents e475ab6a 410f8b3b
Loading
Loading
Loading
Loading
+47 −1
Original line number Original line Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.wm.shell.transition.tracing;


import android.internal.perfetto.protos.PerfettoTrace;
import android.internal.perfetto.protos.PerfettoTrace;
import android.os.SystemClock;
import android.os.SystemClock;
import android.os.Trace;
import android.tracing.perfetto.DataSourceInstance;
import android.tracing.perfetto.DataSourceInstance;
import android.tracing.perfetto.DataSourceParams;
import android.tracing.perfetto.DataSourceParams;
import android.tracing.perfetto.InitArguments;
import android.tracing.perfetto.InitArguments;
@@ -58,6 +59,15 @@ public class PerfettoTransitionTracer implements TransitionTracer {
            return;
            return;
        }
        }


        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logDispatched");
        try {
            doLogDispatched(transitionId, handler);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogDispatched(int transitionId, Transitions.TransitionHandler handler) {
        mDataSource.trace(ctx -> {
        mDataSource.trace(ctx -> {
            final int handlerId = getHandlerId(handler, ctx);
            final int handlerId = getHandlerId(handler, ctx);


@@ -97,6 +107,15 @@ public class PerfettoTransitionTracer implements TransitionTracer {
            return;
            return;
        }
        }


        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logMergeRequested");
        try {
            doLogMergeRequested(mergeRequestedTransitionId, playingTransitionId);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogMergeRequested(int mergeRequestedTransitionId, int playingTransitionId) {
        mDataSource.trace(ctx -> {
        mDataSource.trace(ctx -> {
            final ProtoOutputStream os = ctx.newTracePacket();
            final ProtoOutputStream os = ctx.newTracePacket();
            final long token = os.start(PerfettoTrace.TracePacket.SHELL_TRANSITION);
            final long token = os.start(PerfettoTrace.TracePacket.SHELL_TRANSITION);
@@ -120,10 +139,19 @@ public class PerfettoTransitionTracer implements TransitionTracer {
            return;
            return;
        }
        }


        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logMerged");
        try {
            doLogMerged(mergedTransitionId, playingTransitionId);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogMerged(int mergeRequestedTransitionId, int playingTransitionId) {
        mDataSource.trace(ctx -> {
        mDataSource.trace(ctx -> {
            final ProtoOutputStream os = ctx.newTracePacket();
            final ProtoOutputStream os = ctx.newTracePacket();
            final long token = os.start(PerfettoTrace.TracePacket.SHELL_TRANSITION);
            final long token = os.start(PerfettoTrace.TracePacket.SHELL_TRANSITION);
            os.write(PerfettoTrace.ShellTransition.ID, mergedTransitionId);
            os.write(PerfettoTrace.ShellTransition.ID, mergeRequestedTransitionId);
            os.write(PerfettoTrace.ShellTransition.MERGE_TIME_NS,
            os.write(PerfettoTrace.ShellTransition.MERGE_TIME_NS,
                    SystemClock.elapsedRealtimeNanos());
                    SystemClock.elapsedRealtimeNanos());
            os.write(PerfettoTrace.ShellTransition.MERGE_TARGET, playingTransitionId);
            os.write(PerfettoTrace.ShellTransition.MERGE_TARGET, playingTransitionId);
@@ -142,6 +170,15 @@ public class PerfettoTransitionTracer implements TransitionTracer {
            return;
            return;
        }
        }


        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logAborted");
        try {
            doLogAborted(transitionId);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogAborted(int transitionId) {
        mDataSource.trace(ctx -> {
        mDataSource.trace(ctx -> {
            final ProtoOutputStream os = ctx.newTracePacket();
            final ProtoOutputStream os = ctx.newTracePacket();
            final long token = os.start(PerfettoTrace.TracePacket.SHELL_TRANSITION);
            final long token = os.start(PerfettoTrace.TracePacket.SHELL_TRANSITION);
@@ -157,6 +194,15 @@ public class PerfettoTransitionTracer implements TransitionTracer {
    }
    }


    private void onFlush() {
    private void onFlush() {
        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "onFlush");
        try {
            doOnFlush();
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doOnFlush() {
        mDataSource.trace(ctx -> {
        mDataSource.trace(ctx -> {
            final ProtoOutputStream os = ctx.newTracePacket();
            final ProtoOutputStream os = ctx.newTracePacket();


+38 −0
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.server.wm;
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.internal.perfetto.protos.PerfettoTrace;
import android.internal.perfetto.protos.PerfettoTrace;
import android.os.SystemClock;
import android.os.SystemClock;
import android.os.Trace;
import android.tracing.perfetto.DataSourceParams;
import android.tracing.perfetto.DataSourceParams;
import android.tracing.perfetto.InitArguments;
import android.tracing.perfetto.InitArguments;
import android.tracing.perfetto.Producer;
import android.tracing.perfetto.Producer;
@@ -57,6 +58,16 @@ class PerfettoTransitionTracer implements TransitionTracer {
            return;
            return;
        }
        }


        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logSentTransition");
        try {
            doLogSentTransition(transition, targets);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogSentTransition(
            Transition transition, ArrayList<Transition.ChangeInfo> targets) {
        mDataSource.trace((ctx) -> {
        mDataSource.trace((ctx) -> {
            final ProtoOutputStream os = ctx.newTracePacket();
            final ProtoOutputStream os = ctx.newTracePacket();


@@ -91,6 +102,15 @@ class PerfettoTransitionTracer implements TransitionTracer {
            return;
            return;
        }
        }


        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logFinishedTransition");
        try {
            doLogFinishTransition(transition);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogFinishTransition(Transition transition) {
        mDataSource.trace((ctx) -> {
        mDataSource.trace((ctx) -> {
            final ProtoOutputStream os = ctx.newTracePacket();
            final ProtoOutputStream os = ctx.newTracePacket();


@@ -114,6 +134,15 @@ class PerfettoTransitionTracer implements TransitionTracer {
            return;
            return;
        }
        }


        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logAbortedTransition");
        try {
            doLogAbortedTransition(transition);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogAbortedTransition(Transition transition) {
        mDataSource.trace((ctx) -> {
        mDataSource.trace((ctx) -> {
            final ProtoOutputStream os = ctx.newTracePacket();
            final ProtoOutputStream os = ctx.newTracePacket();


@@ -131,6 +160,15 @@ class PerfettoTransitionTracer implements TransitionTracer {
            return;
            return;
        }
        }


        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logRemovingStartingWindow");
        try {
            doLogRemovingStartingWindow(startingData);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    public void doLogRemovingStartingWindow(@NonNull StartingData startingData) {
        mDataSource.trace((ctx) -> {
        mDataSource.trace((ctx) -> {
            final ProtoOutputStream os = ctx.newTracePacket();
            final ProtoOutputStream os = ctx.newTracePacket();