Commit Graph

19524 Commits

Author SHA1 Message Date
Brian Salomon
9a544bcab8 Stop using clear-as-draw workaround on newer Intel drivers on macOS
Bug= chromium:777849

Change-Id: I6276cbbf4bf6403ff9bf613d1fb31e56785a035e
Reviewed-on: https://skia-review.googlesource.com/118625
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-04-04 20:54:48 +00:00
Yuqian Li
4b99bbb076 Ensure that pointers/arrays are valid until flush in threaded backend
Bug: skia:7672 skia:7414
Change-Id: Ia000781401fe7b1df8040abb97692e6ca35b312f
Reviewed-on: https://skia-review.googlesource.com/118626
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
2018-04-04 20:46:59 +00:00
Robert Phillips
c5509955b9 Add GrBackendTexture accessor to SkImage (take 2)
This makes accessing the GPU resource behind an SkImage a lot more typesafe. Additionally, the GrBackendObject is being deprecated so this is the path forward.

I split the controversial stuff off into https://skia-review.googlesource.com/c/skia/+/118575 (Add SkImage::setLayout call).

Change-Id: I297e72770e8fb360fac7c7cd74f050ae759ae133
Reviewed-on: https://skia-review.googlesource.com/118571
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2018-04-04 20:34:28 +00:00
Mike Reed
1fda0247a7 move SkIPoint16 to private header
Bug: skia:
Change-Id: Ib8045ac7cc24a44c4b70e73153c6faf098730b63
Reviewed-on: https://skia-review.googlesource.com/118721
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Cary Clark <caryclark@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2018-04-04 20:16:58 +00:00
Florin Malita
325ea327ff Fix SkLocalMatrixShader nesting semantics
Inherited/outer local matrices are supposed to compose to the right of
(preconcat) other/nested local matrices.

BUG=skia:7781

Change-Id: Icd3c24f226845427be849a8be3d78293aef176b3
Reviewed-on: https://skia-review.googlesource.com/118344
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
2018-04-04 18:54:28 +00:00
Greg Daniel
1efe322473 Make sure we set the origin when initDescForDstCopy fails
Bug: skia:
Change-Id: Ic46a8086c530857d57dd713363482b50b48b5a4f
Reviewed-on: https://skia-review.googlesource.com/118682
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-04-04 18:39:18 +00:00
Florin Malita
af2769d00b Banish SkShaderBase::isRasterPipelineOnly()
Keeping related heuristics in sync with actual shader capabilities is somewhat tricky,
and overall fragile.

So how about this: instead of an explicit opt-in mechanism, try to instantiate a legacy
shader context and fall back to raster pipeline on failure (null Context => implicit
opt-in for raster pipeline).  Shaders can still choose not to draw by returning both a
null Context and failing appendStages().

BUG=skia:7772
Change-Id: I2e76f51af7064853a6cb851b4c30c82eba3ee828
Reviewed-on: https://skia-review.googlesource.com/118383
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
2018-04-04 18:13:48 +00:00
Yuqian Li
bf74a46081 Fix drawBitmapRect in the threaded backend
Previously, the threaded backend failed to drawBitmapRect (see,
e.g., GM_bitmaprect_s) because it did not intercept the call to
SkDraw::drawBitmap.

Bug: skia:
Change-Id: I7eeaae98e63d726b2b566c4d15f7ea939f59360e
Reviewed-on: https://skia-review.googlesource.com/115983
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
2018-04-04 17:42:28 +00:00
Derek Sollenberger
e1c60d660e Tag the unique keys of lazy images.
Change-Id: I54175db2aae43d28fd7aff224d57bf6ed9093b1e
Reviewed-on: https://skia-review.googlesource.com/118588
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Derek Sollenberger <djsollen@google.com>
2018-04-04 16:20:48 +00:00
Robert Phillips
c1267c6051 Add SkSurfaceCharacterization operator== && !=
TBR=bsalomon@google.com
Change-Id: Ic58849dcb3be1f00431f897af328f6f3c3f00d75
Reviewed-on: https://skia-review.googlesource.com/118340
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-04-04 15:41:48 +00:00
Brian Salomon
dc09213b17 Revert "Revert "Make SkSL GLSL generator declare sk_FragColor inout when EXT fb fetch is used.""
This reverts commit d40133092a.

Bug: skia:
Change-Id: I236505da047d5ad29e4952d8955eb7aa1bfb870b
Reviewed-on: https://skia-review.googlesource.com/118621
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2018-04-04 14:45:58 +00:00
Greg Daniel
75a130258d Don't use the inner radius when not stroking in DIEllipse
Bug: skia:7769
Change-Id: Ida462aec8ad832f01aec07602d8be5735a9b0ca2
Reviewed-on: https://skia-review.googlesource.com/118582
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2018-04-04 14:05:01 +00:00
Brian Salomon
d40133092a Revert "Make SkSL GLSL generator declare sk_FragColor inout when EXT fb fetch is used."
This reverts commit 7e1dd2017a.

Reason for revert: breaking fp compilation

Original change's description:
> Make SkSL GLSL generator declare sk_FragColor inout when EXT fb fetch is used.
> 
> Change-Id: I5e6e3263bb49febc757cd63d5d6c1518f174322d
> Reviewed-on: https://skia-review.googlesource.com/118420
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

TBR=egdaniel@google.com,bsalomon@google.com

Change-Id: I2aedfaff93150ba8cd1ed9fed22f3cfdd509695a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/118600
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-04-04 13:58:42 +00:00
Brian Salomon
7e1dd2017a Make SkSL GLSL generator declare sk_FragColor inout when EXT fb fetch is used.
Change-Id: I5e6e3263bb49febc757cd63d5d6c1518f174322d
Reviewed-on: https://skia-review.googlesource.com/118420
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-04-04 13:42:51 +00:00
Greg Daniel
c412b59582 Handle perspective scales in GrPathUtil scaleToleranceToSrc
Bug: skia:7769
Change-Id: Ibf52ebfe5bb79afd0358278fbd284084a10b076b
Reviewed-on: https://skia-review.googlesource.com/118180
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2018-04-04 13:39:01 +00:00
Robert Phillips
be77a02a67 Hide GrPixelConfig in SkSurfaceCharacterization
TBR=bsalomon@google.com
Change-Id: Ifc38d0ca2b18128d27c187f789461fea62d1edae
Reviewed-on: https://skia-review.googlesource.com/117440
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2018-04-04 13:32:01 +00:00
Khushal
42f8bc40fd Add API for SkTextBlob serialization into caller's memory.
R=reed@google.com

Change-Id: Iaeb67504aabf0dc036e81fa23c1a3c949b72b2b9
Reviewed-on: https://skia-review.googlesource.com/114262
Commit-Queue: Khusal Sagar <khushalsagar@chromium.org>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2018-04-04 01:25:11 +00:00
Herb Derby
46117c83d2 Clean up buffering and serializatoin.
BUG=skia:7515

Change-Id: Id580e8f464c6263fa32a5d6347f505b00bba29d7
Reviewed-on: https://skia-review.googlesource.com/118460
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-04-04 00:53:01 +00:00
Greg Daniel
62473ad906 Check if fan point is finite in GrAAConvexPathRenderer.
Bug: skia:7775
Change-Id: I47818ebbaa4f325233832823df5982f8ca3a7efd
Reviewed-on: https://skia-review.googlesource.com/118341
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2018-04-03 20:13:50 +00:00
Greg Daniel
8b09b96266 Drop draw in GrAAConvextPathRenderer if calculation of center of mass ends up in NaN
Bug: skia:7770
Change-Id: If27494f5df0b5d5ba037e1d21c06bff98019d2b0
Reviewed-on: https://skia-review.googlesource.com/118300
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2018-04-03 19:38:01 +00:00
Ben Wagner
428ab73b21 Hardcode a font for lcd testing on MacOS.
Currently we try to get Helvetica or the default font and draw a pipe
and look to see if there is any non-gray. We should bring our own font
for this check, since sometimes the system font may not be accessible.

BUG=chromium:822218

Change-Id: I9c4988b0acbb5a59445a0ec7f3fade73678b973e
Reviewed-on: https://skia-review.googlesource.com/117862
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Ben Wagner <bungeman@google.com>
2018-04-03 19:27:00 +00:00
Greg Daniel
4eda8d9fb3 Check for divide by zero in fill_in_2D_gaussian_kernel
Same change as the 1D one, but now with more dimensions!!

Bug: skia:7769
Change-Id: I152031780ab71ba106d4fa65d52960ec4358274e
Reviewed-on: https://skia-review.googlesource.com/118262
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2018-04-03 18:51:40 +00:00
Greg Daniel
3aecc305e1 Check for divide by zero in fill_in_1D_gaussian_kernel
Bug: skia:7769
Change-Id: I56a67f8a6f19437359ad6e7bf2d57f6e9a7992c9
Reviewed-on: https://skia-review.googlesource.com/118240
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2018-04-03 18:25:51 +00:00
Cary Clark
8d8a5d9543 fix pathop fuzzes
throw an error instead of asserting for one

for the other, only assert if the values are trusted. That's not ideal,
but I don't see an easy way to insert a fail safety hatch in this code
and if the assert is ignored, no further assert is triggered.

