blob: df666fa7e9cee2ab9172de585771935099da884e [file] [log] [blame]
#!/usr/bin/env python3
# Copyright (C) 2022 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from os import sys, path
import synth_common
class JankType:
JANK_UNSPECIFIED = 0
JANK_NONE = 1
JANK_SF_SCHEDULING = 2
JANK_PREDICTION_ERROR = 4
JANK_DISPLAY_HAL = 8
JANK_SF_CPU_DEADLINE_MISSED = 16
JANK_SF_GPU_DEADLINE_MISSED = 32
JANK_APP_DEADLINE_MISSED = 64
JANK_BUFFER_STUFFING = 128
JANK_UNKNOWN = 256
JANK_SF_STUFFING = 512
JANK_DROPPED = 1024
class PresentType:
PRESENT_UNSPECIFIED = 0
PRESENT_ON_TIME = 1
PRESENT_LATE = 2
PRESENT_EARLY = 3
PRESENT_DROPPED = 4
PRESENT_UNKNOWN = 5
class PredictionType:
PREDICTION_UNSPECIFIED = 0
PREDICTION_VALID = 1
PREDICTION_EXPIRED = 2
PREDICTION_UNKNOWN = 3
trace = synth_common.create_trace()
trace.add_packet(ts=5000000)
trace.add_process(1001, 0, "process1")
trace.add_process(1002, 0, "process2")
trace.add_process(1003, 0, "process3")
trace.add_process(1004, 0, "process4")
trace.add_actual_surface_frame_start_event(
ts=21000000,
cookie=6,
token=100201,
display_frame_token=100211,
pid=1002,
layer_name="Layer1",
present_type=PresentType.PRESENT_ON_TIME,
on_time_finish=1,
gpu_composition=0,
jank_type=JankType.JANK_NONE,
prediction_type=PredictionType.PREDICTION_VALID)
trace.add_frame_end_event(ts=37000000, cookie=6)
trace.add_actual_surface_frame_start_event(
ts=31000000,
cookie=7,
token=100202,
display_frame_token=100212,
pid=1002,
layer_name="Layer1",
present_type=PresentType.PRESENT_ON_TIME,
on_time_finish=1,
gpu_composition=0,
jank_type=JankType.JANK_APP_DEADLINE_MISSED,
prediction_type=PredictionType.PREDICTION_VALID)
trace.add_frame_end_event(ts=47000000, cookie=7)
trace.add_actual_surface_frame_start_event(
ts=32000000,
cookie=8,
token=100202,
display_frame_token=100212,
pid=1002,
layer_name="Layer1",
present_type=PresentType.PRESENT_ON_TIME,
on_time_finish=1,
gpu_composition=0,
jank_type=JankType.JANK_APP_DEADLINE_MISSED,
prediction_type=PredictionType.PREDICTION_VALID)
trace.add_frame_end_event(ts=40000000, cookie=8)
# DisplayFrame with a janky SurfaceFrame
trace.add_actual_surface_frame_start_event(
ts=41000000,
cookie=10,
token=100101,
display_frame_token=100111,
pid=1001,
layer_name="Layer1",
present_type=PresentType.PRESENT_LATE,
on_time_finish=0,
gpu_composition=0,
jank_type=JankType.JANK_APP_DEADLINE_MISSED,
prediction_type=PredictionType.PREDICTION_VALID)
trace.add_frame_end_event(ts=74000000, cookie=10)
trace.add_actual_surface_frame_start_event(
ts=41000000,
cookie=11,
token=100102,
display_frame_token=100112,
pid=1001,
layer_name="Layer1",
present_type=PresentType.PRESENT_LATE,
on_time_finish=0,
gpu_composition=0,
jank_type=JankType.JANK_APP_DEADLINE_MISSED | JankType.JANK_BUFFER_STUFFING,
prediction_type=PredictionType.PREDICTION_VALID)
trace.add_frame_end_event(ts=75000000, cookie=11)
trace.add_actual_surface_frame_start_event(
ts=81000000,
cookie=15,
token=100301,
display_frame_token=100311,
pid=1003,
layer_name="Layer1",
present_type=PresentType.PRESENT_LATE,
on_time_finish=0,
gpu_composition=0,
jank_type=JankType.JANK_SF_CPU_DEADLINE_MISSED,
prediction_type=PredictionType.PREDICTION_VALID)
trace.add_actual_surface_frame_start_event(
ts=90000000,
cookie=15,
token=100302,
display_frame_token=100312,
pid=1003,
layer_name="Layer1",
present_type=PresentType.PRESENT_DROPPED,
on_time_finish=0,
gpu_composition=0,
jank_type=JankType.JANK_DROPPED,
prediction_type=PredictionType.PREDICTION_VALID)
trace.add_frame_end_event(ts=95000000, cookie=15)
trace.add_actual_surface_frame_start_event(
ts=10000000,
cookie=20,
token=100402,
display_frame_token=100412,
pid=1004,
layer_name="Layer1",
present_type=PresentType.PRESENT_DROPPED,
on_time_finish=0,
gpu_composition=0,
jank_type=JankType.JANK_SF_STUFFING,
prediction_type=PredictionType.PREDICTION_VALID)
trace.add_frame_end_event(ts=12000000, cookie=20)
trace.add_actual_surface_frame_start_event(
ts=12500000,
cookie=25,
token=100502,
display_frame_token=100512,
pid=1004,
layer_name="Layer1",
present_type=PresentType.PRESENT_DROPPED,
on_time_finish=0,
gpu_composition=0,
jank_type=JankType.JANK_SF_SCHEDULING,
prediction_type=PredictionType.PREDICTION_VALID)
trace.add_frame_end_event(ts=14000000, cookie=25)
trace.add_actual_surface_frame_start_event(
ts=14500000,
cookie=30,
token=100602,
display_frame_token=100612,
pid=1004,
layer_name="Layer1",
present_type=PresentType.PRESENT_DROPPED,
on_time_finish=0,
gpu_composition=0,
jank_type=JankType.JANK_SF_CPU_DEADLINE_MISSED,
prediction_type=PredictionType.PREDICTION_VALID)
trace.add_frame_end_event(ts=15000000, cookie=30)
trace.add_actual_surface_frame_start_event(
ts=15500000,
cookie=35,
token=100702,
display_frame_token=100712,
pid=1004,
layer_name="Layer1",
present_type=PresentType.PRESENT_DROPPED,
on_time_finish=0,
gpu_composition=0,
jank_type=JankType.JANK_SF_GPU_DEADLINE_MISSED,
prediction_type=PredictionType.PREDICTION_VALID)
trace.add_frame_end_event(ts=16000000, cookie=35)
trace.add_actual_surface_frame_start_event(
ts=16500000,
cookie=40,
token=100802,
display_frame_token=100812,
pid=1004,
layer_name="Layer1",
present_type=PresentType.PRESENT_DROPPED,
on_time_finish=0,
gpu_composition=0,
jank_type=JankType.JANK_SF_SCHEDULING | JankType.JANK_SF_STUFFING,
prediction_type=PredictionType.PREDICTION_VALID)
trace.add_frame_end_event(ts=17000000, cookie=40)
sys.stdout.buffer.write(trace.trace.SerializeToString())