30def _run(api, title, *cmd, **kwargs):
31 with api.context(cwd=api.path[
'start_dir'].join(
'skia')):
32 return api.run(api.step, title, cmd=list(cmd), **kwargs)
35def _adb(api, title, *cmd, **kwargs):
36 if 'infra_step' not in kwargs:
37 kwargs[
'infra_step'] =
True
38 return _run(api, title, ADB_BINARY, *cmd, **kwargs)
42 """benchmark Skia using skpbench."""
43 is_vulkan =
'Vulkan' in api.vars.builder_name
44 is_metal =
'Metal' in api.vars.builder_name
45 is_android =
'Android' in api.vars.builder_name
46 is_apple_m1 =
'AppleM1' in api.vars.builder_name
47 is_all_paths_volatile =
'AllPathsVolatile' in api.vars.builder_name
48 is_mskp =
'Mskp' in api.vars.builder_name
49 is_ddl =
'DDL' in api.vars.builder_name
50 is_9x9 =
'9x9' in api.vars.builder_name
52 api.file.ensure_directory(
53 'makedirs perf_dir', api.flavor.host_dirs.perf_data_dir)
56 app = api.vars.build_dir.join(
'skpbench')
57 _adb(api,
'push skpbench',
'push', app, api.flavor.device_dirs.bin_dir)
59 skpbench_dir = api.vars.workdir.join(
'skia',
'tools',
'skpbench')
60 table = api.path.join(api.vars.swarming_out_dir,
'table')
68 if "MaliG77" in api.vars.builder_name:
69 config =
'glesdmsaa,' + config
72 if "QuadroP400" in api.vars.builder_name
or is_apple_m1:
73 config =
'gldmsaa,' + config
75 internal_samples = 4
if is_android
or is_apple_m1
else 8
77 if is_all_paths_volatile:
78 config =
"%smsaa%i" % (config, internal_samples)
80 skpbench_invocation = api.path.join(api.flavor.device_dirs.bin_dir,
'skpbench')
83 if is_vulkan
and 'GalaxyS20' in api.vars.builder_name:
84 skpbench_invocation =
"LD_LIBRARY_PATH=/data/local/tmp %s" % skpbench_invocation
88 '--resultsfile', table,
90 '--internalSamples', str(internal_samples),
94 skpbench_args += [
'--ddl']
96 skpbench_args += [
'--gpuThreads',
'0']
99 '--ddlNumRecordingThreads', 9,
100 '--ddlTilingWidthHeight', 3]
104 '--adb_binary', ADB_BINARY]
106 skpbench_args += [api.flavor.device_dirs.mskp_dir]
107 elif is_all_paths_volatile:
109 '--allPathsVolatile',
110 '--suffix',
"_volatile",
111 api.path.join(api.flavor.device_dirs.skp_dir,
'desk_*svg.skp'),
112 api.path.join(api.flavor.device_dirs.skp_dir,
'desk_motionmark*.skp'),
113 api.path.join(api.flavor.device_dirs.skp_dir,
'desk_chalkboard.skp')]
115 skpbench_args += [api.flavor.device_dirs.skp_dir]
117 if api.properties.get(
'dont_reduce_ops_task_splitting') ==
'true':
118 skpbench_args += [
'--dontReduceOpsTaskSplitting']
120 api.run(api.step,
'skpbench',
121 cmd=[
'python3', skpbench_dir.join(
'skpbench.py')] + skpbench_args)
126 'gitHash', api.properties[
'revision'],
128 if api.vars.is_trybot:
129 skiaperf_args.extend([
130 'issue', api.vars.issue,
131 'patchset', api.vars.patchset,
132 'patch_storage', api.vars.patch_storage,
135 skiaperf_args.extend([
'swarming_bot_id', api.vars.swarming_bot_id])
136 skiaperf_args.extend([
'swarming_task_id', api.vars.swarming_task_id])
138 now = api.time.utcnow()
139 ts =
int(calendar.timegm(now.utctimetuple()))
140 json_path = api.path.join(
141 api.flavor.host_dirs.perf_data_dir,
142 'skpbench_%s_%d.json' % (api.properties[
'revision'], ts))
144 skiaperf_args.extend([
145 '--outfile', json_path
148 skiaperf_args.append(
'--key')
149 for k
in sorted(api.vars.builder_cfg.keys()):
150 if not k
in [
'configuration',
'role',
'is_trybot']:
151 skiaperf_args.extend([k, api.vars.builder_cfg[k]])
153 api.run(api.step,
'Parse skpbench output into Perf json',
154 cmd=[
'python3', skpbench_dir.join(
'skiaperf.py')] + skiaperf_args)
187 for builder
in TEST_BUILDERS:
190 api.properties(buildername=builder,
192 path_config=
'kitchen',
193 swarm_out_dir=
'[SWARM_OUT_DIR]') +
195 api.path[
'start_dir'].join(
'skia'),
196 api.path[
'start_dir'].join(
'skia',
'infra',
'bots',
'assets',
199 api.step_data(
'get swarming bot id',
200 stdout=api.raw_io.output(
'skia-bot-123')) +
201 api.step_data(
'get swarming task id',
202 stdout=api.raw_io.output(
'123456'))
205 test += api.platform(
'win', 64)
208 b = (
'Perf-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-'
209 'Android_Vulkan_Skpbench')
212 api.properties(buildername=b,
214 path_config=
'kitchen',
215 swarm_out_dir=
'[SWARM_OUT_DIR]',
216 dont_reduce_ops_task_splitting=
'true') +
218 api.path[
'start_dir'].join(
'skia'),
219 api.path[
'start_dir'].join(
'skia',
'infra',
'bots',
'assets',
222 api.step_data(
'get swarming bot id',
223 stdout=api.raw_io.output(
'skia-bot-123')) +
224 api.step_data(
'get swarming task id',
225 stdout=api.raw_io.output(
'123456')) +
226 api.properties(patch_storage=
'gerrit') +
227 api.properties.tryserver(
229 gerrit_project=
'skia',
230 gerrit_url=
'https://skia-review.googlesource.com/',