verified that extended tests run without problem on debug and release

R=kjlubick@google.com
Bug: skia:
Change-Id: I5544b6cbef97479854dbecb05baae6b2c41cabc9
Reviewed-on: https://skia-review.googlesource.com/117725
Commit-Queue: Cary Clark <caryclark@skia.org>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2018-04-03 17:38:00 +00:00
Greg Daniel
ba31640427 Allow for divide by zero in miter calculation in GrAAConvexTessellator
Bug: skia:7769, oss-fuzz:7302
Change-Id: Id5c70a3be5525ed6b414d7e03d7e94183835f8e3
Reviewed-on: https://skia-review.googlesource.com/118167
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-04-03 16:05:20 +00:00
Stephen White
ea49523b5f GrTessellator: fix for points that become infinite on stroking.
stroke -> Inf -> NaN -> assert.

BUG=skia:7775

Change-Id: I086883bce90d1d473cff87f67e954718ea3181f6
Reviewed-on: https://skia-review.googlesource.com/118145
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2018-04-03 16:04:50 +00:00
Kevin Lubick
b88045bdc2 Catch infinite numbers in computeMatrices
Bug: skia:7433
Change-Id: I54ec095a2e6a3596f99e3659c947c6489a68ff47
Reviewed-on: https://skia-review.googlesource.com/118164
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2018-04-03 15:27:00 +00:00
Brian Salomon
08c39fcbcb Increase precision in GrSRGBEffect
Allows ApplyGammaTest to pass on Bifrost, which uses fp16 for mediump.

Change-Id: Icd04001939a2cb7e1789132ab035ca498c92112a
Reviewed-on: https://skia-review.googlesource.com/118162
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-04-03 15:20:50 +00:00
Jim Van Verth
4db18edb95 Add SkOffsetSimplePolygon.
Performs inset and outset operations on simple polygons and returns
a simple polygon, if possible.

Bug: skia:
Change-Id: I6d468174ad70b5279b736c532e19cbb84ff9f955
Reviewed-on: https://skia-review.googlesource.com/116483
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2018-04-03 14:37:50 +00:00
Robert Phillips
1110da15d4 Fix non-GPU release bots
TBR=bsalomon@google.com
Change-Id: I8b0a6ff0ca7674c94bfbc739d313cfac5a16596f
Reviewed-on: https://skia-review.googlesource.com/118100
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2018-04-03 12:49:22 +00:00
Brian Salomon
fd88fe4d57 Speculative fix for crbug.com/823920
Bug: chromium:823920
Change-Id: I679cdf848280a26b8e353b51750823f497e50a67
Reviewed-on: https://skia-review.googlesource.com/117861
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2018-04-03 11:34:12 +00:00
Herb Derby
1a291b354f Cleanup Ops - remove extra bytes sent and received
BUG=skia:7515

Change-Id: I0a1da98cbf20e39fec9f318e7aa9e253bd3878b4
Reviewed-on: https://skia-review.googlesource.com/117864
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-04-02 21:18:22 +00:00
Yuqian Li
5e6b67c720 Simplify SkDrawTiler; check emtpy pixmap and overflow
Not sure whether this will fix b/77249109, but we can have a try.

Bug: b/77249109
Change-Id: Ia569cb130758dd0a63bfe2ecb29e61c75716c955
Reviewed-on: https://skia-review.googlesource.com/117460
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Cary Clark <caryclark@google.com>
2018-04-02 21:04:52 +00:00
Ben Wagner
2de1eda3d2 SkScalerContext::getMetrics to not request metrics it will ignore.
Before this change SkScalerContext::getMetrics always calls
generateMetrics to force the subclass to create full metrics. However,
if the SkScalerContext is going to draw from outlines then there is no
reason to do so since it is immediately going to overwrite those metrics
by computing its own from the path. This also puts off other decisions
being made based on the glyph metrics until after the metrics are fully
computed.

The logic in SkScalerContext::getImage is updated to be similar to the
logic in the new SkScalerContext::getMetrics.

Change-Id: I1798c9244277fab85595fb39fc3a85ef7eb33620
Reviewed-on: https://skia-review.googlesource.com/117085
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2018-04-02 20:54:52 +00:00
Mike Klein
22c1f373b7 Revert "implement SkTDArray with std::vector"
This reverts commit 80e1d56e19.

Reason for revert: SkRTree.cpp:57 asserting, probably this?

Original change's description:
> implement SkTDArray with std::vector
> 
> It's always worth seeing if we can get away with replacing custom data
> structures with ones from the standard library.  Our array-like types
> are all good candidates to replace with std::vector, and it's especially
> easy to start with SkTDArray.  Unlike the others, it has no preallocated
> S-variant, which is tricky to make work with std::vector.
> 
> SkTDArray also has known integer overflow bugs, leading to out of range
> writes.  It'd be _very_ nice to ditch it for a better standard vector.
> 
> I removed a bunch of unused or little-used methods, and updated a couple
> call sites that used methods in unusual or dangerous ways.
> 
> I've had to tweak GrAAConvexTessellator and SkBaseShadowTessellator just
> a touch to work within the constraints of an std::vector impl.  It's not
> intended to be legal to write to the reserved-but-not-counted elements
> of an SkTDArray, but you can get away with it in our old implementation.
> This version now uses setCount() to actually reserve and count them, and
> should have the same performance and use the same amount of memory.
> 
> The PathMeasure_explosion GM I added recently to reproduce this bug now
> draws without triggering undefined behavior or ASAN errors, provided you
> have ~40GB of RAM.
> 
> Bug: skia:7674
> 
> Change-Id: I4eacae18a976cd4a6d218102f8ca5d973d4d7d0e
> Reviewed-on: https://skia-review.googlesource.com/115982
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Mike Klein <mtklein@chromium.org>

TBR=mtklein@chromium.org,bungeman@google.com,brianosman@google.com

Change-Id: Icffd9f22fe89746a970ff598e1a05c774960bc0e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:7674
Reviewed-on: https://skia-review.googlesource.com/117901
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-04-02 20:37:52 +00:00
Hal Canary
8031b32842 SkPDF/SkTypefaceMetrics: Set PostScript Name in Directwrite backend.
Also, clean up Freetype and Mac impls.

Also, sk_get_locale_string returns an error value.

Change-Id: If8dfc101e28a1d782679174fe6f5a28812563af5
Reviewed-on: https://skia-review.googlesource.com/117229
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2018-04-02 17:51:12 +00:00
Hal Canary
e9e19dd4a1 SkPDF/Clusterator: a second test
Change-Id: I805672d88f1c913acba58feca3ad950f5d82884d
Reviewed-on: https://skia-review.googlesource.com/117639
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2018-04-02 17:00:25 +00:00
Chris Dalton
7c7ff031a5 ccpr: Normalize homogeneous coords with frexp/ldexp
Hopefully increases cubic accuracy by manipulating exponents
instead of calling normalize().

Bug: skia:
Change-Id: I8d3596e858a2fbb6650c158753133c5a2e01e166
Reviewed-on: https://skia-review.googlesource.com/117009
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-04-02 16:05:05 +00:00
Robert Phillips
64ecdce4ad Turn on rendertarget sorting
Change-Id: I1315d0864ee0963569c23f70c1185488b5216f99
Reviewed-on: https://skia-review.googlesource.com/117686
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-04-02 15:42:30 +00:00
Mike Klein
80e1d56e19 implement SkTDArray with std::vector
It's always worth seeing if we can get away with replacing custom data
structures with ones from the standard library.  Our array-like types
are all good candidates to replace with std::vector, and it's especially
easy to start with SkTDArray.  Unlike the others, it has no preallocated
S-variant, which is tricky to make work with std::vector.

SkTDArray also has known integer overflow bugs, leading to out of range
writes.  It'd be _very_ nice to ditch it for a better standard vector.

I removed a bunch of unused or little-used methods, and updated a couple
call sites that used methods in unusual or dangerous ways.

I've had to tweak GrAAConvexTessellator and SkBaseShadowTessellator just
a touch to work within the constraints of an std::vector impl.  It's not
intended to be legal to write to the reserved-but-not-counted elements
of an SkTDArray, but you can get away with it in our old implementation.
This version now uses setCount() to actually reserve and count them, and
should have the same performance and use the same amount of memory.

The PathMeasure_explosion GM I added recently to reproduce this bug now
draws without triggering undefined behavior or ASAN errors, provided you
have ~40GB of RAM.

Bug: skia:7674

Change-Id: I4eacae18a976cd4a6d218102f8ca5d973d4d7d0e
Reviewed-on: https://skia-review.googlesource.com/115982
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-04-02 15:38:05 +00:00
Greg Daniel
e037d7611f Remove specVersion check on vk extensions.
Unlike the specVersion parameter on the layers, specVersion on extensions
does not mean what vulkan spec version the extensions work with but just
what version of the extension it is. Thus we don't want to compare it
to the version of the spec we are making.

Bug: skia:
Change-Id: If47c249b4cca0b9a10bfb3b8ce88db6bda1e12ed
Reviewed-on: https://skia-review.googlesource.com/117634
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-04-02 15:37:25 +00:00
Cary Clark
9b8b0cee51 fix SkRRect fuzzer assert
fuzzer bug triggers an assert in SkRRect::isValid because
on radius is zero and the other, while small, is not.

