There really isn't anything we are gaining from keeping these class
separate. Originally the model was copied when porting over from Ganesh,
but I believe even in Ganesh the split mostly exists because GrResource
use to be public and we friended classes in it.. Since Resource is
internal and there are no plans to friend classes, the split is not
adding much value and just adds extra coding hopes.
Bug: skia:12754
Change-Id: I2e94b459d82b9295fa8450a94c612c593337fb98
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508676
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.13.0 to 1.14.8.
<details>
<summary>Commits</summary>
<ul>
<li><a href="3d81dc3237"><code>3d81dc3</code></a> Release version 1.14.8 of the npm package.</li>
<li><a href="62e546a99c"><code>62e546a</code></a> Drop confidential headers across schemes.</li>
<li><a href="2ede36d7c6"><code>2ede36d</code></a> Release version 1.14.7 of the npm package.</li>
<li><a href="8b347cbcef"><code>8b347cb</code></a> Drop Cookie header across domains.</li>
<li><a href="6f5029ae1a"><code>6f5029a</code></a> Release version 1.14.6 of the npm package.</li>
<li><a href="af706bee57"><code>af706be</code></a> Ignore null headers.</li>
<li><a href="d01ab7a5c5"><code>d01ab7a</code></a> Release version 1.14.5 of the npm package.</li>
<li><a href="40052ea8aa"><code>40052ea</code></a> Make compatible with Node 17.</li>
<li><a href="86f7572f93"><code>86f7572</code></a> Fix: clear internal timer on request abort to avoid leakage</li>
<li><a href="2e1eaf0218"><code>2e1eaf0</code></a> Keep Authorization header on subdomain redirects.</li>
<li>Additional commits viewable in <a href="https://github.com/follow-redirects/follow-redirects/compare/v1.13.0...v1.14.8">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=follow-redirects&package-manager=npm_and_yarn&previous-version=1.13.0&new-version=1.14.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/google/skia/network/alerts).
</details>
This is an imported pull request from
https://github.com/google/skia/pull/93
GitOrigin-RevId: cd866a81a4068daa7417ff084ef9369795b57cb5
Change-Id: I6a5acd8505472d13c9e00fb7965c08632d7dffc5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508996
Reviewed-by: Ravi Mistry <rmistry@google.com>
Properly report that CoreText color glyphs are not rendered from simple
paths. This prevents sbix, COLR, and SVG fonts from switching from color
to path at large sizes.
Bug: chromium:1266022
Change-Id: Ic59f0e28a08acebe192e56c5657b2ff29d063d57
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508917
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
When blitting out of a mask with nine patch, the nine patch code may
call the blitters with a mask row bytes of zero, with the intention of
blitting the same row out of the mask into many rows of the destination.
In D32_A8_Opaque_Color_neon and blit_mask_d32_a8_black when
SK_ARM_HAS_NEON it is assumed that the maskRB >= width. If the maskRB
are less than the width, the maskRB -= width underflows, which is
defined, but the later mask += maskRB is not, as this wil be the
addition of a very large integer to the mask pointer, which is
definitely larger than the mask allocation. In practice on a twos
compliment machine with sizeof(size_t) == sizeof(void*) with a flat
address space this works out, but it is undefined behavior.
When calculating the mask adjustment instead calculate and store it as
ptrdiff_t. After ssa, this is effectively the same code but with a
signed add to the mask pointer instead of unsigned.
Discovered with dm with ASAN (with UBSAN) on arm64 Mac.
Change-Id: I4c8967730c802039e192750927e10f13282258b8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508680
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Bug: oss-fuzz:41243
Change-Id: I0297469057826f83ab35c43733ffb7d3cc5b9965
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508679
Auto-Submit: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Change-Id: Ifcd6e9ced293d51b5c75849ec4a6a9899b2a0459
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/506780
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Erik Rose <erikrose@google.com>
...since the other Debug-All-NativeFonts GPU job is on a different GPU
and CPU ISA.
Add an "i5" extraConfig option so we can distinguish between the 2
differently-CPU'd MacMini7,1s.
Change-Id: I609d5361c313a005d888ca7a847375cad78dec01
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/506778
Reviewed-by: Ben Wagner <bungeman@google.com>
...since we have so many of those machines (which were recently racked).
Change-Id: I61baa5d7b5140633d707411ab3a7a9ecc376b042
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/506777
Reviewed-by: Ben Wagner <bungeman@google.com>
First, count the number of sub runs in this Slug.
Second,the Slug is allocated as a large block with an arena at the
end of it. Calculate a hint for allocating that initial large block.
This does not do the calculation for the different sub runs. We are
doing the direct mask case first. Others can be added later.
Change-Id: I80ed206177b50d9bb0742f4d826c3372d12b6fe3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508639
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
The test case was producing a stack trace of sequential path transforms.
While each individual call would check to see if the path is too big
and return, the resulting path kept getting continually bigger as we
transformed it again and then popped the stack. This CL changes it to
skip the transform op if the returned path is already too big.
Bug: oss-fuzz:39470
Change-Id: I7f93ae0c39f19950c59fd7173da481286e7274ec
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508637
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
The GrPathUtils::quadPointCount and cubicPointCount functions take a
tolerance value. The paired generateQuad/CubicPoints functions that will
fill up-to the returned point count from those first questions actually
takes the square of the tolerance value.
This was noticed in https://fiddle.skia.org/c/7e42210ddb6675fe8729c0ba5b07daf5
as the subtle linear artifacts around the rounded corners of the stroke.
GrAAConvexTessellator was not passing in the square value, so the point
generation would early-out sooner than it should have in this example.
Instead of using 16 vertices it used 8. Passing in the square fixes the
linear artifacts when testing locally.
I did an audit of other usages of these functions and SkShadowUtils also
needed to be updated. As part of this, I switched the constants over to
constexpr. The only other user of this function, default path renderer,
did not need to be updated.
Change-Id: I5e0acb8ebc8b4209f7924ca1e1674d1759da0d3e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507926
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
I don't have serialization working yet, but I have enough of the
plumbing to sketch out an API. It seems simplistic, but notice it
requires access to the SkStrikeClient.
Change-Id: I29f046b62f20c635cee86f0666e8112ac3097f16
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507837
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Adds a new GM that draws text in an SkPicture, transformed by a
perspective matrix. When drawn directly with drawPicture() it looks
fine. When drawn calculating a scale factor manually from the matrix
and converting to an image (SkImage::MakeFromPicture + drawImageRect),
it looks nearly indistinguishable. However, when drawing using a picture
shader, the image resolution of the cached rasterization is far too low.
Originally, this is because SkPictureShader only relied on
SkMatrix::decomposeScale, which fails if there's perspective and
the picture shader's fallback is to switch to the identity scale. When
the source picture has relatively small local bounds compared to the
final destination, this results in severe sampling artifacts.
This CL switches the fallback to use SkMatrixPriv::DifferentialAreaScale,
which is what was used to compute the manual scale factor in the GM,
and is what image filters use when creating their device's coordinate
space when the canvas has perspective.
Change-Id: I856cd1277eb7cfcb43c766ff0d123ee1a667fe29
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507917
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This allows force overriding font settings embedded in the glyphRunList.
Change-Id: I49f15786ec8d35c55f769fc910e009693cfc5879
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508179
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
COLR fonts can use a magic palette index value 0xFFFF to indicate the
foreground color of the drawing context. Modify the DirectWrite port to
properly indicate when the foreground color is needed and use it.
Bug: skia:12576
Change-Id: Iaaf391eaf1b1204fe62edb48e01343bdac8aa34e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508178
Reviewed-by: Herb Derby <herb@google.com>
There is no advantage to having every SkScalerContext_DW recompute and
store fIsColorFont when this is a constant on the typeface. Have the
typeface compute the value once and store and have the scaler contexts
look it up on the typeface.
Change-Id: Ib0441e4bc078da2bb9aa0cf5a97de7fe84947ce2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508177
Reviewed-by: Herb Derby <herb@google.com>
This flag is no longer set by any users.
Bug: chromium:1266022
Change-Id: I7b0d02252f8d22aadd495ad3b987f444f39cea3c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508176
Reviewed-by: Herb Derby <herb@google.com>
Importantly, this ensures that if we take the drawImageRect fallback,
the input paint's AA setting and mask filter setting won't suddenly be
included in the rendering.
Bug: skia:12518
Change-Id: Ifea12499f49c2d8c476f6d67f42b6fd2991426e8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508537
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This reverts commit 63e7ba59ce.
Reason for revert: Angle errors
Errors:
ERROR: 0:62: 'ldexp' : no matching overloaded function found
ERROR: 0:65: 'ldexp' : no matching overloaded function found
https://logs.chromium.org/logs/skia/5911c43abda19c11/+/steps/nanobench/0/stdout
Original change's description:
> Add synonyms to GLSLGeneration for 100es and 300es.
>
> We use GLSLGeneration::k330 to mean GLSL 3.30 for desktop GLSL and also
> for ES 3.00. k110 lived a double life as ES 1.00. This was confusing, so
> several places in the code had comments like "this is the value for GLSL
> ES 3" to clarify.
>
> This CL adds new enums "k100es" and "k300es" which use the same values
> as "k110" and "k330", but make the code easier to understand at a
> glance.
>
> Change-Id: Ib4dfbd8cd7bab45b35d6ad7303ccf87c7eeca3ab
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/506898
> Auto-Submit: John Stiles <johnstiles@google.com>
> Commit-Queue: John Stiles <johnstiles@google.com>
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>
Change-Id: I7703598d4c74361da588d23f64e0697a844429ad
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508517
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Florin Malita <fmalita@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
We use GLSLGeneration::k330 to mean GLSL 3.30 for desktop GLSL and also
for ES 3.00. k110 lived a double life as ES 1.00. This was confusing, so
several places in the code had comments like "this is the value for GLSL
ES 3" to clarify.
This CL adds new enums "k100es" and "k300es" which use the same values
as "k110" and "k330", but make the code easier to understand at a
glance.
Change-Id: Ib4dfbd8cd7bab45b35d6ad7303ccf87c7eeca3ab
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/506898
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Destroying a mutex while it is held is never valid, and can be extremely
hard to debug.
Change-Id: I42ff79de7892006337f204621ff59bf84112dcd7
Bug: skia:12943
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507998
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
The SkRuntimeEffect fuzzer no longer uses the final 256 bytes of each
shader as uniform data, making this corpus obsolete.
(Fuzzer corpus change: https://github.com/google/oss-fuzz/pull/7266 )
Change-Id: I3df9213520390249f401c83c13f0bca5c7f0dde4
Bug: skia:12781
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508036
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
0a320d16fe..06edae72ba
2022-02-12 b.schade@samsung.com Vulkan: Allow duplicated block name in different shader interface
2022-02-11 cnorthrop@google.com FrameCapture: Remove destroyed contexts from share group
2022-02-11 cclao@google.com Vulkan: Fix two bugs exposed by moving mEmptyBuffer to suballocation
2022-02-11 jmadill@chromium.org Double batch timeout for sanitizer tests.
2022-02-11 lexa.knyazev@gmail.com Keep ANGLE_base_vertex_base_instance available for ES 2.0
2022-02-11 syoussefi@chromium.org Vulkan: Use VK_EXT_depth_clip_control
2022-02-11 constantine.shablya@collabora.com Add entry points for EGL_KHR_partial_update
2022-02-11 cnorthrop@google.com Traces: Add restricted_trace_perf.py script for Android
2022-02-11 lexa.knyazev@gmail.com GL: Remove avoid_dxt1_srgb_texture_format feature
2022-02-11 hckim.kim@samsung.com Rebind program on glUseProgramStages
2022-02-11 cheryl.wei@arm.com Vulkan: Add an end2end test
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 fmalita@google.com on the revert to ensure that a human
is aware of the problem.
To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
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/main/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
Tbr: fmalita@google.com
Test: Test: KHR-GLES32.core.tessellation_shader.single.max_patch_vertices
Test: Test: Mortal Kombat MEC
Change-Id: I64f41a11a83c9cadc0c4b8c02ed80c7fa0da4abc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508417
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
This reverts commit bbc4ee5e07.
Reason for revert: Not quite ready -- pref and gold regressions
Original change's description:
> Implement DashLinePathRenderer with a simple FP
>
> An SDF of the dash is implemented as a linear gradient, which is then
> converted to coverage by an inline runtime effect. Currently only
> non-perspective, non-hairline, AA butt caps are supported by the new
> FP. We can delete DashOp once the FP supports more types of strokes.
>
> Bug: skia:12872
> Change-Id: Ifb19fcc4a114aec1847de50aab7ee900f289ed33
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/505476
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Christopher Dalton <csmartdalton@google.com>
Bug: skia:12872
Change-Id: Iaec22481ecbda55b37c32f5f7e223ed43a3da071
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508097
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Previously, we used a fixed portion of the fuzzer input for uniform
data, and assumed zero children. Now we synthesize uniform and child
inputs based on the needs of the input shader. We no longer need to
reserve the last 256 bytes of each shader for uniform data; a followup
CL will remove the special corpus that this fuzzer used.
The contents of each uniform/child is not particularly important, since
we don't care what the final paint looks like. Each uniform is filled in
with increasing values in each slot, starting at zero (0, 1, 2, 3, ...).
Each child is a simple built-in shader/filter/blender.
(Fuzzer corpus change: https://github.com/google/oss-fuzz/pull/7266 )
Change-Id: Idc8bfcb17c10a470ef35fafc1789b915495e1d67
Bug: skia:12781
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507924
Reviewed-by: Arman Uguray <armansito@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
I wasn't able to find any other test which exercised child color-filters
or child blenders. (SampleWithExplicitCoord evaluates from a shader.)
Change-Id: I58ecee3beca2d3dc11ded5de0eea031e1d7c3e1e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507922
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Arman Uguray <armansito@google.com>
Commit-Queue: Arman Uguray <armansito@google.com>
This CL adds the task driver and plumbing necessary to run CI tasks that upload build statistics to https://codesize.skia.org.
For now, a single CodeSize-dm-Debian10-Clang-x86_64-Release task is defined, which as the name suggests:
- Depends on Build-Debian10-Clang-x86_64-Release.
- Takes the "dm" binary built by the aforementioned job.
- Runs Bloaty against said binary.
- Uploads the Bloaty output, along with a JSON file with metadata, to the GCS bucket where https://codesize.skia.org gets its data from.
If one wishes to upload codesize statistics for another binary, the steps are as follows:
- Identify the target binary, for example "fm".
- Identify a compile task that builds said binary with the desired settings, for example "Build-Debian10-Clang-x86_64-Debug".
- Add a new job in //infra/bots/jobs.json named "CodeSize-<binary>-<compile task>", where <compile task> is the name of the compile task without the "Build-" prefix, for example "CodeSize-fm-Debian10-Clang-x86_64-Debug".
- Run "make train" from the //infra/bots directory.
Eventually the codesize.skia.org webserver will automatically pick up the output of any such CodeSize-* task and show it in the UI, with no additional steps needed.
One caveat is that the binary file name, and therefore the "<binary>" part of the task name, cannot contain dashes. This is due to how //infra/bots/gen_tasks_logic.go works. See comments in said Go file for ideas on how to work around this if we ever need to.
Bug: skia:12151
Change-Id: If406944ca7660c4dd15c8e6b8f34e48c65cbbe2f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/502788
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Leandro Lovisolo <lovisolo@google.com>
An important part of serialization for slugs is maintaining the
translation of typefaceIDs from the renderer side to the GPU side.
Expose the translation code so that the slugs can use it.
Change-Id: I78ded1967759619a95fb13a1577cee3569927471
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507836
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Avoids inconsistency with SkMatrix::mapRect.
Change-Id: I5c361e447d4011b2f91881cdbd8b79388f92ef09
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507839
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>