From fe048f8d5b9192e6104bcf444d898c78fb0ae19e Mon Sep 17 00:00:00 2001 From: Melody Hsu Date: Wed, 12 Feb 2025 23:03:03 +0000 Subject: Init workload target in java FrameInfo FrameInfo's workload target was never initialized on the Java side, and it resulted in occasions where the workload target value was 0. FrameInfo in DrawFrameTask populates itself from the FrameInfo.java, and this info is propagated into CanvasContext. This change ensures that the workload target also has a value going into JankTracker. Fixes: b/395917245 Test: presubmit, wear metric tests Flag: EXEMPT, bug fix Change-Id: I6540ee66d1ad8b0a22da516120cb2b9135c70398 --- graphics/java/android/graphics/FrameInfo.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'graphics/java') diff --git a/graphics/java/android/graphics/FrameInfo.java b/graphics/java/android/graphics/FrameInfo.java index 7d236d203201..3b8f46630344 100644 --- a/graphics/java/android/graphics/FrameInfo.java +++ b/graphics/java/android/graphics/FrameInfo.java @@ -93,10 +93,12 @@ public final class FrameInfo { // Interval between two consecutive frames public static final int FRAME_INTERVAL = 11; + // Workload target deadline for a frame + public static final int WORKLOAD_TARGET = 12; + // Must be the last one // This value must be in sync with `UI_THREAD_FRAME_INFO_SIZE` in FrameInfo.h - // In calculating size, + 1 for Flags, and + 1 for WorkloadTarget from FrameInfo.h - private static final int FRAME_INFO_SIZE = FRAME_INTERVAL + 2; + private static final int FRAME_INFO_SIZE = WORKLOAD_TARGET + 1; /** checkstyle */ public void setVsync(long intendedVsync, long usedVsync, long frameTimelineVsyncId, @@ -108,6 +110,7 @@ public final class FrameInfo { frameInfo[FRAME_DEADLINE] = frameDeadline; frameInfo[FRAME_START_TIME] = frameStartTime; frameInfo[FRAME_INTERVAL] = frameInterval; + frameInfo[WORKLOAD_TARGET] = frameDeadline - intendedVsync; } /** checkstyle */ -- cgit v1.2.3-59-g8ed1b