Bug: skia:10416
Change-Id: I1cd7bb978f0c62632547d85f4c323b230c6f4045
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299287
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This reverts commit 1caf3789f8.
Makes the image GMs detect an abandoned context just like the surface
GMs.
Bug: skia:10431
Change-Id: I56a3631a75e6b0383f96a73f461cfa314ee29afa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299379
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Also support the "N" variant of several instructions (for doing
component-wise math on matrices). With these changes, all cases
in sksl_sample_chaining work on the CPU backend, too.
Change-Id: Ie439153da452c80127e314e48fa0fa751d9f8d33
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299378
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This reverts commit 7ac9b5fdb6.
Reason for revert: abandon context bots breaking
Original change's description:
> Add async rescale and read APIs to SkImage.
>
> These function the same as the already existing
> SkSurface APIs.
>
> Bug: skia:10431
>
> Change-Id: I4f1e842d8d4b72ee27bae5f8a85e499e130d420c
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299281
> Reviewed-by: Brian Osman <brianosman@google.com>
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>
TBR=egdaniel@google.com,bsalomon@google.com,brianosman@google.com
Change-Id: I351795274245fc9f553cd210d82178f497f22660
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10431
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299376
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Bug: skia:10396
Change-Id: I32dd41f4d1a6815cace46d74442f727da848fbfd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299285
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Bug: skia:9570
Change-Id: Idd4485b5c5814501fe98fbf2115d89a80a41f5c7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299139
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Add PerfActivity to Skottie demo app, which can render
with both Lottie and Skottie players. Create bash script, which
runs 15 lottie files with both renderers, runs perfetto and
outputs performance metrics in json files.
Test: ran run_perf.sh and it outputs perf metrics on WearOS and Android
Change-Id: I6bdd86629284ac5c461cf2f5ee537e0495a72bd2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298980
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Stan Iliev <stani@google.com>
These test the *ooprddl configs
Change-Id: I1eaee1ceaef95ab37ddbefa4a15350cb726a2c02
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/296728
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Added sksl_sample_chaining, which draws identically to
fp_sample_chaining, but uses runtime effects that implement each
strategy.
Change-Id: Ib54fbe4fc6d98b4a8e91cf0e3ae6b7e19283ad37
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299076
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
The particle "cube" demo was exceeding the old limit now that the SkSL
compiler is inlining by default.
Change-Id: I9db921cb1f4304d32d4725be38dcbf7d07abcfa9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/297740
Auto-Submit: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
These function the same as the already existing
SkSurface APIs.
Bug: skia:10431
Change-Id: I4f1e842d8d4b72ee27bae5f8a85e499e130d420c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299281
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Bug: skia:10416
Change-Id: I8eefbd09ebde0b44e4a7dfafe32351f903c8a31c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298983
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This should be final batch before we can enable the *ooprddl configs on the bots.
Change-Id: I9a7a619f7bcf0d5acea0e008cefbbb146d4c5244
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298746
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Since gpuSetup can preempt draw's execution it needs to draw the error message too.
This is pulled out of the gpuSetup refactoring.
Change-Id: Iafe06d924fc1b694c59aa3100e9fbe95c4773222
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299140
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
The matrix effect and the device-space effect only change the coordinates
the child FP is evaluated at. Any optimization based on the child's color
behavior is still valid.
Change-Id: Ib92fb0c627ec18c7eac85e9d4162e47866694d4f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298065
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
6ef0387d58..c81da1c809
2020-06-26 syoussefi@chromium.org Vulkan: Avoid double-copy when generating mipmap
2020-06-25 syoussefi@chromium.org Vulkan: Remove debug symbols from internal shaders
2020-06-25 jonahr@google.com CGL: Add basic multithreading support
2020-06-25 jonahr@google.com Add basic multithreading support to GLX
2020-06-25 cclao@google.com Update style guide for reference on container object
2020-06-25 m.maiya@samsung.com Vulkan: Handle overflow in maxCombinedUniformComponents computation
2020-06-25 cnorthrop@google.com Capture/Replay: Fixups for draw surface
2020-06-25 cwallez@chromium.org Suppress EGLFeatureControlTest on Linux AMD
2020-06-25 cwallez@chromium.org Suppress MipmapTest failure on NVIDIA Shield.
2020-06-25 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Vulkan-ValidationLayers from 45c73d999ed8 to d8b1aa1c3830 (3 revisions)
2020-06-25 syoussefi@chromium.org Vulkan: Fix CPU path copy of 2D array textures
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/angle-skia-autoroll
Please CC lovisolo@google.com on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Bug: chromium:1087084,chromium:1097750
Tbr: lovisolo@google.com
Test: Test: Capture and replay sample of gfxbench
Change-Id: I8e5bcb82bdf2877abe5657c567d287fb8119cf35
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299257
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Expose a android framework-only function to reset the saved clip geometry
a device-space pixel rect (e.g. the device clip restriction). Using a
regular intersect clip operation after this call should match the
behavior of the legacy replace operation with a clip restriction.
This is a step to removing the separate device clip
restriction API and the deprecated expanding clip ops, as part of the
plan described here: https://docs.google.com/document/d/1ddIk74A1rL5Kj5kGcnInOYKVAXs3J2IsSgU5BLit0Ng/edit?usp=sharing
Bug: skia:10207
Bug: skia:10209
Change-Id: I57d3bcc7b5b257935eb2bf2099d472f2ef354d5b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298824
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This reverts commit 6dc67b1538.
Reason for revert: tripping up asan
Original change's description:
> clean up after big refactor of SkColorFilter --> ...Base
>
> Change-Id: I67ba7db1a1e4e0c8deb5299a6580a669cc08f38c
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299056
> Reviewed-by: John Stiles <johnstiles@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
TBR=reed@google.com,johnstiles@google.com
Change-Id: Id157fed27d517a33ae235307247ab57dc605eac6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298979
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Change-Id: I09b8f8bb95dac443b64d85340db12f59f8977654
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299143
Auto-Submit: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Change-Id: Iadfa14965bbe11cfea556ade5d46e264f0ace61a
Bug: skia:9935
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298752
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
fFlushState is indeed gone, and the flush state does live on the stack.
Change-Id: Idbfda4965dbc66180d42294d10fa95308fbf3838
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299196
Commit-Queue: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Auto-Submit: Adlai Holler <adlai@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
- Move child processor function generation into a separate utility
- No need to pass coords to expandFormatArgs, just use args.fSampleCoord
- Rather than a two-character escape sequence for format args (that
requires special handling of '%'), use a single character that's never
legal elsewhere. Simplifies the arg expansion logic, and removes the
need to special-case operator% in the generator.
- Change the type of GLSLFunction::fBody to avoid round-trip casting
Change-Id: Id242b86ab6ee14b8c92c81c1f062810034e71a96
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299078
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Use in GrSurface::rescale().
Second time trying this.
Change-Id: I9cd6f83e1e1a06da9297cd1f3843c8b66ab71bb5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299016
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
The existing two-argument `asFragmentProcessor` method has been
supplanted by a new three-argument API that also takes an input FP and
returns a GrFragmentProcessor::MakeResult. A helper method
`colorFilterAcceptsInputFP` has also been added; SkColorFilters
that have been updated to absorb an input FP must also override this
method to return `true`.
Calling the "wrong" `asFragmentProcessor` method is supported. If you
invoke the newer, input-FP-consuming method on an older ColorFilter,
we detect this, and RunInSeries is used to emulate this support. If you
invoke the no-input-FP method on a newer ColorFilter, nullptr is
automatically passed in for the input FP. All of these assistance
features are transitional only, and will be removed once we have
completed the migration to the new API.
This CL also migrates SkLumaColorFilter and SkColorFilter_Matrix to the
new API to exercise the new functionality.
Change-Id: I49f9d962c8c0003a5e27a9675150f6783d631141
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298507
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
This eases the workflow for developers who don't use git-cl to upload
changes, but it doesn't remove the dependency on git-cl for triggering
try jobs. Doing so would require using the Buildbucket API directly,
which we're not well set up to do in Python. Eventually we'll be forced
to either migrate this tool to Python 3 or rewrite in Go, and at that
point we can use the API clients we already use from Go code to remove
the dependency on Depot Tools.
Change-Id: I749007a2150cfeb2442643db6f2a01a7a56c10a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298748
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
This call will bookend gpuSetup calls. Any GM that implements onGpuSetup should also implement onGpuTeardown.
This is pulled out of the gpuSetup refactoring.
Change-Id: If55599dc26370f589c5cafd20a7ccb9019b424cc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299138
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This is pulled out of the gpuSetup refactoring in an attempt to break it into simpler bits.
Change-Id: I01e1717b7f046ad4b87a3f38ac201347a51041ff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299077
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Rename a few variables to make existing issues apparent. Also fix
potential divide by zero.
Change-Id: I071c4958f6eb2dcb79d34b4be95f57a4bbcb7b32
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298750
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Change-Id: If07ded029ddfe4c1d3cc1a6f206f9aca75fbb8bd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/295568
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Switch it to use std::string (not SkSL::String). Along these lines,
remove SkSL::String's operator SkString, and instead add an explicit
SkString constructor from std::string.
Other changes aren't strictly necessary, but I wanted to clean up some
of the other SkSL vs. Skia code barriers. VS (since 2015) has had
vsnprintf that conforms to the C99 standard, the only difference with
_vsnprintf is a different (nonstandard) return value for overflowing
calls. Remove the special-case (the only use of SKSL_BUILD_FOR_WIN).
Change-Id: I8826af10c8e78a8d935c601d00b8ae9ba0640041
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298816
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
This should be the bulk of the work. The next part is getting it to live
in a common place, and wiring up the callbacks properly.
The callback points are fPurgeMore and fMessageBusID.
Change-Id: Ibabe285ace8a0b6531572b755a6c4f7bd41b1f6c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298400
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
This removes the kMixed type of SkSL::SampleMatrix. All analysis of FP
sampling due to parent-child relationships is tracked in flags on
GrFragmentProcessor now.
The sample strategy is tracked as follows:
- An FP marks itself as using the local coordinate builtin directly (automatically done for .fp code based on reference to sk_TransformedCoords2D[0]).
- This state propagates up the parent towards the root, marking FPs as using coordinates indirectly. We stop the propagation when we hit a parent FP that explicitly samples the child because it becomes the source of the child's coordinates.
- If that parent references its local coordinates directly, that kicks off its own upwards propagation.
- Being sampled explicitly propagates down to all children, and effectively disables vertex-shader evaluation of transforms.
- A variable matrix automatically marks this flag as well, since it's essentially a shortcut to (matrix expression) * coords.
- The matrix type also propagates down, but right now that's only for whether or not there's perspective.
- This doesn't affect FS coord evaluation since each FP applies its action independently.
- But for VS-promoted transforms, the child's varying may inherit perspective (or other more general matrix types) from the parent and switch from a float2 to a float3.
- A SampleMatrix no longer tracks a base or owner, GrFragmentProcessor exposes its parent FP. An FP's sample matrix is always owned by its immediate parent.
- This means that you can have a hierarchy from root to leaf like: [uniform, none, none, uses local coords], and that leaf will have a SampleMatrix of kNone type. However, because of parent tracking, the coordinate generation can walk up to the root and detect the proper transform expression it needs to produce, and automatically de-duplicate across children.
Currently, all FP's that are explicitly sampled have a signature of (color, float2 coord). FP's that don't use local coords, or whose coords are promoted to a varying have a signature of (color).
- In this case, the shader builder either updates args.fLocalCoords to point to the varying directly, or adds a float2 local to the function body that includes the perspective divide.
GrFragmentProcessor automatically pretends it has an identity coord transform if the FP is marked as referencing the local coord builtin. This allows these FPs to still be processed as part of GrGLSLGeometryProcessor::collectTransforms, but removes the need for FP implementations to declare an identity GrCoordTransform.
- To test this theory, GrTextureEffect and GrSkSLFP no longer have coord transforms explicitly.
- Later CLs can trivially remove them from a lot of the other effects.
- The coord generation should not change because it detects in both cases that the coord transform matrices were identity.
GrGLSLGeometryProcessor's collectTransforms and emitTransformCode has been completely overhauled to recurse up an FP's parent pointers and collect the expressions that affect the result. It de-duplicates expressions between siblings, and is able to produce a single varying for the base local coord (either when there are no intervening transforms, or the root FP needs an explicit coordinate to start off with).
This also adds the fp_sample_chaining GM from Brian, with a few more configurations to fill out the cells.
Bug: skia:10396
Change-Id: I86acc0c34c9f29d6371b34370bee9a18c2acf1c1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/297868
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This reverts commit 4621428b04.
Reason for revert: It was not blocking the Chrome roll
Original change's description:
> Revert "Ignore calls to freeGpuResources on abandoned contexts"
>
> This reverts commit ebea6d0133.
>
> Reason for revert: Let's see if this is blocking the Chrome roll
>
> Original change's description:
> > Ignore calls to freeGpuResources on abandoned contexts
> >
> > GPU resources are freed during abandonment and so public calls to this
> > method should be ignored.
> >
> > Bug: skia:10421
> > Change-Id: I18eb3fbd85cc95c1f2663e109237e5e271a95604
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298346
> > Auto-Submit: Adlai Holler <adlai@google.com>
> > Commit-Queue: Robert Phillips <robertphillips@google.com>
> > Reviewed-by: Robert Phillips <robertphillips@google.com>
>
> TBR=robertphillips@google.com,adlai@google.com
>
> Change-Id: Ia49dae6d45deec8a628396fa43499f902691b1d3
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:10421
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298702
> Reviewed-by: Robert Phillips <robertphillips@google.com>
TBR=robertphillips@google.com,adlai@google.com
# Not skipping CQ checks because this is a reland.
Bug: skia:10421
Change-Id: Ifd169493bdf9d2164519948542fe5e00a63dc7b3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298996
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Adlai Holler <adlai@google.com>
Bug: skia:10207
Change-Id: Ie87d78b12874fb87697fe22856b4a83b9f28dda8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287818
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This value is used to determine if construction of the Sizes succeeded.
At some point, early returns were added to the constructor, causing
serialization code to use an uninitialized value if any of those early
returns triggered.
Bug: oss-fuzz:23697
Change-Id: I65479e30fd6fdf5d5f43dc1ea1247e18d546fa12
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298850
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This is a minor optimization for GrTessellatePathOp.cpp.
Bug: skia:10419
Change-Id: Ie9173f0827981aa254075820bee862f13a0ea333
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298902
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This should have been removed already. Everybody can just use
GrTessellationPathRenderer::kMaxResolveLevel instead.
Bug: skia:10419
Change-Id: If38e499ce6f74a7b052219c2cac2a402d3d05d8c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298901
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This is a reland of 3b6b747842
Original change's description:
> simplify freeAll
>
> Change-Id: Ie0c396ee0f92bc16933a137270fc1601faf177f5
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298403
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Herb Derby <herb@google.com>
Change-Id: I6cd3f1b4e29682b9bdf555a8046f482890dc8498
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298848
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>