Name Date Size #Lines LOC

..--

README.mdH A D25-Apr-20252.4 KiB7452

__init__.pyH A D25-Apr-2025133 50

_adb.pyH A D25-Apr-20252 KiB7458

_adb_path.pyH A D25-Apr-2025864 3523

_benchresult.pyH A D25-Apr-20252.6 KiB7361

_hardware.pyH A D25-Apr-20253.1 KiB9467

_hardware_android.pyH A D25-Apr-20255.9 KiB162113

_hardware_nexus_6p.pyH A D25-Apr-20253.6 KiB9368

_hardware_pixel.pyH A D25-Apr-20253.1 KiB9161

_hardware_pixel2.pyH A D25-Apr-20254.4 KiB12084

_hardware_pixel_c.pyH A D25-Apr-20253.5 KiB8960

_os_path.pyH A D25-Apr-2025598 2516

sheet.pyH A D25-Apr-20255.3 KiB167126

skiaperf.pyH A D25-Apr-20252.7 KiB9369

skpbench.cppH A D25-Apr-202529.7 KiB779603

skpbench.pyH A D25-Apr-202514.2 KiB397343

README.md

1# skpbench
2
3skpbench is a benchmarking tool for replaying skp or mksp files on android devices.
4it achieves a lower variance in framerate by controlling the clock speed and stopping
5all other processes that could cause interference.
6
7## Build
8
9skpbench consists of the skpbench binary which must be built for the phone you intend to run on,
10and skpbench.py which runs on the machine the phone is connected to via ADB and is the entry point.
11
12The to build skia for android are at https://skia.org/user/build#android and reproduced here.
13
14Download the Android NDK
15
16```
17./bin/fetch-sk
18./bin/sk asset download android_ndk_linux /tmp/ndk
19```
20
21After this is set up once, build skpbench for your target cpu (assumed to be arm64 here for a Pixel 3)
22
23```
24bin/gn gen out/arm64 --args='ndk="/tmp/ndk" target_cpu="arm64" is_debug=false'
25ninja -C out/arm64 skpbench
26```
27
28## Benchmark an SKP on a connected device.
29
30First, copy the built skpbench binary and an example skp file to the device.
31(or pull a skp corpus using instructions in the section below)
32
33```
34adb push out/arm64/skpbench /data/local/tmp
35adb push /home/nifong/Downloads/foo.skp /data/local/tmp/skps/
36```
37
38Run skpbench.py
39
40```
41python tools/skpbench/skpbench.py \
42  --adb \
43  --config gles \
44  /data/local/tmp/skpbench \
45  /data/local/tmp/skps/foo.skp
46```
47
48`--adb` specifies that it should use adb to the only connected device and run skpbench there.
49`--force` is necessary because we don't yet have a configuration to monitor vitals on the Pixel 3.
50`--config gles` specifies Open GL ES is the backend GPU config to use.
51
52Additional documentation of arguments is printed by `python tools/skpbench/skpbench.py --help`
53
54Output appears in the following format
55```
56   accum    median       max       min   stddev  samples  sample_ms  clock  metric  config    bench
57  0.1834    0.1832    0.1897    0.1707    1.59%      101         50  cpu    ms      gles      foo.skp
58```
59
60`accum` is the time taken to draw all frames, divided by the number of frames.
61`metric` specifies that the unit is ms (milliseconds per frame)
62
63## Production
64
65skpbench is run as a tryjob from gerrit, where it uploads the results to perf.skia.org.
66Once such job name is `Perf-Android-Clang-Pixel4XL-GPU-Adreno640-arm64-Release-All-Android_Skpbench`
67
68Perf results are available by querying with this or similar.
69  extra_config = Android_Skpbench
70  sub_result = accum_cpu_ms
71
72Example perf query
73https://perf.skia.org/e/?queries=extra_config%3DAndroid_Skpbench%26sub_result%3Daccum_cpu_ms
74