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

Commit a00689b3 authored by Pechetty Sravani (xWF)'s avatar Pechetty Sravani (xWF) Committed by Android (Google) Code Review
Browse files

Merge changes from topic "revert-28899062-frame_duration-AERRFOIUUY" into main

* changes:
  Revert "Add the expected and actual frame duration to the SF jan..."
  Revert "Use the expected frame duration from SF instead of HWUI."
parents 9de96295 e0af07b8
Loading
Loading
Loading
Loading
+0 −15
Original line number Diff line number Diff line
@@ -100,7 +100,6 @@ aconfig_declarations_group {
        "framework-jobscheduler-job.flags-aconfig-java",
        "framework_graphics_flags_java_lib",
        "hwui_flags_java_lib",
        "interaction_jank_monitor_flags_lib",
        "libcore_exported_aconfig_flags_lib",
        "libgui_flags_java_lib",
        "power_flags_lib",
@@ -1579,17 +1578,3 @@ java_aconfig_library {
    aconfig_declarations: "dropbox_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Zero Jank
aconfig_declarations {
    name: "interaction_jank_monitor_flags",
    package: "com.android.internal.jank",
    container: "system",
    srcs: ["core/java/com/android/internal/jank/flags.aconfig"],
}

java_aconfig_library {
    name: "interaction_jank_monitor_flags_lib",
    aconfig_declarations: "interaction_jank_monitor_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}
+2 −6
Original line number Diff line number Diff line
@@ -445,20 +445,16 @@ public final class SurfaceControl implements Parcelable {
        // Jank due to unknown reasons.
        public static final int UNKNOWN = 0x80;

        public JankData(long frameVsyncId, @JankType int jankType, long frameIntervalNs,
                long scheduledAppFrameTimeNs, long actualAppFrameTimeNs) {
        public JankData(long frameVsyncId, @JankType int jankType, long frameIntervalNs) {
            this.frameVsyncId = frameVsyncId;
            this.jankType = jankType;
            this.frameIntervalNs = frameIntervalNs;
            this.scheduledAppFrameTimeNs = scheduledAppFrameTimeNs;
            this.actualAppFrameTimeNs = actualAppFrameTimeNs;

        }

        public final long frameVsyncId;
        public final @JankType int jankType;
        public final long frameIntervalNs;
        public final long scheduledAppFrameTimeNs;
        public final long actualAppFrameTimeNs;
    }

    /**
+27 −34
Original line number Diff line number Diff line
@@ -127,7 +127,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
    private Runnable mWaitForFinishTimedOut;

    private static class JankInfo {
        final long frameVsyncId;
        long frameVsyncId;
        long totalDurationNanos;
        boolean isFirstFrame;
        boolean hwuiCallbackFired;
@@ -135,42 +135,29 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
        @JankType int jankType;
        @RefreshRate int refreshRate;

        static JankInfo createFromHwuiCallback(
                long frameVsyncId, long totalDurationNanos, boolean isFirstFrame) {
            return new JankInfo(frameVsyncId).update(totalDurationNanos, isFirstFrame);
        static JankInfo createFromHwuiCallback(long frameVsyncId, long totalDurationNanos,
                boolean isFirstFrame) {
            return new JankInfo(frameVsyncId, true, false, JANK_NONE, UNKNOWN_REFRESH_RATE,
                    totalDurationNanos, isFirstFrame);
        }

        static JankInfo createFromSurfaceControlCallback(SurfaceControl.JankData jankStat) {
            return new JankInfo(jankStat.frameVsyncId).update(jankStat);
        static JankInfo createFromSurfaceControlCallback(long frameVsyncId,
                @JankType int jankType, @RefreshRate int refreshRate) {
            return new JankInfo(
                    frameVsyncId, false, true, jankType, refreshRate, 0, false /* isFirstFrame */);
        }

        private JankInfo(long frameVsyncId) {
        private JankInfo(long frameVsyncId, boolean hwuiCallbackFired,
                boolean surfaceControlCallbackFired, @JankType int jankType,
                @RefreshRate int refreshRate,
                long totalDurationNanos, boolean isFirstFrame) {
            this.frameVsyncId = frameVsyncId;
            this.hwuiCallbackFired = false;
            this.surfaceControlCallbackFired = false;
            this.jankType = JANK_NONE;
            this.refreshRate = UNKNOWN_REFRESH_RATE;
            this.totalDurationNanos = 0;
            this.isFirstFrame = false;
        }

        private JankInfo update(SurfaceControl.JankData jankStat) {
            this.surfaceControlCallbackFired = true;
            this.jankType = jankStat.jankType;
            this.refreshRate = DisplayRefreshRate.getRefreshRate(jankStat.frameIntervalNs);
            if (Flags.useSfFrameDuration()) {
                this.totalDurationNanos = jankStat.actualAppFrameTimeNs;
            }
            return this;
        }

        private JankInfo update(long totalDurationNanos, boolean isFirstFrame) {
            this.hwuiCallbackFired = true;
            if (!Flags.useSfFrameDuration()) {
            this.hwuiCallbackFired = hwuiCallbackFired;
            this.surfaceControlCallbackFired = surfaceControlCallbackFired;
            this.jankType = jankType;
            this.refreshRate = refreshRate;
            this.totalDurationNanos = totalDurationNanos;
            }
            this.isFirstFrame = isFirstFrame;
            return this;
        }

        @Override
@@ -470,12 +457,16 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
                if (!isInRange(jankStat.frameVsyncId)) {
                    continue;
                }
                int refreshRate = DisplayRefreshRate.getRefreshRate(jankStat.frameIntervalNs);
                JankInfo info = findJankInfo(jankStat.frameVsyncId);
                if (info != null) {
                    info.update(jankStat);
                    info.surfaceControlCallbackFired = true;
                    info.jankType = jankStat.jankType;
                    info.refreshRate = refreshRate;
                } else {
                    mJankInfos.put((int) jankStat.frameVsyncId,
                            JankInfo.createFromSurfaceControlCallback(jankStat));
                            JankInfo.createFromSurfaceControlCallback(
                                    jankStat.frameVsyncId, jankStat.jankType, refreshRate));
                }
            }
            processJankInfos();
@@ -522,7 +513,9 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
            }
            JankInfo info = findJankInfo(frameVsyncId);
            if (info != null) {
                info.update(totalDurationNanos, isFirstFrame);
                info.hwuiCallbackFired = true;
                info.totalDurationNanos = totalDurationNanos;
                info.isFirstFrame = isFirstFrame;
            } else {
                mJankInfos.put((int) frameVsyncId, JankInfo.createFromHwuiCallback(
                        frameVsyncId, totalDurationNanos, isFirstFrame));
+0 −9
Original line number Diff line number Diff line
package: "com.android.internal.jank"
container: "system"

flag {
  name: "use_sf_frame_duration"
  namespace: "android_platform_window_surfaces"
  description: "Whether to get the frame duration from SurfaceFlinger, or HWUI"
  bug: "354763298"
}
+4 −6
Original line number Diff line number Diff line
@@ -2089,11 +2089,9 @@ public:
        jobjectArray jJankDataArray = env->NewObjectArray(jankData.size(),
                gJankDataClassInfo.clazz, nullptr);
        for (size_t i = 0; i < jankData.size(); i++) {
            jobject jJankData =
                    env->NewObject(gJankDataClassInfo.clazz, gJankDataClassInfo.ctor,
            jobject jJankData = env->NewObject(gJankDataClassInfo.clazz, gJankDataClassInfo.ctor,
                                               jankData[i].frameVsyncId, jankData[i].jankType,
                                   jankData[i].frameIntervalNs, jankData[i].scheduledAppFrameTimeNs,
                                   jankData[i].actualAppFrameTimeNs);
                                               jankData[i].frameIntervalNs);
            env->SetObjectArrayElement(jJankDataArray, i, jJankData);
            env->DeleteLocalRef(jJankData);
        }
@@ -2729,7 +2727,7 @@ int register_android_view_SurfaceControl(JNIEnv* env)
    jclass jankDataClazz =
                FindClassOrDie(env, "android/view/SurfaceControl$JankData");
    gJankDataClassInfo.clazz = MakeGlobalRefOrDie(env, jankDataClazz);
    gJankDataClassInfo.ctor = GetMethodIDOrDie(env, gJankDataClassInfo.clazz, "<init>", "(JIJJJ)V");
    gJankDataClassInfo.ctor = GetMethodIDOrDie(env, gJankDataClassInfo.clazz, "<init>", "(JIJ)V");
    jclass onJankDataListenerClazz =
            FindClassOrDie(env, "android/view/SurfaceControl$OnJankDataListener");
    gJankDataListenerClassInfo.clazz = MakeGlobalRefOrDie(env, onJankDataListenerClazz);
Loading