The radii are normally both set to zero if one is zero
in SkRRect::setRectRadii. However, subsequently scaleRadii
may set one to zero when normalizing the pair.

Move the clamping code out of setRectRadii so it can be
called from scaleRadii as well.

R=reed@google.com
Bug: skia:
Change-Id: Ib9a86da7212567b2f4b83d99a41cf9ba2c30e9b9
Reviewed-on: https://skia-review.googlesource.com/115701
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Cary Clark <caryclark@google.com>
2018-04-02 15:15:25 +00:00
Kevin Lubick
01a1cf9260 More nans causing infinite recursion in GrPathUtils::convertCubicToQuads
Follow up to https://skia-review.googlesource.com/c/skia/+/87302

Bug: skia:
Change-Id: Ic2efef2eb44dbb6a1ffdd1618ea4833a5a5afc4b
Reviewed-on: https://skia-review.googlesource.com/117630
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2018-04-02 14:18:34 +00:00
Ethan Nicholas
c6a19f1d04 fix for frexp dataflow analysis
Bug: skia:
Change-Id: Ic20bedadfbf37fd78ce03872ece2d9552307cfcd
Reviewed-on: https://skia-review.googlesource.com/117243
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Chris Dalton <csmartdalton@google.com>
2018-04-01 21:29:08 +00:00
Robert Phillips
6b6fcc7862 Add SkSurface factory that takes an SkSurfaceCharacterization
TBR=bsalomon@google.com
Change-Id: Ie38123dc7c35005bfe8500bf4a16e0d16bbf36bd
Reviewed-on: https://skia-review.googlesource.com/117236
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-03-30 19:12:26 +00:00
Chris Dalton
c534808ba2 Revert "Delete GPU alpha clip masks"
This reverts commit a466228a61.

Reason for revert: Turned up a vulkan driver bug

Original change's description:
> Delete GPU alpha clip masks
> 
> The cost of switching render targets on each draw to make a custom
> clip is enormous. There are virtually no circumstances where this will
> outperform our cached, multi-threaded software mask generator. The
> tried-and-true approach to clipping on-GPU is with analytic FPs. And
> now that we support CCPR clip FPs, there ulitmately should be very few
> clip stacks that even require a mask as long as they don't use
> deprecated SkClipOps.
> 
> Bug: skia:
> Change-Id: I79c5558c93c1b99179f1e933d029f69b14ad1ce3
> Reviewed-on: https://skia-review.googlesource.com/116724
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>

TBR=robertphillips@google.com,brianosman@google.com,csmartdalton@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: skia:
Change-Id: Iba289e00ba2eca7084dc8517491cfb5f6ab6266f
Reviewed-on: https://skia-review.googlesource.com/117420
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-03-30 17:03:16 +00:00
Chris Dalton
df1681ec06 Revert "vulkan: Blacklist MSAA path renderer on Qualcomm drivers"
This reverts commit 0361657402.

Reason for revert: Caused more bad golds than it fixed

Original change's description:
> vulkan: Blacklist MSAA path renderer on Qualcomm drivers
> 
> Bug: skia:7758
> Change-Id: I96b5c259352949d67f5e0263a7164cdce54b3269
> Reviewed-on: https://skia-review.googlesource.com/117152
> Reviewed-by: Derek Sollenberger <djsollen@google.com>
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>

TBR=djsollen@google.com,egdaniel@google.com,csmartdalton@google.com

Change-Id: I80714a4cba7d495bc6ad89616b6c5f6eb8492bdb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:7758
Reviewed-on: https://skia-review.googlesource.com/117340
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-03-29 23:17:07 +00:00
Hal Canary
1521c8a2b3 SkPDF/Clusterator: expose to the light of a unit test
Change-Id: I5667da133f608ab42f83daba3424134b8e956b1e
Reviewed-on: https://skia-review.googlesource.com/117006
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Hal Canary <halcanary@google.com>
2018-03-29 20:32:15 +00:00
Robert Phillips
c46e9b7cfd Fix up .fp files
Patch for: https://skia-review.googlesource.com/c/skia/+/115989 (Dump additional details about the gpu resources.)

Change-Id: I8e47c1c5e9f0180cb611fe6e1d45625a0cd75a8d
Reviewed-on: https://skia-review.googlesource.com/117082
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-03-29 19:32:15 +00:00
Chris Dalton
0361657402 vulkan: Blacklist MSAA path renderer on Qualcomm drivers
Bug: skia:7758
Change-Id: I96b5c259352949d67f5e0263a7164cdce54b3269
Reviewed-on: https://skia-review.googlesource.com/117152
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-03-29 19:05:46 +00:00
Hal Canary
e1fec19dea SkAdvancedTypefaceMetrics: distinguish between font names
Change-Id: I7d094c7327fae7a6da42b118858c59ab524ee6ae
Reviewed-on: https://skia-review.googlesource.com/117157
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2018-03-29 18:33:05 +00:00
Jim Van Verth
76e851697b Snap non-scaled emoji to pixel borders
Bug: skia:7747
Change-Id: I9a083c2e98a58a847b8f0a37503a09fd94b6ae08
Reviewed-on: https://skia-review.googlesource.com/117184
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2018-03-29 18:18:55 +00:00
Derek Sollenberger
cf6da8c0f2 Dump additional details about the gpu resources.
GpuResources now dump optional string values that describe the type and
category of the resource.  The type provides a description of the kind
of resource it is (e.g. texture, buffer object, stencil, etc.) and the
category describes what the resource is currently tasked to do (e.g.
path masks, images, scratch, etc.)

This CL also refactors the dump logic in an attempt to consolidate
duplicated code into GrGpuResources.cpp.

Bug: b/74435803
Change-Id: I83cae825f41e6450a21398ab3ecea349c7c61c15
Reviewed-on: https://skia-review.googlesource.com/115989
Commit-Queue: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2018-03-29 18:08:15 +00:00
Hal Canary
9c6f6a5276 SkPDF: type3: more descriptor values
Also: add fXHeight to SkAdvancedTypefaceMetrics.h

Change-Id: I28314cf93ca9808216ee34c202a0fa9fc2ffe301
Reviewed-on: https://skia-review.googlesource.com/117155
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2018-03-29 18:03:56 +00:00
Ben Wagner
3746ac21df Remove path ranges from gpu.
These appear to have been added to handle glyph paths with nvpr and no
longer appear to be used.

Change-Id: Id75e2e85ab837a5808e7641873d217c844cd827c
Reviewed-on: https://skia-review.googlesource.com/117103
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2018-03-29 17:18:05 +00:00
Hal Canary
c3bc425bd4 SkDynamicMemoryWStream: clean up, asserts, etc.
BUG=chromium:825476
Change-Id: Ied7d5e8313781821acc778d784ecade46b93ca22
Reviewed-on: https://skia-review.googlesource.com/116860
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2018-03-29 15:46:45 +00:00
Stephen White
20010e80b6 Reland "GrTessellator: hang fix."
This is a reland of 050c86768a

Original change's description:
> GrTessellator: hang fix.
> 
> Some edges are not coincident with their own endpoints (because floating
> point). If this happens for an edge which is a right-enclosing-edge
> during the Bentley-Ottman simplify() pass, we end up an infinite loop
> attempting to split the edge, since the edge is never to the right of its
> endpoint.
> 
> The easiest fix is to simply remove the right-enclosing-edge splitting
> code. This code was originally added before we had proper
> active-edge-list rewinding, and should no longer be necessary.
> 
> BUG=802896
> 
> Change-Id: Id9f2942b73f01152af8c0088e8c6b1389891d827
> Reviewed-on: https://skia-review.googlesource.com/116920
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Stephen White <senorblanco@chromium.org>

Bug: 802896
Change-Id: I3e48346a8a358ae7d481299a586003e817a519ca
Reviewed-on: https://skia-review.googlesource.com/117121
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-03-29 14:28:55 +00:00
Kaloyan Donev
560d283295 Fixing build with SK_IGNORE_TO_STRING defined.
Change-Id: Id7238e427e490338d1f610255774c2069cfd4879
Reviewed-on: https://skia-review.googlesource.com/117060
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2018-03-29 13:42:45 +00:00
Ethan Nicholas
23463004df fixed type mismatches in SkSL comparison operators
Bug: skia:
Change-Id: I8f05088c561a80549264f7a65cb8161bbe7d8f4c
Reviewed-on: https://skia-review.googlesource.com/116982
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2018-03-29 13:41:25 +00:00
Chris Dalton
0090ef6a83 Don't use gl_FragCoord on legacy Tegra hardware
Bug: skia:7413
Bug: skia:7757
Change-Id: I588c49409fd630f4c15546d8be64fb46c87db3c3
Reviewed-on: https://skia-review.googlesource.com/117007
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-03-29 13:23:35 +00:00
Mike Klein
f2590303b7 Revert "GrTessellator: hang fix."
This reverts commit 050c86768a.

Reason for revert: layout test diff in Chrome roll?

