4af42fcca1
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> |
||
---|---|---|
.. | ||
android_compile.expected | ||
calmbench.expected | ||
check_generated_files.expected | ||
compile.expected | ||
compute_buildstats.expected | ||
compute_test.expected | ||
g3_compile.expected | ||
housekeeper.expected | ||
infra.expected | ||
perf_canvaskit.expected | ||
perf_pathkit.expected | ||
perf_skottietrace.expected | ||
perf_skottiewasm_lottieweb.expected | ||
perf.expected | ||
recreate_skps.expected | ||
skpbench.expected | ||
skqp_test.expected | ||
sync_and_compile.expected | ||
test_canvaskit.expected | ||
test_lottie_web.expected | ||
test_pathkit.expected | ||
test_skqp_emulator.expected | ||
test.expected | ||
upload_buildstats_results.expected | ||
upload_calmbench_results.expected | ||
upload_dm_results.expected | ||
upload_nano_results.expected | ||
upload_skiaserve.expected | ||
android_compile.py | ||
calmbench.py | ||
check_generated_files.py | ||
compile.py | ||
compute_buildstats.py | ||
compute_test.py | ||
g3_compile.py | ||
housekeeper.py | ||
infra.py | ||
perf_canvaskit.py | ||
perf_pathkit.py | ||
perf_skottietrace.py | ||
perf_skottiewasm_lottieweb.py | ||
perf.py | ||
README.md | ||
recreate_skps.py | ||
skpbench.py | ||
skqp_test.py | ||
sync_and_compile.py | ||
test_canvaskit.py | ||
test_lottie_web.py | ||
test_pathkit.py | ||
test_skqp_emulator.py | ||
test.py | ||
upload_buildstats_results.py | ||
upload_calmbench_results.py | ||
upload_dm_results.py | ||
upload_nano_results.py | ||
upload_skiaserve.py |
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.