skia2/infra/bots/recipes
Brian Osman 4af42fcca1 Fix precompiling shaders on GLES / Android
We need to specify attribute locations and (sometimes) frag shader
output locations. Desktop GL worked fine without this, but Flutter
ran into this problem, and a Pixel 2 reproduced the issue.

Note that both APIs (BindFragDataLocation and BindAttribLocation)
don't take effect until the next time the program is linked, so
we have to relink the program after applying those changes.

I was afraid that re-linking would eliminate the perf benefits of
pre-compiling the shaders, but (at least on Pixel 2) that's not
the case. I traced the life of a single program, and the initial
link (during precompile) was 4.4 ms. The re-link took 0.23 ms.

Change-Id: Iadb3b425a8cf9f6a52e015c2e37f875c0fd73d6d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/241758
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-09-16 17:13:23 +00:00
..
android_compile.expected Roll recipe dependencies (nontrivial). 2019-06-21 12:03:54 +00:00
calmbench.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
check_generated_files.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
compile.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
compute_buildstats.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
compute_test.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
g3_compile.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
housekeeper.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
infra.expected [infra] Make infra tests idempotent 2019-07-09 19:04:47 +00:00
perf_canvaskit.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
perf_pathkit.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
perf_skottietrace.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
perf_skottiewasm_lottieweb.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
perf.expected Omit path_text benches on Pixel3a 2019-09-12 02:51:08 +00:00
recreate_skps.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
skpbench.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
skqp_test.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
sync_and_compile.expected Update to XCode 10.3 2019-09-11 17:00:13 +00:00
test_canvaskit.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
test_lottie_web.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
test_pathkit.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
test_skqp_emulator.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
test.expected Fix precompiling shaders on GLES / Android 2019-09-16 17:13:23 +00:00
upload_buildstats_results.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
upload_calmbench_results.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
upload_dm_results.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
upload_nano_results.expected Roll recipe dependencies (nontrivial). 2019-09-10 11:50:47 +00:00
upload_skiaserve.expected Roll recipe dependencies (nontrivial). 2019-06-03 11:25:16 +00:00
android_compile.py [Android compile bot] Add links to force sync the checkout 2019-05-09 13:00:07 +00:00
calmbench.py Reland [recipes] Isolate build outputs with no subdirs 2018-06-01 15:18:46 +00:00
check_generated_files.py rewrite *.gn and #includes on CheckGeneratedFiles bot 2019-07-25 20:48:33 +00:00
compile.py [infra] Move SKQP recipe test to correct recipe 2019-07-19 18:48:31 +00:00
compute_buildstats.py Build code size treemaps for skottie_tool 2019-02-12 13:54:00 +00:00
compute_test.py Add OpenCL test job that runs hello-opencl. 2018-06-29 13:25:17 +00:00
g3_compile.py Remove use of deprecated tempfile module in skia. 2019-09-07 01:43:49 +00:00
housekeeper.py Remove old code size analysis 2018-10-10 14:25:17 +00:00
infra.py [infra] Make infra tests idempotent 2019-07-09 19:04:47 +00:00
perf_canvaskit.py [pathkit/canvaskit] Address race when uploading results 2019-03-12 21:45:04 +00:00
perf_pathkit.py [pathkit/canvaskit] Address race when uploading results 2019-03-12 21:45:04 +00:00
perf_skottietrace.py Add new SkottieTracing GPU bot to match SkottieWASM and LottieWeb 2019-06-22 12:28:38 +00:00
perf_skottiewasm_lottieweb.py Remove use of deprecated tempfile module in skia. 2019-09-07 01:43:49 +00:00
perf.py Omit path_text benches on Pixel3a 2019-09-12 02:51:08 +00:00
README.md Re-re-land "added GrSkSLFP and converted DitherEffect to use it" 2018-07-31 15:18:03 +00:00
recreate_skps.py Have the RecreateSKPs bot upload to partner bucket 2019-02-06 18:35:12 +00:00
skpbench.py Add a kind of asset for MSKPs so the skpbench bot can read them. 2019-08-01 20:29:52 +00:00
skqp_test.py [recipes] Rename some modules and files 2018-05-24 14:06:55 +00:00
sync_and_compile.py [infra] Move SKQP recipe test to correct recipe 2019-07-19 18:48:31 +00:00
test_canvaskit.py [pathkit/canvaskit] Address race when uploading results 2019-03-12 21:45:04 +00:00
test_lottie_web.py Update android-skqp Docker image to accept licenses 2019-01-22 23:34:58 +00:00
test_pathkit.py [pathkit/canvaskit] Address race when uploading results 2019-03-12 21:45:04 +00:00
test_skqp_emulator.py Add Build and Test jobs for SKQP using docker. 2018-10-08 19:17:25 +00:00
test.py Fix precompiling shaders on GLES / Android 2019-09-16 17:13:23 +00:00
upload_buildstats_results.py Use right bucket for buildstats 2018-10-08 19:23:56 +00:00
upload_calmbench_results.py [recipes] Rename some modules and files 2018-05-24 14:06:55 +00:00
upload_dm_results.py Fix upload_dm_results 2018-08-20 16:44:24 +00:00
upload_nano_results.py Add BuildStats pipeline for PathKit binaries 2018-10-08 18:15:32 +00:00
upload_skiaserve.py Reland [recipes] Isolate build outputs with no subdirs 2018-06-01 15:18:46 +00:00

Skia Recipes

These are the top-level scripts which run inside of Swarming tasks to perform all of Skia's automated testing.

To run a recipe locally:

$ python infra/bots/recipes.py run --workdir=/tmp/<workdir> <recipe name without .py> key1=value1 key2=value2 ...

Each recipe may have its own required properties which must be entered as key/value pairs in the command.

When you change a recipe, you generally need to re-train the simulation test:

$ python infra/bots/recipes.py test train

Or:

    $ cd infra/bots; make train

The test generates expectations files for the tests contained within each recipe which illustrate which steps would run, given a particular set of inputs. Pay attention to the diffs in these files when making changes to ensure that your change has the intended effect.