Original change's description:
> GrTessellator: hang fix.
> 
> Some edges are not coincident with their own endpoints (because floating
> point). If this happens for an edge which is a right-enclosing-edge
> during the Bentley-Ottman simplify() pass, we end up an infinite loop
> attempting to split the edge, since the edge is never to the right of its
> endpoint.
> 
> The easiest fix is to simply remove the right-enclosing-edge splitting
> code. This code was originally added before we had proper
> active-edge-list rewinding, and should no longer be necessary.
> 
> BUG=802896
> 
> Change-Id: Id9f2942b73f01152af8c0088e8c6b1389891d827
> Reviewed-on: https://skia-review.googlesource.com/116920
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Stephen White <senorblanco@chromium.org>

TBR=robertphillips@google.com,senorblanco@chromium.org

Change-Id: Icb928db6c052a21c6d327da9492cb991f769186f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 802896
Reviewed-on: https://skia-review.googlesource.com/117120
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-03-29 13:21:16 +00:00
Ben Wagner
97182cc8f6 Add color fonts.
BUG=skia:7624

Change-Id: I68a6bb4c6fa541ffad565d970438d93ff1bd8ed6
Reviewed-on: https://skia-review.googlesource.com/109521
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-on: https://skia-review.googlesource.com/116541
Reviewed-on: https://skia-review.googlesource.com/116984
Reviewed-by: Ben Wagner <bungeman@google.com>
2018-03-28 20:14:44 +00:00
Stephen White
050c86768a GrTessellator: hang fix.
Some edges are not coincident with their own endpoints (because floating
point). If this happens for an edge which is a right-enclosing-edge
during the Bentley-Ottman simplify() pass, we end up an infinite loop
attempting to split the edge, since the edge is never to the right of its
endpoint.

The easiest fix is to simply remove the right-enclosing-edge splitting
code. This code was originally added before we had proper
active-edge-list rewinding, and should no longer be necessary.

BUG=802896

Change-Id: Id9f2942b73f01152af8c0088e8c6b1389891d827
Reviewed-on: https://skia-review.googlesource.com/116920
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2018-03-28 19:55:34 +00:00
Robert Phillips
6eba063b63 Add new GrResourceCache::purgeUnlockedResources variant
TBR=bsalomon@google.com
Change-Id: I05bef1f8a271474db878a046cc1f6ac7b60a15f1
Reviewed-on: https://skia-review.googlesource.com/116801
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-03-28 18:56:14 +00:00
Hal Canary
a567e3315b SkPDF: Accept non-monotonic text cluster indices
BUG=skia:7055
Change-Id: Ic1540a15118dbe99db5bcff26dd1235adac5468a
Reviewed-on: https://skia-review.googlesource.com/116725
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Hal Canary <halcanary@google.com>
2018-03-28 15:29:24 +00:00
Chris Dalton
a466228a61 Delete GPU alpha clip masks
The cost of switching render targets on each draw to make a custom
clip is enormous. There are virtually no circumstances where this will
outperform our cached, multi-threaded software mask generator. The
tried-and-true approach to clipping on-GPU is with analytic FPs. And
now that we support CCPR clip FPs, there ulitmately should be very few
clip stacks that even require a mask as long as they don't use
deprecated SkClipOps.

Bug: skia:
Change-Id: I79c5558c93c1b99179f1e933d029f69b14ad1ce3
Reviewed-on: https://skia-review.googlesource.com/116724
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-03-28 15:01:04 +00:00
Jim Van Verth
41964ed46e Rename SkInsetConvexPolygon to SkOffsetPolygon.
Prep for adding new offset routines.

Change-Id: I261c22d9998e5ae4567b697c5f20a31f20777ac1
Reviewed-on: https://skia-review.googlesource.com/116800
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2018-03-28 14:49:14 +00:00
Robert Phillips
3a9710b1e4 Add handling for allocation failure in GrTextureOpList
I believe this is what has been causing the intermittent TSAN crash

Change-Id: Ie7170a3eb0495cebe8b1398a00f98ad099f78944
Reviewed-on: https://skia-review.googlesource.com/116629
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-03-28 14:25:54 +00:00
Herb Derby
39e45df22d Various cleanup to remote_demo
Integrate SkRemoteGlyphCacheRenderer into SkStrikeServer
Add a Timer.
Remove unused code.

BUG=skia:7515

Change-Id: Idffb477af71cbcc4035df190e29e8910b61aa6e5
Reviewed-on: https://skia-review.googlesource.com/116485
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-03-27 21:51:44 +00:00
Ethan Nicholas
26a9aad63b initial SkSLJIT checkin
Docs-Preview: https://skia.org/?cl=112204
Bug: skia:
Change-Id: I10042a0200db00bd8ff8078467c409b1cf191f50
Reviewed-on: https://skia-review.googlesource.com/112204
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-03-27 18:39:13 +00:00
Ben Wagner
3560b58de3 Revert "Add color fonts."
This reverts commit d3b933f3e0.

Reason for revert: we're not mirroring experimental/ everywhere.

Original change's description:
> Add color fonts.
> 
> BUG=skia:7624
> 
> Change-Id: I1d0974282adce2fd7b13a003309e63593b6e1a9c
> Reviewed-on: https://skia-review.googlesource.com/109521
> Commit-Queue: Ben Wagner <bungeman@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>
> Reviewed-by: Herb Derby <herb@google.com>
> Reviewed-on: https://skia-review.googlesource.com/116541

TBR=mtklein@google.com,bungeman@google.com,herb@google.com

Change-Id: Ic2d763244cbce663a23eb53321ac45201c466501
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:7624
Reviewed-on: https://skia-review.googlesource.com/116680
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2018-03-27 18:16:04 +00:00
Ben Wagner
d3b933f3e0 Add color fonts.
BUG=skia:7624

Change-Id: I1d0974282adce2fd7b13a003309e63593b6e1a9c
Reviewed-on: https://skia-review.googlesource.com/109521
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-on: https://skia-review.googlesource.com/116541
2018-03-27 16:49:14 +00:00
Mike Klein
b412f5bd06 cache SkMatrix44 type in makeColorSpin()
This helps prevent races on getType() later, e.g.
https://luci-milo.appspot.com/swarming/task/3c80715df637a810/steps/symbolized_dm/0/stdout

Change-Id: I3dbc9f6bf2fddff9ca416b0001bfd5da123e6b25
Reviewed-on: https://skia-review.googlesource.com/116466
Commit-Queue: Mike Klein <mtklein@chromium.org>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2018-03-27 16:29:14 +00:00
Chris Dalton
8dfc70f7e2 ccpr: Various cleanups
Renames GrCCCoverageProcessor::RenderPass to PrimitiveType and handles
corners as subpasses instead. Various touchups to coverage processors
now that the overhaul is complete. This change should be strictly a
refactor.

