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

Commit 49ee901e authored by Alec Mouri's avatar Alec Mouri
Browse files

Add color mode metric to ViewRootImpl

Log how long a window was in a particular color mode

Bug: 329475035
Flag: EXEMPT logging only
Test: builds
Change-Id: Idd2104f9aafe99954dba81f56691fb10a7405645
parent c4e7d245
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -150,6 +150,7 @@ filegroup {
        // etc.
        ":framework-javastream-protos",
        ":statslog-framework-java-gen", // FrameworkStatsLog.java
        ":statslog-hwui-java-gen", // HwuiStatsLog.java
        ":audio_policy_configuration_V7_0",
    ],
}
+32 −0
Original line number Diff line number Diff line
@@ -284,6 +284,7 @@ import com.android.internal.view.BaseSurfaceHolder;
import com.android.internal.view.RootViewSurfaceTaker;
import com.android.internal.view.SurfaceCallbackHelper;
import com.android.modules.expresslog.Counter;
import com.android.os.coregraphics.HwuiStatsLog;
import libcore.io.IoUtils;
@@ -1228,6 +1229,8 @@ public final class ViewRootImpl implements ViewParent,
    // The latest input event from the gesture that was used to resolve the pointer icon.
    private MotionEvent mPointerIconEvent = null;
    private @ActivityInfo.ColorMode int mCurrentColorMode = ActivityInfo.COLOR_MODE_DEFAULT;
    private long mColorModeLastSetMillis = -1;
    public ViewRootImpl(Context context, Display display) {
        this(context, display, WindowManagerGlobal.getWindowSession(), new WindowLayout());
@@ -2646,6 +2649,7 @@ public final class ViewRootImpl implements ViewParent,
                mFirstFramePresentedTimeNs = -1;
            }
        }
        logColorMode(mCurrentColorMode, true);
    }
@@ -6341,6 +6345,7 @@ public final class ViewRootImpl implements ViewParent,
        if (mAttachInfo.mThreadedRenderer == null) {
            return;
        }
        boolean isHdr = colorMode == ActivityInfo.COLOR_MODE_HDR
                || colorMode == ActivityInfo.COLOR_MODE_HDR10;
        if (isHdr && !mDisplay.isHdrSdrRatioAvailable()) {
@@ -6353,6 +6358,9 @@ public final class ViewRootImpl implements ViewParent,
                && !getConfiguration().isScreenWideColorGamut()) {
            colorMode = ActivityInfo.COLOR_MODE_DEFAULT;
        }
        logColorMode(colorMode, false);
        float automaticRatio = mAttachInfo.mThreadedRenderer.setColorMode(colorMode);
        if (desiredRatio == 0 || desiredRatio > automaticRatio) {
            desiredRatio = automaticRatio;
@@ -10005,6 +10013,7 @@ public final class ViewRootImpl implements ViewParent,
            mAttachInfo.mThreadedRenderer = null;
            mAttachInfo.mHardwareAccelerated = false;
            logColorMode(mCurrentColorMode, true);
        }
    }
@@ -13346,4 +13355,27 @@ public final class ViewRootImpl implements ViewParent,
            mInfrequentUpdateCount = 0;
        }
    }
    private void logColorMode(@ActivityInfo.ColorMode int colorMode, boolean windowStopped) {
        if (mColorModeLastSetMillis == -1 && windowStopped) {
            Log.d(TAG, "Skipping stats log for color mode");
            return;
        }
        long currentTimeMillis = System.currentTimeMillis();
        if (windowStopped) {
            HwuiStatsLog.write(HwuiStatsLog.HARDWARE_RENDERER_EVENT, Process.myUid(),
                    currentTimeMillis - mColorModeLastSetMillis, mCurrentColorMode);
            mColorModeLastSetMillis = -1;
        } else {
            if (mColorModeLastSetMillis > 0) {
                HwuiStatsLog.write(HwuiStatsLog.HARDWARE_RENDERER_EVENT, Process.myUid(),
                        currentTimeMillis - mColorModeLastSetMillis, mCurrentColorMode);
            }
            mColorModeLastSetMillis = currentTimeMillis;
        }
        mCurrentColorMode = colorMode;
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -501,6 +501,13 @@ genrule {
    ],
}

genrule {
    name: "statslog-hwui-java-gen",
    tools: ["stats-log-api-gen"],
    cmd: "$(location stats-log-api-gen) --java $(out) --module hwui --javaPackage com.android.os.coregraphics --javaClass HwuiStatsLog",
    out: ["com/android/os/coregraphics/HwuiStatsLog.java"],
}

// ------------------------
// library
// ------------------------