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

Commit 633c98a9 authored by Alec Mouri's avatar Alec Mouri Committed by Android (Google) Code Review
Browse files

Merge "Add color mode metric to ViewRootImpl" into main

parents 861dbb04 49ee901e
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
// ------------------------