Bug: skia:
Change-Id: I52852463330d5ec71fae7e19fadccd9ede8b2c16
Reviewed-on: https://skia-review.googlesource.com/116169
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-03-27 15:38:34 +00:00
Brian Osman
052ef69570 Pin color type when a cross-context image is constructed
Fixes issues with gray images that may be incorrectly re-interpreted as
alpha when re-wrapped. (https://github.com/flutter/flutter/issues/15600)

Change-Id: I4a78466073e14d212108d168eed0b2df1bc92ffe
Reviewed-on: https://skia-review.googlesource.com/116484
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2018-03-27 14:45:14 +00:00
Robert Phillips
d3b37a1a7c Fix TSAN race in SkPaintToGrPaintNoShader
Change-Id: Id906e139db80e0c3b426a0e2318e77477989cf8d
Reviewed-on: https://skia-review.googlesource.com/116545
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-03-27 14:33:54 +00:00
Brian Osman
094fba9cd6 Add SkColorSpaceXform_skcms
Currently only enabled in Skia dev builds. Has some diffs
in GMs and images, but (hopefully) nothing major.

Bug: skia:
Change-Id: Ifdf5d2804e59f555a3dc84f657e438dd589a2751
Reviewed-on: https://skia-review.googlesource.com/116520
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-03-27 13:15:24 +00:00
Yuqian Li
c26be9c50f Reland "Use DAA for small cubics and non-convex paths that fit into a mask"
This reverts commit 107d53971d.

Reason for revert: Ready to rebaseline

Original change's description:
> Revert "Use DAA for small cubics and non-convex paths that fit into a mask"
> 
> This reverts commit 1875e05384.
> 
> Reason for revert:
> 
> I don't think there's anything wrong with this, but it looks like Yuqian is out today and there is a large number of GM, SKP, and SVG images to triage from this.  This is just a triage-by-revert... should be fine to reland when you're ready to triage.
> 
> Original change's description:
> > Use DAA for small cubics and non-convex paths that fit into a mask
> > 
> > I forgot to benchmark svgs and it turns out that DAA is specifically
> > good for the small cubics and small non-convex paths in svgs. This
> > should make our svg performance fast again:
> > 
> >     2.84% faster in svgparse_Florida-StateSeal.svg_1
> >     2.90% faster in svgparse_NewYork-StateSeal.svg_1
> >     2.95% faster in svgparse_Seal_of_Texas.svg_1
> >     3.05% faster in car.svg_1
> >     3.53% faster in svgparse_Vermont_state_seal.svg_1
> >     3.68% faster in svgparse_Wyoming-StateSeal.svg_1
> >     4.88% faster in svgparse_Minnesota-StateSeal.svg_1
> >     5.22% faster in svgparse_NewMexico-StateSeal.svg_1
> >     6.49% faster in svgparse_fsm.svg_1
> > 
> > 
> > Bug: skia:
> > Change-Id: Ia149944443d72c12c3dda178cb5ebc89d6d0bf18
> > Reviewed-on: https://skia-review.googlesource.com/116185
> > Reviewed-by: Cary Clark <caryclark@google.com>
> > Commit-Queue: Yuqian Li <liyuqian@google.com>
> 
> TBR=caryclark@google.com,liyuqian@google.com,reed@google.com,caryclark@skia.org
> 
> # Not skipping CQ checks because original CL landed > 1 day ago.
> 
> Bug: skia:
> Change-Id: I232f34dcea1cdabef768879a261fe6796f3e4a79
> Reviewed-on: https://skia-review.googlesource.com/116400
> Reviewed-by: Mike Klein <mtklein@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

TBR=mtklein@google.com,caryclark@google.com,liyuqian@google.com,reed@google.com,caryclark@skia.org

Change-Id: I6a413e3a2f1ce9182f9e209f6e2654a602170378
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/116620
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Yuqian Li <liyuqian@google.com>
2018-03-27 12:41:05 +00:00
Herb Derby
2ef4525daf Remove SkAutoGlyphCache
Change-Id: Ia485ce5acd70730d461ce81104595a6b961f5ca6
Reviewed-on: https://skia-review.googlesource.com/116183
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-03-27 02:58:44 +00:00
Chris Dalton
b709f27bc0 ccpr: Use Manhattan distance for curve AA
Manhattan distance has the nice property that every pixel crossed
anywhere by the curve gets a fractional coverage value, whereas pixels
not touched by the curve will have zero coverage. This arguably looks
better on its own merits, but it also helps the curves blend more
seamlessly with their adjoining edges, which are already using Manhattan
distance.

Bug: skia:
Change-Id: I31cf28171d0b74512c74dca1088e50f0f442b924
Reviewed-on: https://skia-review.googlesource.com/115781
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2018-03-26 21:58:44 +00:00
Herb Derby
97be88f58a Move cache difference code into remote cache files
BUG=skia:7515

Change-Id: I59e75d460b4ed4d0a737c833520b2335808a4ce4
Reviewed-on: https://skia-review.googlesource.com/115706
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-03-26 21:28:04 +00:00
Herb Derby
f9e12df94f Cleanup SkAutoGlyphCache in SkXPSDevice.
Change-Id: Iadd405fa527a8d3746d9f0b9ff803caaf1e582cf
Reviewed-on: https://skia-review.googlesource.com/116524
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-03-26 21:00:44 +00:00
Chris Dalton
21ba551f13 ccpr: Replace curve corner MSAA with analytic attenuation
Begins using the new triangle corner algorithm on curves as well.
Updates the vertex backend to render curves in a single pass.
Simplifies the cubic and quadratic shaders. Removes all code related to
sample locations.

Bug: skia:
Change-Id: I96c6c401be765e96a8fe087deb7f84760e68dcf0
Reviewed-on: https://skia-review.googlesource.com/115746
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-03-26 20:25:44 +00:00
Ethan Nicholas
8f7e28f3ae added frexp support to SkSL
This includes an optimizer fix for the situation:

int i;
float f = frexp(foo, i);

If we don't read the variable i, it is considered dead and eliminated -
which then causes an error when we try to write the expression
frexmp(foo, i).

Bug: skia:
Change-Id: Iac385e38e215455346fab62e1f4ec46fa65b3c21
Reviewed-on: https://skia-review.googlesource.com/116521
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2018-03-26 19:03:44 +00:00
Robert Phillips
19d311b1e3 Remove copy of TableColorFilter data when GPU rendering
Change-Id: I8cb6059a175e0ef6bd766e3ad2254c893c11bed3
Reviewed-on: https://skia-review.googlesource.com/116522
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-03-26 19:02:03 +00:00
Mike Klein
68ff92f78a specialize arm64 allTrue()/anyTrue()
aarch64 added vector-wise add/mul/min/max instructions.
We can use min and max to implement allTrue() and anyTrue(),
respectively.

(This CL is mostly so I don't forget these intrinsics exist.)

In assembly, these actually compile to two instructions,
the folding operation into a vector register, then a move
from the vector register to a general purpose register.

Change-Id: Ia6a999ac250740de765e871094e911979a8711c7
Reviewed-on: https://skia-review.googlesource.com/116482
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-03-26 18:48:23 +00:00
Mike Klein
b468ddcc74 detect ASIMDHP on ARM64
(ASIMDHP == "advanced SIMD half-precision" == NEON half-float compute.)

Testing: printed features after detection
   Pixel 1:   0x08
   Galaxy S9: 0x18
(All as expected.)

Change-Id: I3c6987d9ad50b0eb244c2be4354c1c13fdd24815
Reviewed-on: https://skia-review.googlesource.com/116480
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-03-26 16:35:23 +00:00
Mike Klein
107d53971d Revert "Use DAA for small cubics and non-convex paths that fit into a mask"
This reverts commit 1875e05384.

Reason for revert:

I don't think there's anything wrong with this, but it looks like Yuqian is out today and there is a large number of GM, SKP, and SVG images to triage from this.  This is just a triage-by-revert... should be fine to reland when you're ready to triage.

Original change's description:
> Use DAA for small cubics and non-convex paths that fit into a mask
> 
> I forgot to benchmark svgs and it turns out that DAA is specifically
> good for the small cubics and small non-convex paths in svgs. This
> should make our svg performance fast again:
> 
>     2.84% faster in svgparse_Florida-StateSeal.svg_1
>     2.90% faster in svgparse_NewYork-StateSeal.svg_1
>     2.95% faster in svgparse_Seal_of_Texas.svg_1
>     3.05% faster in car.svg_1
>     3.53% faster in svgparse_Vermont_state_seal.svg_1
>     3.68% faster in svgparse_Wyoming-StateSeal.svg_1
>     4.88% faster in svgparse_Minnesota-StateSeal.svg_1
>     5.22% faster in svgparse_NewMexico-StateSeal.svg_1
>     6.49% faster in svgparse_fsm.svg_1
> 
> 
> Bug: skia:
> Change-Id: Ia149944443d72c12c3dda178cb5ebc89d6d0bf18
> Reviewed-on: https://skia-review.googlesource.com/116185
> Reviewed-by: Cary Clark <caryclark@google.com>
> Commit-Queue: Yuqian Li <liyuqian@google.com>

TBR=caryclark@google.com,liyuqian@google.com,reed@google.com,caryclark@skia.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: skia:
Change-Id: I232f34dcea1cdabef768879a261fe6796f3e4a79
Reviewed-on: https://skia-review.googlesource.com/116400
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2018-03-26 15:08:54 +00:00
Brian Salomon
34df0d385b Hide GrBackendTexture/RenderTarget constructors that take a GrPixelConfig
Make GrGLTexture use the version that takes GrMipMapped.

Bug: skia:6718
Change-Id: Id3e801bcb5e781938e610bdea75bd92498117935
Reviewed-on: https://skia-review.googlesource.com/116221
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2018-03-23 23:17:01 +00:00
Chris Dalton
ae18d07a7d Revert "Implement Sk2f::Store2"
This reverts commit 8a8a8e9dd5.

Reason for revert: Needs non-SIMD impl

Original change's description:
> Implement Sk2f::Store2
> 
> Bug: skia:
> Change-Id: Ieedd05ced376a7604936e9d2729fc20a8669496e
> Reviewed-on: https://skia-review.googlesource.com/115531
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>

TBR=mtklein@google.com,csmartdalton@google.com

Change-Id: I8dfbd87c5871b041a4fc6ef3816f121c72083a20
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/116240
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-03-23 21:18:01 +00:00
Brian Salomon
032aaae5be Remove legacy GrContext factories function and supporting code/types.
Change-Id: I437a4a0a58bf70ea1b8b0659b099a2af2bfa64fe
Reviewed-on: https://skia-review.googlesource.com/116197
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2018-03-23 21:12:50 +00:00
Brian Salomon
a6a3df7d64 Move GrPixelConfig to GrTypesPriv
BUG= skia:6718

Change-Id: I254a5d289c1216e580b8f7fe613236c090d0e901
Reviewed-on: https://skia-review.googlesource.com/116196
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2018-03-23 21:05:10 +00:00
Brian Salomon
49edccd775 Remove legacy SkSurface::MakeFromBackendRenderTarget that does not take SkColorType
Bug: skia:6718
Change-Id: Iefec5be49bf7450426c5ddb668f5525876f8ec2d
Reviewed-on: https://skia-review.googlesource.com/116194
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-03-23 20:44:50 +00:00
Brian Salomon
f4a00e4b4a Move a bunch of internal types from GrTypes to GrTypesPriv
Change-Id: I9fe1297ae7d185957c76681305bcf22cc972e53b
Reviewed-on: https://skia-review.googlesource.com/116189
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-03-23 20:36:00 +00:00
Robert Phillips
1e8501ebda Get @constructor feature of SKSL working
This is probably the only portion of https://skia-review.googlesource.com/c/skia/+/115900 that we want to keep

TBR=ethannicholas@google.com
Change-Id: Ife4d7bfbe454f705e93fb051b0bcf8e2b0a052b5
Reviewed-on: https://skia-review.googlesource.com/116192
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-03-23 19:30:40 +00:00
Chris Dalton
8a8a8e9dd5 Implement Sk2f::Store2
Bug: skia:
Change-Id: Ieedd05ced376a7604936e9d2729fc20a8669496e
Reviewed-on: https://skia-review.googlesource.com/115531
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2018-03-23 19:28:30 +00:00
Yuqian Li
1875e05384 Use DAA for small cubics and non-convex paths that fit into a mask
I forgot to benchmark svgs and it turns out that DAA is specifically
good for the small cubics and small non-convex paths in svgs. This
should make our svg performance fast again:

    2.84% faster in svgparse_Florida-StateSeal.svg_1
    2.90% faster in svgparse_NewYork-StateSeal.svg_1
    2.95% faster in svgparse_Seal_of_Texas.svg_1
    3.05% faster in car.svg_1
    3.53% faster in svgparse_Vermont_state_seal.svg_1
    3.68% faster in svgparse_Wyoming-StateSeal.svg_1
    4.88% faster in svgparse_Minnesota-StateSeal.svg_1
    5.22% faster in svgparse_NewMexico-StateSeal.svg_1
    6.49% faster in svgparse_fsm.svg_1


Bug: skia:
Change-Id: Ia149944443d72c12c3dda178cb5ebc89d6d0bf18
Reviewed-on: https://skia-review.googlesource.com/116185
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
2018-03-23 19:06:50 +00:00
Robert Phillips
12a68422ad Disable DDL assert to unblock Chrome
Chrome is replaying DDLs into FBO 0 which impacts several rendering capabilities. FBO 0-ness of the final destination currently isn't part of SkSurfaceCharacterization so the surface flags aren't being set appropriately for the expected capabilities.

Bug: skia:7748
Change-Id: I0d2bf3f689f8f75990443a0d5959f016d16f5d97
Reviewed-on: https://skia-review.googlesource.com/116188
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-03-23 18:53:20 +00:00
Robert Phillips
48ce22b374 Add error return, upon mask creation failure, in sw_draw_with_mask_filter
Bug: 822680

Change-Id: I7296c5be4faf1f706ad1cc05198559771e324841
Reviewed-on: https://skia-review.googlesource.com/116180
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-03-23 15:56:10 +00:00
Jim Van Verth
af78a94217 Revert "Add color fonts."
This reverts commit c912d6133c.

Reason for revert: Causing TSAN issues.

Original change's description:
> Add color fonts.
> 
> BUG=skia:7624
> 
> Change-Id: Id2b7449048591892ff802484d5e3745a7e1402bb
> Reviewed-on: https://skia-review.googlesource.com/109521
> Commit-Queue: Ben Wagner <bungeman@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>
> Reviewed-by: Herb Derby <herb@google.com>

TBR=mtklein@google.com,bungeman@google.com,herb@google.com

Change-Id: I2ccd1f00e91bb92b7059323c95da0dd3de954164
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:7624
Reviewed-on: https://skia-review.googlesource.com/116141
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2018-03-23 14:39:51 +00:00
Robert Phillips
a98183a820 Revert "Remove std::move from GrSimpleTextureEffect"
This reverts commit 0a4b13cdea.

Reason for revert: incorrect change

Original change's description:
> Remove std::move from GrSimpleTextureEffect
> 
> Bug:822680
> Change-Id: I4780ce12a6ce244a2165bfb7b293adb06ae577c5
> Reviewed-on: https://skia-review.googlesource.com/115900
> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>

TBR=bsalomon@google.com,robertphillips@google.com,ethannicholas@google.com

Change-Id: Ib4123d50b02eeac3f5112bf2702b12fc080f0d1c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 822680
Reviewed-on: https://skia-review.googlesource.com/116140
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-03-23 11:44:31 +00:00
Herb Derby
7956b59ba5 Remove SkAutoGlyphCache decls that happen to work
...and fix sample code.

Change-Id: I673770125064f8451e3d88ec4929a68409935ad1
Reviewed-on: https://skia-review.googlesource.com/115995
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-03-22 23:47:19 +00:00
Ben Wagner
c912d6133c Add color fonts.
BUG=skia:7624

Change-Id: Id2b7449048591892ff802484d5e3745a7e1402bb
Reviewed-on: https://skia-review.googlesource.com/109521
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2018-03-22 20:55:05 +00:00
Robert Phillips
0a4b13cdea Remove std::move from GrSimpleTextureEffect
Bug:822680
Change-Id: I4780ce12a6ce244a2165bfb7b293adb06ae577c5
Reviewed-on: https://skia-review.googlesource.com/115900
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-03-22 19:55:05 +00:00
Brian Salomon
3afdab1884 Always validate GrBackendTextures passed to YUV image factories
Change-Id: I73a301fcdf13fceb82c94b0c68ac9386aa38e16d
Reviewed-on: https://skia-review.googlesource.com/115126
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-03-22 19:12:50 +00:00
Hal Canary
0fd12755e9 GrGLES Interface: GL_OES_vertex_array_object ext
Change-Id: I712ec637b5699587a77ab4a6cd48784df075d8c5
Reviewed-on: https://skia-review.googlesource.com/115933
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2018-03-22 19:08:05 +00:00
Mike Klein
5b3de79417 lock before using fCacheKeys in ~SkImageFilter()
No other code can be using an SkImageFilter() while it's being
destroyed, so there's not a chance of a race per-se here.  But, because
we have not acquired fMutex, there is technically a possibility that the
destructor sees an outdated version of fCacheKeys, not necessarily
reflecting the last change(s) made while another core held the mutex.

This is an unlikely case, but it's worth fixing by locking in the
destructor.  This will always be uncontended, and so very cheap.

Bug: skia:7666

Change-Id: I9f705bc6e8e99162b90d59b30b8dd51c4f238970
Reviewed-on: https://skia-review.googlesource.com/115929
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-03-22 18:22:35 +00:00
Herb Derby
1a605cd396 Remove the last uses of auto glyph cache.
Change-Id: I15fdc5bbe29aaa969fe6ec57010919b52249fd7f
Reviewed-on: https://skia-review.googlesource.com/115886
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-03-22 16:32:14 +00:00
Yuqian Li
ab46ac5ee8 Better decisions about choosing AAA versus DAA
The Chrome perf regressions (817942, 819185) are
caused by the bad choices to use DAA instead of
AAA for stroking simple curves. (BTW, in my tests,
DAA is still faster than SAA so it's not too much
of a regression.)

We previously only considered the number of line segments,
but not the length of each segment. That leads to our
wrong judgement of the path complexity (the number of
intersections per scan line) when there are many short
line segments.

The change will bring the following performance change
to our nanobench:

    8.45% slower in clip_strategy_path_10
    8.39% slower in draw_stroke_bezier_quad_square_bevel_10
    3.91% slower in chart_aa
    3.76% faster in lines
    6.29% faster in path_stroke_big_oval
   22.81% faster in path_stroke_big_circle
   24.44% faster in giantdashline_vert_2

The two slower cases, clip_strategy_path_10
and draw_stroke_bezier_quad_square_bevel_10 are caused by
choosing AAA over DAA. Those two tests do seem to be simple
strokes. I'll later investigate why AAA is slower than DAA
for those two cases.

For now, I think that this change is sufficient to address
those chromium perf regresssions.

Bug: chromium:817942 chromium:819185
Change-Id: I1d13c968b17f257b4ede4c70e552db5016baf1ab
Reviewed-on: https://skia-review.googlesource.com/115583
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Cary Clark <caryclark@google.com>
2018-03-22 16:24:24 +00:00
Yuqian Li
817e999f4c Reland "Remove legacy precision boundary"
This reverts commit dab15f7a02.

Reason for revert: the Android roll is broken by something else: b/76126268

Original change's description:
> Revert "Remove legacy precision boundary"
> 
> This reverts commit a2513c14c4.
> 
> Reason for revert: This is breaking the Android roll.
> 
> Original change's description:
> > Remove legacy precision boundary
> > 
> > Bug: skia:7731
> > Change-Id: I86a87b960541c2bc7b099ca9f609342cb0bbf563
> > Reviewed-on: https://skia-review.googlesource.com/115652
> > Reviewed-by: Cary Clark <caryclark@google.com>
> > Commit-Queue: Yuqian Li <liyuqian@google.com>
> 
> TBR=caryclark@google.com,fmalita@chromium.org,liyuqian@google.com,reed@google.com
> 
> Change-Id: I45b14f5a84e97cc1022b99c414f90126d368f598
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:7731
> Reviewed-on: https://skia-review.googlesource.com/115840
> Reviewed-by: Derek Sollenberger <djsollen@google.com>
> Commit-Queue: Derek Sollenberger <djsollen@google.com>

TBR=djsollen@google.com,caryclark@google.com,fmalita@chromium.org,liyuqian@google.com,reed@google.com

Change-Id: I5d957cb7be9cc578672079e98ab5e131ad249f70
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:7731
Reviewed-on: https://skia-review.googlesource.com/115940
Reviewed-by: Yuqian Li <liyuqian@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
2018-03-22 16:08:05 +00:00
Brian Salomon
5fba7ad39a Support GL_RGB textures and render targets.
Bug= skia:7533

Change-Id: Iba30e90dbf2574368b773bb5cf2ebd5219559717
Reviewed-on: https://skia-review.googlesource.com/108188
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2018-03-22 14:49:44 +00:00
Ethan Nicholas
9eded2c211 switched SPIR-V vertexid to vertexindex
Bug: skia:
Change-Id: I32c10e2874feea63d7fa048057ef57e27d5874bc
Reviewed-on: https://skia-review.googlesource.com/115880
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2018-03-22 14:45:54 +00:00
Derek Sollenberger
dab15f7a02 Revert "Remove legacy precision boundary"
This reverts commit a2513c14c4.

Reason for revert: This is breaking the Android roll.

Original change's description:
> Remove legacy precision boundary
> 
> Bug: skia:7731
> Change-Id: I86a87b960541c2bc7b099ca9f609342cb0bbf563
> Reviewed-on: https://skia-review.googlesource.com/115652
> Reviewed-by: Cary Clark <caryclark@google.com>
> Commit-Queue: Yuqian Li <liyuqian@google.com>

TBR=caryclark@google.com,fmalita@chromium.org,liyuqian@google.com,reed@google.com

Change-Id: I45b14f5a84e97cc1022b99c414f90126d368f598
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:7731
Reviewed-on: https://skia-review.googlesource.com/115840
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Derek Sollenberger <djsollen@google.com>
2018-03-22 13:35:36 +00:00
Cary Clark
cec40a9320 limit discrete path effect iterations
R=fmalita@google.com, reed@google.com
Bug: skia:7737
Change-Id: I339548f7a39618d7559182487e8969d591953b89
Reviewed-on: https://skia-review.googlesource.com/115659
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Cary Clark <caryclark@skia.org>
2018-03-21 20:24:19 +00:00
Mike Klein
4d4b3aaa20 small ABI + narrow/wide code updates
The only tangible effect this CL should have is to use __vectorcall on
all Windows builds, including scalar ones.  The code generation is a
little better there with __vectorcall than not, so might as well.  This
is a baby step towards vector stages with MSVC, but a very baby step
indeed.

Mostly this refactors and regroups a bunch of logic to reflect my
current thoughts.  The BUILD.gn changes are essentially no-ops, but they
simplify things and make our flags more similar to how those targets are
built in Chromium.

(And I cleaned up other /arch: uses so this works.)

Change-Id: I73dd39d15cdc7b3d268231a707952bbbfd91496e
Reviewed-on: https://skia-review.googlesource.com/115644
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-03-21 19:40:00 +00:00
Brian Salomon
42409c2efa Remove deprecated version of SkImage::MakeFromAdoptedTexture that does not take SkColorType
Bug: skia:6718
Change-Id: Ia2762855078bcbad8faf2f538f0afc64913e5e9b
Reviewed-on: https://skia-review.googlesource.com/115364
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-03-21 19:08:59 +00:00
Yuqian Li
a2513c14c4 Remove legacy precision boundary
Bug: skia:7731
Change-Id: I86a87b960541c2bc7b099ca9f609342cb0bbf563
Reviewed-on: https://skia-review.googlesource.com/115652
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
2018-03-21 19:06:00 +00:00
Chris Dalton
52076d1df5 ccpr: Use a more stable formula to find quadratic coordinates
The 3x3 inverse grew unstable on small curves with large coordinates,
not to mention being inefficient. This fixes many bad pixels on the
chalkboard.

Also begins scaling curve gradients by the AA bloat, in order to match
triangle edges more closely and visualize curve AA in the ccpr sample.

Bug: skia:
Change-Id: I0f7da2e7599d4d5c458b3dd307185679dc78bb50
Reviewed-on: https://skia-review.googlesource.com/115527
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2018-03-21 18:53:59 +00:00
Mike Reed
ca37f32c70 change canvas-state to just record clip bounds
This reflects the long-standing restrictions in our clients (webview) and the reality of the gpu target which just uses scissors.

It also removes one of the few callers of canvas::clipRegion, which we'd like to remove.

Bug: skia:
Change-Id: Ie3b3c6e8752f82cddef256f753000f9da4bdbdee
Reviewed-on: https://skia-review.googlesource.com/113260
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2018-03-21 18:13:20 +00:00
Hal Canary
10450134e8 GrGLExtensions: remove unneded unique_ptr
Change-Id: Ic949b186fbb4f503d2edbea7033ad242c12ad101
Reviewed-on: https://skia-review.googlesource.com/115640
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2018-03-21 17:57:08 +00:00
Greg Daniel
186ff6dfb7 Fix version check for vulkan layers
Bug: skia:
Change-Id: I9520899c4b86d6436e3697d0cc6358c2b8641169
Reviewed-on: https://skia-review.googlesource.com/114686
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-03-21 17:49:58 +00:00
Robert Phillips
abf7b763e2 Add texture-specific flags for External & Rectangle textures
For DDLs, Ganesh needs to know about External & Rectangle textures prior to instantiation (or PromiseImage fulfillment). These new flags allow the client to provide this information when the lazyProxy is created.

The new texture flags work analogously to the render target flags:
   GrSurface and GrSurfaceProxy get a new set of accessors for the new flags
   The new flags are set appropriately on a GrGLTexture when it is created
   For wrapped texture proxies the flags are just copied off of the GrSurface
   For lazy-proxies/promise-images the flags are computed up front and passed to the proxy
   The GrSurfaceProxy/GrSurface flags equivalence is verified in GrSurfaceProxy::assign

Change-Id: Ia8e1998aa0a36ce4481bfd9e56be21f990e83148
Reviewed-on: https://skia-review.googlesource.com/114985
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-03-21 17:04:18 +00:00
Herb Derby
5f3685b079 Simplify format_rowbyts calculation.
As per comment in change 114371.

Change-Id: I9724d5df205bb1430ebd3371677cce344372decc
Reviewed-on: https://skia-review.googlesource.com/115610
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-03-21 15:44:58 +00:00
Herb Derby
0262ea03f8 Try to have glyph count go through to allow easier glyphid sets
Change-Id: I402e7240629db58c4212049583d6a06bcf7dcc40
Reviewed-on: https://skia-review.googlesource.com/115606
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-03-21 15:44:28 +00:00
Herb Derby
4e34a01723 Remove more uses of SkAutoGlyphCache.
Change-Id: I438bfb1a43857aa9e7e29b19e53dd921ec6eab1a
Reviewed-on: https://skia-review.googlesource.com/115604
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-03-21 15:11:48 +00:00
Cary Clark
9475aa0f90 handle extreme dashes
Make searching indices unsigned so intermediate middle
doesn't overflow. Verified fix runs test in skia:7675
successfully.

R=reed@google.com
Bug: skia:7675
Change-Id: I76be1d3fee8875ae9eb2b18eb070ef66c8006c03
Reviewed-on: https://skia-review.googlesource.com/114798
Reviewed-by: Cary Clark <caryclark@skia.org>
Commit-Queue: Cary Clark <caryclark@skia.org>
2018-03-21 15:06:28 +00:00
Ethan Nicholas
d1d52562dd fixed attributes of sk_InvocationID
Bug: skia:
Change-Id: I549fdfa75f536e00f14bca445753f4c1354fa5d0
Reviewed-on: https://skia-review.googlesource.com/115361
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2018-03-21 14:34:28 +00:00
Robert Phillips
5c4b33bce1 Don't add change listeners to pixelRefs in DDL mode
Change-Id: I1ddfec1e0d697dd4ed183c304514b14c89aca11d
Reviewed-on: https://skia-review.googlesource.com/115400
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-03-20 21:08:57 +00:00
Chris Dalton
8d38a7f521 ccpr: Update the sample to use proper coverage count buffers
Bug: skia:
Change-Id: I6ce3ec567e671fa2ab3f05403015b48251518227
Reviewed-on: https://skia-review.googlesource.com/115072
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-03-20 20:46:17 +00:00
Cary Clark
f36b8a30c5 fix pathop fuzzer
turn assert into fail

R=kjlubick@google.com
Bug: skia:
Change-Id: I1124573959c90c7dae1a8cd54199dae429b8ca73
Reviewed-on: https://skia-review.googlesource.com/115481
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Cary Clark <caryclark@skia.org>
2018-03-20 20:45:47 +00:00
Brian Salomon
bfd2749048 Remove deprecated SkImage::MakeFromTexture variants that don't take SkColorType
Bug: skia:6718

Change-Id: I3b23ddb903fab5c41b7e6b1811a78cc38ba64590
Reviewed-on: https://skia-review.googlesource.com/115086
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2018-03-20 19:58:00 +00:00
Greg Daniel
abadbeee62 Move MakeCrossContextFromPixmap to use lazy version of createTextureProxy
After this change it is only tests that are using the old API.

Bug: skia:
Change-Id: I421ab5efbc604769d2356609d61670c289574f3d
Reviewed-on: https://skia-review.googlesource.com/115300
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-03-20 19:24:51 +00:00
Herb Derby
6357116d96 Allow only Android to use SkAutoGlyphCacheNoGamma
Change-Id: Id7b67bc1e4e994f96037266adf7dc159980e4169
Reviewed-on: https://skia-review.googlesource.com/115244
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-03-20 19:21:11 +00:00
Herb Derby
aeb425dbf1 Regularize SkGlyphCache creation.
This allows no need for downcasting for specialized use
of SkScalerContext for the remote case. This allows
cache priming to be used in a single process.

BUG=skia:7515

Change-Id: I963a50e36af9deef5a3414fc8a4c94ccfc38deaf
Reviewed-on: https://skia-review.googlesource.com/115121
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-03-20 19:11:31 +00:00
Mike Reed
d92a739d72 detect nonfinite cubic points
Bug: oss-fuzz:7031
Cq-Include-Trybots: skia.primary:Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-SKNX_NO_SIMD
Change-Id: I657c0652dc863256f445a84c084ccc37d287f534
Reviewed-on: https://skia-review.googlesource.com/115222
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2018-03-20 17:23:09 +00:00
Mike Reed
140ab3659e Reland "fix nextContour bug"
This reverts commit 0a86820f2f.

Reason for revert: fix has landed in CTS

Original change's description:
> Revert "fix nextContour bug"
> 
> This reverts commit 473f69276f.
> 
> Reason for revert: a CTS test PathMeasureTest.android.graphics.cts.PathMeasureTest.testNextContour is failing
> 
> Original change's description:
> > fix nextContour bug
> > 
> > Calling nextContour() needs to ensure that we've already measured the "current" one.
> > 
> > Bug: skia:
> > Change-Id: I501c26d0b068028d67103888f06ec89125a5407a
> > Reviewed-on: https://skia-review.googlesource.com/114692
> > Reviewed-by: Cary Clark <caryclark@google.com>
> > Commit-Queue: Mike Reed <reed@google.com>
> 
> TBR=caryclark@google.com,reed@google.com
> 
> Change-Id: I7f1e08651dfe73c02158b209dc28af2b174e246f
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:
> Reviewed-on: https://skia-review.googlesource.com/114823
> Reviewed-by: Stan Iliev <stani@google.com>
> Commit-Queue: Stan Iliev <stani@google.com>

TBR=caryclark@google.com,reed@google.com,stani@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: skia:
Change-Id: I0fd61473ef0df62722cf6c6b86f1277f580e4ab1
Reviewed-on: https://skia-review.googlesource.com/115340
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2018-03-20 17:23:08 +00:00
Herb Derby
c10ebe60d4 More removal of auto glyph cache.
Working on the last constructor.

Change-Id: Iad80c3fd13be47ac46d9037af522b3b3337426fd
Reviewed-on: https://skia-review.googlesource.com/115243
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-03-20 16:37:28 +00:00
Yuqian Li
bba3ab7cab Reland "Check the boundary while cumulating deltas in a mask"
This reverts commit 2ac541e66c.

Reason for revert: try a new fix; the old one doesn't work
because the deltas are not sorted. We use masks specifically
because we don't want to sort deltas.

Original change's description:
> Revert "Check the boundary while cumulating deltas in a mask"
>
> This reverts commit d9779bcf93.
>
> Reason for revert: breaks gold
>
> Original change's description:
> > Check the boundary while cumulating deltas in a mask
> >
> > Without the fix,
> >
> > ./out/Debug/dm --config t8888 -m complexclip_bw
> >
> > will trigger the assert.
> >
> > Note that this boundary check is already in place when deltas are
> > cumulated without using a mask.
> >
> > Bug: skia:
> > Change-Id: I68bfe2b7196d440743d3a7535d097bb8ec7689c3
> > Reviewed-on: https://skia-review.googlesource.com/113210
> > Commit-Queue: Yuqian Li <liyuqian@google.com>
> > Reviewed-by: Cary Clark <caryclark@skia.org>
>
> TBR=liyuqian@google.com,reed@google.com,caryclark@skia.org
>
> Change-Id: Ice0e3618b02ef48b0f2a9f0662a12f76078e984a
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:
> Reviewed-on: https://skia-review.googlesource.com/113170
> Reviewed-by: Yuqian Li <liyuqian@google.com>
> Commit-Queue: Yuqian Li <liyuqian@google.com>

TBR=liyuqian@google.com,reed@google.com,caryclark@skia.org

Change-Id: Ia7a3608a54bed23827ed014213dcd6248adb271d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:7731
Reviewed-on: https://skia-review.googlesource.com/113520
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Yuqian Li <liyuqian@google.com>
2018-03-20 16:14:19 +00:00
Yuqian Li
ec46871a0c Make consistent isRadiusIncreasing decision
This should not affect anything for now. But it may prevent some future
problems where someone accidentally changed isRadiusIncreasing implementation,
and getting confused by the unexpected shading behavior.

Bug: skia:
Change-Id: I45e83f4bc9eefbdc1ad1c196a43444e24c782711
Reviewed-on: https://skia-review.googlesource.com/115162
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
2018-03-19 22:46:46 +00:00
Cary Clark
3b68882918 remove imageinfo flatten altogether
If SkImageInfo flatten and unflatten aren't referenced outside
of one test, perhaps they can be removed altogether.

R=reed@google.com

Bug: skia:6898
Change-Id: Ia6f82b66d4496a628ad95c386d1865793f3e31a9
Reviewed-on: https://skia-review.googlesource.com/115074
Commit-Queue: Cary Clark <caryclark@skia.org>
Reviewed-by: Mike Reed <reed@google.com>
2018-03-19 21:28:46 +00:00
Brian Salomon
19eaf2dbe7 Revert "Revert "New read pixels implementation that is simpler but does all conversions on CPU.""
This reverts commit be5947c2f3.

Bug: skia:
Change-Id: I06dc15b31042d7827511d0ac2a7f4262c3f09622
Reviewed-on: https://skia-review.googlesource.com/115079
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-03-19 21:17:15 +00:00
Brian Salomon
56dc04bdc1 Remove deprecated versions of YUV texture SkImage factories
Bug: skia:6718
Change-Id: I856b64192e1b797f60b833dd58014e058ea351b3
Reviewed-on: https://skia-review.googlesource.com/115124
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-03-19 21:04:55 +00:00
Eric Karl
af7700265b Allow SkTraceMemoryDump to exclude wrapped objects
Allow SkTraceMemoryDump to exclude wrapped objects from dumps. This
helps avoid duplicate dumping when Skia is wrapping an external object
which is already dumped externally.

Bug: 795358
Change-Id: Icbda96b564c81b958d40f74693280ac7d5ba7332
Reviewed-on: https://skia-review.googlesource.com/114681
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Eric Karl <ericrk@chromium.org>
2018-03-19 20:37:25 +00:00
Brian Salomon
53706774a7 Remove SkSurface::MakeFromBackendTexture variant that doesn't take SkColorType
Bug: skia:6718
Change-Id: I8289c54ca9a5f89d10dc0b0dfe750d4fd1da0b64
Reviewed-on: https://skia-review.googlesource.com/115102
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-03-19 20:12:05 +00:00
Ethan Nicholas
371e29c69e fix switch fallthrough warning
Bug: skia:
Change-Id: Ia2e25545319d54c3258b76c050b46a73c292c791
Reviewed-on: https://skia-review.googlesource.com/115085
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2018-03-19 19:02:46 +00:00
Yuqian Li
650dd901e1 Fix concentric 2pt conical gradient in GPU where r1 < r0
Bug: skia:7683
Change-Id: I6608e72fa695c855af6a6a447885c4889b09fc1d
Reviewed-on: https://skia-review.googlesource.com/115042
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2018-03-19 18:50:46 +00:00
Brian Salomon
cb88470d82 Remove SkSurface::MakeFromBackendTextureAsRenderTarget variant that doesn't take SkColorType
Bug: skia:6718
Change-Id: I3fabe2050394bfbd8ad2fa600d07323838308ae5
Reviewed-on: https://skia-review.googlesource.com/115087
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-03-19 18:43:25 +00:00
Brian Salomon
be5947c2f3 Revert "New read pixels implementation that is simpler but does all conversions on CPU."
This reverts commit c9a642edf2.

Reason for revert: 1010102 gms broke

Original change's description:
> New read pixels implementation that is simpler but does all conversions on CPU.
> 
> Change-Id: Ia548cd24a8544b35a233311706faf48de353b7cf
> Reviewed-on: https://skia-review.googlesource.com/109902
> Commit-Queue: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

TBR=bsalomon@google.com,robertphillips@google.com,brianosman@google.com

Change-Id: I7724a6eef79885ba2a32c1ac871e5b2a9a3c0c12
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/115140
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-03-19 18:42:36 +00:00
Brian Salomon
c9a642edf2 New read pixels implementation that is simpler but does all conversions on CPU.
Change-Id: Ia548cd24a8544b35a233311706faf48de353b7cf
Reviewed-on: https://skia-review.googlesource.com/109902
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2018-03-19 17:19:45 +00:00
Mike Reed
8430eace0b handle divide by zero in paint
Bug: oss-fuzz:7003
Change-Id: Ie3266292ca94a28cc7023ed5255895d25f0d4dc8
Reviewed-on: https://skia-review.googlesource.com/115041
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2018-03-19 16:53:25 +00:00