Of note, I had to explicitly export _malloc and _free, since
we use those directly in the binding layer.
Code size change:
-20k on JS (-1k compressed)
-21k on WASM (-15k compressed)
Bug: skia:10419, skia:10794
Change-Id: Id7670b6fcbf1524ad3155a863db51eb49aa24811
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/323979
Reviewed-by: Kevin Lubick <kjlubick@google.com>
This is too slow at the moment to run on the CQ (~50 minutes), but
metzman@ is planning on caching a bulk of the work needed before
we can compile the fuzzers.
Bug: skia:10713
Change-Id: I664b8afbdb9fa57a4bce3aa479ffce3c70b684ee
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/317283
Reviewed-by: Eric Boren <borenet@google.com>
Should reduce build time and avoid running GL unit tests redundantly
on Vulkan bots.
Change-Id: I67379e6820dab2f038175a825ee1461086a2da84
Cq-Include-Trybots: luci.skia.skia.primary:Test-Android-Clang-Pixel4XL-GPU-Adreno640-arm64-Release-All-Android_Vulkan
Change-Id: I67379e6820dab2f038175a825ee1461086a2da84
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/318196
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Golden SkSL outputs are intended to eventually replace the majority of
our unit tests, since they can automatically update themselves when we
change implementation details of the compiler.
If you change the compiler output without updating the Golden files, the
CheckGeneratedFiles housekeeper will be triggered. Set
`skia_compile_processors` or `skia_compile_sksl_tests` to true in your
GN args to regenerate them.
Almost all of the tests from SkSLFPTests.cpp and SkSLGLSLTests.cpp can
be migrated into separate unit-test .fp/.sksl files in a followup CL.
hcm@ has signed off on removing the copyright boilerplate preamble from
our unit test files.
Change-Id: I9e24a944bbac8f8efd62c92481b022a0b1ecdd0b
Bug: skia:10694
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/316336
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
There was a break that was solved by adding -lGL to our link
steps. I discovered a few extra flags to aid in debugging builds
and I've left those in (they aren't too noisy IMO).
This changes the base dockerfile to use the official emscripten one.
Code size delta for full build is +5 kb
For future reference, emsdk decides which "library JS" files to
pull in using a83ba99d60/tools/building.py (L1553)
Those JS files live in src (e.g. a83ba99d60/src/library_html5_webgl.js (L222))
and define functions that the C++ code can call.
I'd like to follow-up on what -lEGL is doing.
Also, since the new image no longer has depot_tools, we need
to make docker/skia-wasm-release/Dockerfile install it.
Change-Id: I5a38e61e5080e9c4cb1e0a7e031509bcb107ff86
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/311726
Reviewed-by: Nathaniel Nifong <nifong@google.com>
Bug: skia:10539
Change-Id: I57e4ec9a26a662b9e5961dc5f39fbb8414f93de0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/308996
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
This is a reland of aed15a701a
Original change's description:
> [recipes] Verify that we actually deleted the file/dir on android
>
> Bug: skia:10539
> Change-Id: I3b51ef8c0106ac439f14a7f0ff61c8b88c7152ff
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/305957
> Reviewed-by: Ravi Mistry <rmistry@google.com>
> Reviewed-by: Kevin Lubick <kjlubick@google.com>
> Commit-Queue: Eric Boren <borenet@google.com>
Bug: skia:10539
Change-Id: I23c6f85e5d446eea3fbd61cff3db29379e0b0702
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/307794
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Ravi Mistry <rmistry@google.com>
This reverts commit aed15a701a.
Reason for revert: some devices don't have "stat"
Original change's description:
> [recipes] Verify that we actually deleted the file/dir on android
>
> Bug: skia:10539
> Change-Id: I3b51ef8c0106ac439f14a7f0ff61c8b88c7152ff
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/305957
> Reviewed-by: Ravi Mistry <rmistry@google.com>
> Reviewed-by: Kevin Lubick <kjlubick@google.com>
> Commit-Queue: Eric Boren <borenet@google.com>
TBR=borenet@google.com,rmistry@google.com,kjlubick@google.com
Change-Id: I0c03c3ec581cb52829c51891f81c59b900625c50
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10539
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/307787
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Bug: skia:10539
Change-Id: I3b51ef8c0106ac439f14a7f0ff61c8b88c7152ff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/305957
Reviewed-by: Ravi Mistry <rmistry@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Change-Id: Ibb296dde9a412bf7f9de23f08cd4db700843729f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/307557
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
I'm hoping that updating depot_tools will fix the Chromium -> Skia roll.
Change-Id: I9bb581e88e4bbffe3ad68adf794e662b76622710
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/307137
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Switch DM to --skip, and replace a few others I found
with similar skip-related names, or remove names entirely.
This leaves things with just the unavoidable,
$ git grep blacklist
gn/BUILD.gn: "-fsanitize-blacklist=$_suppressions",
tools/lottie-web-perf/lottie-web-perf.js:
browser_args.push('--ignore-gpu-blacklist');
tools/perf-canvaskit-puppeteer/perf-canvaskit-with-puppeteer.js:
browser_args.push('--ignore-gpu-blacklist');
tools/skottie-wasm-perf/skottie-wasm-perf.js:
browser_args.push('--ignore-gpu-blacklist');
Bug: 1101491
Change-Id: I9f60a18df4fd0304e702df4c68333f669a485c7d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/305760
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
The code in cts subfolder was unused in over a year, and the SKQP stuff
was also unused (and non-inclusive).
Bug: 1097221
Change-Id: Icf3d37fbe773125ab714a9b68b1b620f39857b5c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/305438
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Auto-Submit: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
13.6 requires xcode >11.4.1, which requires MacOS > 10.15.2.
Use new Mac10.15.5 build jobs for iPhone11 tasks, and on those
jobs use chromium's mac_toolchain to compile with xcode 11.4.1.
Change-Id: I988197d7ba4c97b9facfe8b93f87878eba806de8
Cq-Do-Not-Cancel-Tryjobs: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300198
Commit-Queue: Weston Tracey <westont@google.com>
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Adds new builder name schema for "Canary-*".
Bug: skia:10477
Change-Id: I0906c6e2df0af405ae3a2138b0fdeb99a9375853
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300700
Commit-Queue: Ravi Mistry <rmistry@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Bug: skia:10371
Change-Id: I3e5c8b34b7b80fff492de11ec769b33e2be3671c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/302577
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
Bug: skia: 10349
Change-Id: Id5fdd24749e836806a91b6c40c2abb18f2889e44
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298414
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Bug: skia:10370
Change-Id: Iae6515b7e78c7660b4fb9fe32fd969ba563c4517
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298741
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
This reverts commit ad9ac9ae51.
Reason for revert: we _do_ build with -march=skylake.
Original change's description:
> remove -Fast bots
>
> I tried to think of how to structure things so the normal bots
> and the -Fast bots would all get fast, small builds. There're
> a couple ways to do it, but they're all kind of fragile.
>
> Then I remembered no one we know of ships Skia like the -Fast bots;
> I just put them up out of curiosity, and as a performance baseline.
>
> So, simplest thing to do is just toss them.
>
> Change-Id: Id93994695c7612f41c9259aa328f6cf4cfe0f2a8
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/295311
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>
TBR=mtklein@google.com,bungeman@google.com
Change-Id: Ibaddb616152a9cb03e7a28978478770888d2726a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/295500
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
I tried to think of how to structure things so the normal bots
and the -Fast bots would all get fast, small builds. There're
a couple ways to do it, but they're all kind of fragile.
Then I remembered no one we know of ships Skia like the -Fast bots;
I just put them up out of curiosity, and as a performance baseline.
So, simplest thing to do is just toss them.
Change-Id: Id93994695c7612f41c9259aa328f6cf4cfe0f2a8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/295311
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Changes are largely mechanical. Non-mechanical changes to support newer
versions of emscripten are enumerated below, in format ${EMSCRIPTEN_VERSION}:
${RELEVANT_CHANGE}.
- 1.39.9: TOTAL_MEMORY has been renamed INITIAL_MEMORY.
- 1.39.12: passing of linker flags to wasm-ld has changed in a way that requires
supplying `--no-entry` to avoid error message "wasm-ld: error: entry symbol
not defined (pass --no-entry to suppress): main".
- 1.39.16: The factory function created by using `MODULARIZE` build option now
returns a Promise instead of the module instance. As such, the ready.js
workaround is removed. Note this is a breaking API change for CanvasKit,
which now uses just `then()` and not `ready().then()`.
- 1.38.33: `emsdk install` hasn't required the `-64bit` suffix on version names
since `1.38.33`, so we remove them. E.g. `emsdk install sdk-1.39.6-64bit`
simply becomes `emsdk install sdk-1.39.16`.
cf. https://github.com/emscripten-core/emscripten/blob/master/ChangeLog.md
Bug: NONE
Change-Id: Iabec4bd5ad7db2e0715ad42c2e4cf7d67b192b4c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291182
Reviewed-by: Kevin Lubick <kjlubick@google.com>
We don't have any way to test these, and we do have to
go a little out of our way to maintain these builds.
Change-Id: Ie191ee26753b719f6ee22264d63fbe4252e69bd5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290840
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
That's okay, that's really just me being pedantic anyway.
Change-Id: I45a0f6b4866daff752169304da171c223016cac8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289685
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
- add back recently removed jobs
- cp /vendor/lib64/egl/libGLES_mali.so to /data/local/tmp/libvulkan.so
- use LD_LIBRARY_PATH to prefer libs in /data/local/tmp
Bug: skia:10184
Change-Id: I52524819c60abab1334c04530a7b13f0519db463
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289636
Auto-Submit: Mike Klein <mtklein@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
PS 6 trying StartStep/EndStep/FailStep()
PS 7 better usage?
PS 8 goes back to td.Fatal* for top-level failures
Failures seem to be working ok as of PS 8,
but I am puzzled why PS 7 wasn't correct... much prefer it.
Also set max_attempts to 1... this driver will handle flakiness itself.
Change-Id: I7de6809920bfaf1d878d654c9cf5b7861a64d23f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286118
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Change-Id: I4f507e46fa086d8a8c179dbb59e15e554b57a02f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286117
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Change-Id: I2a668f207101906a7216cbcec302d3c4514af872
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285381
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Use a Debian9 container because the build scripts for Flutter Android require jdk8, which isn't available on Debian10.
-Shell script executes the GN and Ninja commands
-flutter.py executes the script in Debian9 container
--the Flutter build is particular about directory structure and uses various relative paths, so the entire swarming directory is mounted.
-Followup CL will update remove the old Flutter Android job and update the BuildStats job.
Bug: skia:9438
Change-Id: I60c62425f21214b4ae6a810a787418a8975d204e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/282616
Commit-Queue: Weston Tracey <westont@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
-Make generated build tasks for Pixelbook use Debian9...Docker and rename those in jobs.json
---Non-Pixelbook ChromeOS build tasks now use regular Debian10, as they seem to handle it fine.
---Removed 2 Build-Debian9-Clang-arm-.*-Chromebook_GLES jobs, since they are now unused.
-Added docker logic to chromebook.py, refactored to handle the differing directory structure (TODO to simplify)
---Added docker-chromeos-compile.sh to run in the container.
---util function to convert to string that can be used in the python or passed to bash (cribbed from docker.py, will consolidate in later CL)
-Prerequisite for upgrading the last 10% of the fleet to Debian10
Bug: skia:9438
Change-Id: I0727aad2d00383e568ddbeea98d56d42bcca26e5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/282678
Commit-Queue: Weston Tracey <westont@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Looks like our bots took anywhere from a 2x to 25x slowdown hit
from using this flag. Let's keep it only where we think we need
it, Test-...-ASAN_Vulkan bots.
Change-Id: Ied7c0a744fafa307f4ad0e7f82c62445b2cc1e61
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/282297
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
It is slower, but gives useful stack traces for suppressions.
Change-Id: I64e1b24951ffb87defd2201743ebb32f31b1f90f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/282159
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Control everything with gSkUseSkVMBlitter, and that via --skvm flags.
We aren't skipping sprite blitters on the bots because
they're using the #define instead of the --skvm flag.
Might as well go all-in on the runtime flag now that
we have it... no need for the custom build jobs.
Change-Id: I56e5b1a72fecfc505aee5a26de6ee58666880922
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/282124
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This is so we can cleanly move to our Debian10 build image which doesn't have a global install of gn.
Bug: skia:9438
Change-Id: Idcbc289580a35590250e2f755f80910f42020fc7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/281476
Auto-Submit: Weston Tracey <westont@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
This CL fixes a bug in the logic that checks whether there's an image mounted on the attached iOS device.
Currently this is determined by checking whether strings "ImagePresent: true" or "ImageSignature:" are present in the output of command "ideviceimagemounter --list". However, these strings do not match the command's actual output:
# No image mounted.
$ ideviceimagemounter --list
Status: Complete
# Image mounted (fake signature for illustrative purposes).
$ ideviceimagemounter --list
ImageSignature[1]:
0: Rm9yIGlsbHVzdHJhdGl2ZSBwdXJwb3NlcyBvbmx5LiBUaGlzIGlzIG5vdCBhIHJlYWwgc2lnbmF0dXJlLg==
Status: Complete
As is, the recipe fails to detect that an image is already mounted on the attached iOS device. The recipe then tries to mount one, which makes the "ideviceimagemounter" command fail with "Error: ImageAlreadyMounted". The following example shows how to reproduce this error:
# Initially no image is mounted.
$ ideviceimagemounter --list
Status: Complete
# Mount an image.
$ ideviceimagemounter DeveloperDiskImage.dmg DeveloperDiskImage.dmg.signature
Uploading DeveloperDiskImage.dmg
done.
Mounting...
Done.
Status: Complete
# Verify that the image is mounted.
$ ideviceimagemounter --list
ImageSignature[1]:
0: Rm9yIGlsbHVzdHJhdGl2ZSBwdXJwb3NlcyBvbmx5LiBUaGlzIGlzIG5vdCBhIHJlYWwgc2lnbmF0dXJlLg==
Status: Complete
# Try to mount an image when one is already mounted.
$ ideviceimagemounter DeveloperDiskImage.dmg DeveloperDiskImage.dmg.signature
Uploading DeveloperDiskImage.dmg
done.
Mounting...
Error: ImageMountFailed
Checking for presence of string "ImageSignature" in the ideviceimagemounter command's output seems to solve the problem.
In the process I also discovered that self._run() requires keyword argument stdout=self.m.raw_io.output() in order to return the command's output. As is, the returned stdout is always blank.
Note to reviewer:
- Patchsets 1 to 11 iterate on a potential fix.
- Patchset 12 reproduces the bug. See the failing tryjob.
- Patchset 13 tries the fix. See the successful tryjob.
- Patchsets 14+ clean up the CL.
Change-Id: I3ca1cdbf4bfa450c3e87d6d87b5f615f28c4aaba
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/281058
Reviewed-by: Weston Tracey <westont@google.com>
Commit-Queue: Leandro Lovisolo <lovisolo@google.com>
Updated to use sentinel GL context even when GL backend is not built.
This reverts commit 1171d314ef.
Change-Id: Ia94bbe4865ddd4e898446c13886877c539f0eb0b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/277976
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
We haven't tested this in a while. Use the Metal backend instead.
Change-Id: Ic06bf4faff99950bd24e41bdea03962db99cfeee
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/277612
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
This reverts commit 9d4b788807.
Copyright issue has been fixed in
https://skia-review.googlesource.com/c/skia/+/275998.
Original description:
Bug: skia:9756
In CanvasKit, a large part of the binary is for encoding. Clients
would be happier with a smaller binary and no webp/jpeg encoding. Make
this an option by splitting up the GN arguments.
Split SK_HAS_WEBP_LIBRARY into SK_CODEC_DECODES_WEBP (to match the
existing SK_CODEC_DECODES_RAW) and SK_ENCODE_WEBP. Same for JPEG and
PNG.
Update CanvasKit compile script to disable webp and jpeg encoding.
Update debugger compile script to disable all encoding.
Change IsPng signature to match other SkCodecs.
TBR=djsollen@google.com
Change-Id: Ic847bae0154e0a2922100b3f2ee14a077ee5635a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/276007
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
This reverts commit 94aaf7cdf5.
Reason for revert: you know what I already typed the reason stop making rules that people have to follow, robots.
Original change's description:
> Split building encoding from decoding
>
> Bug: skia:9756
>
> In CanvasKit, a large part of the binary is for encoding. Clients
> would be happier with a smaller binary and no webp/jpeg encoding. Make
> this an option by splitting up the GN arguments.
>
> Split SK_HAS_WEBP_LIBRARY into SK_CODEC_DECODES_WEBP (to match the
> existing SK_CODEC_DECODES_RAW) and SK_ENCODE_WEBP. Same for JPEG and
> PNG.
>
> Update CanvasKit compile script to disable webp and jpeg encoding.
> Update debugger compile script to disable all encoding.
>
> Change IsPng signature to match other SkCodecs.
>
> Change-Id: Iec8466ee1b76bc3d1e377c24201068b776cd7718
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/273768
> Commit-Queue: Leon Scroggins <scroggo@google.com>
> Reviewed-by: Derek Sollenberger <djsollen@google.com>
> Reviewed-by: Kevin Lubick <kjlubick@google.com>
> Reviewed-by: Nathaniel Nifong <nifong@google.com>
TBR=djsollen@google.com,scroggo@google.com,kjlubick@google.com,nifong@google.com
Change-Id: I4fc2ea916743fda7e7d0d668b59e52052e880104
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:9756
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/275710
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Change-Id: Id37954715f61a264b3b5fe0f1ed36bd31835ff86
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/275634
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Eric Boren <borenet@google.com>