blob: db6aa2ecfc66f768b873b2aecb3df27e7fc7e3ff (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
#
# Script to start 3 chrome tabs, fling each of them, repeat
# For each iteration, Total frames and janky frames are reported.
#
# Options are described below.
#
iterations=10
startapps=1
capturesystrace=0
waittime=4
app=chrome
function processLocalOption {
ret=0
case "$1" in
(-N) startapps=0;;
(-A) unset appList;;
(-L) appList=$2; shift; ret=1;;
(-T) capturesystrace=1;;
(-W) waittime=$2; shift; ret=1;;
(*)
echo "$0: unrecognized option: $1"
echo; echo "Usage: $0 [options]"
echo "-A : use all known applications"
echo "-L applist : list of applications"
echo " default: $appList"
echo "-N : no app startups, just fling"
echo "-g : generate activity strings"
echo "-i iterations"
echo "-T : capture systrace on each iteration"
echo "-d device : device type (shamu, volantis, bullhead,...)"
exit 1;;
esac
return $ret
}
CMDDIR=$(dirname $0 2>/dev/null)
CMDDIR=${CMDDIR:=.}
. $CMDDIR/defs.sh
case $DEVICE in
(hammerhead)
flingtime=300
downCount=2
upCount=6
UP="70 400 70 100 $flingtime"
DOWN="70 100 70 400 $flingtime";;
(shamu)
flingtime=100
downCount=2
upCount=2
UP="700 1847 700 400 $flingtime"
DOWN="700 400 700 1847 $flingtime";;
(angler)
flingtime=150
downCount=4
upCount=3
UP="500 1200 500 550 $flingtime"
DOWN="500 550 500 1200 $flingtime";;
(bullhead|volantis)
flingtime=200
downCount=5
upCount=5
UP="500 1400 500 400 $flingtime"
DOWN="500 400 500 1400 $flingtime";;
(ariel)
flingtime=200
downCount=5
upCount=5
UP="500 1560 500 530 $flingtime"
DOWN="500 530 500 1560 $flingtime";;
(*)
echo "Error: No display information available for $DEVICE"
exit 1;;
esac
function swipe {
count=0
while [ $count -lt $2 ]
do
doSwipe $1
((count=count+1))
done
sleep 1
}
cur=1
frameSum=0
jankSum=0
latency90Sum=0
latency95Sum=0
latency99Sum=0
doKeyevent HOME
sleep 0.5
resetJankyFrames $(getPackageName $app)
while [ $cur -le $iterations ]
do
if [ $capturesystrace -gt 0 ]; then
${ADB}atrace --async_start -z -c -b 16000 freq gfx view idle sched
fi
t=$(startActivity $app)
sleep $waittime
swipe "$UP" $upCount
sleep $waittime
swipe "$DOWN" $downCount
doKeyevent BACK
sleep 0.5
if [ $capturesystrace -gt 0 ]; then
${ADB}atrace --async_dump -z -c -b 16000 freq gfx view idle sched > trace.${cur}.out
fi
doKeyevent HOME
sleep 0.5
set -- $(getJankyFrames $(getPackageName $app))
totalDiff=$1
jankyDiff=$2
latency90=$3
latency95=$4
latency99=$5
if [ ${totalDiff:=0} -eq 0 ]; then
echo Error: could not read frame info with \"dumpsys gfxinfo\"
exit 1
fi
((frameSum=frameSum+totalDiff))
((jankSum=jankSum+jankyDiff))
((latency90Sum=latency90Sum+latency90))
((latency95Sum=latency95Sum+latency95))
((latency99Sum=latency99Sum+latency99))
if [ "$totalDiff" -eq 0 ]; then
echo Error: no frames detected. Is the display off?
exit 1
fi
((jankPct=jankyDiff*100/totalDiff))
resetJankyFrames $(getPackageName $app)
echo Frames: $totalDiff latency: $latency90/$latency95/$latency99 Janks: $jankyDiff\(${jankPct}%\)
((cur=cur+1))
done
doKeyevent HOME
((aveJankPct=jankSum*100/frameSum))
((aveJanks=jankSum/iterations))
((aveFrames=frameSum/iterations))
((aveLatency90=latency90Sum/iterations))
((aveLatency95=latency95Sum/iterations))
((aveLatency99=latency99Sum/iterations))
echo AVE: Frames: $aveFrames latency: $aveLatency90/$aveLatency95/$aveLatency99 Janks: $aveJanks\(${aveJankPct}%\)
|