Commit Graph

51726 Commits

Author SHA1 Message Date
Michael Ludwig
7712db9c24 Reland "Draw image filters directly under non-axis-aligned transforms"
This reverts commit 6cafdc069b.

Reason for revert: Fixes unit test failure in Android

In the original version, this internalSaveLayer() returned early if the
strategy was kNoLayer. This diverged from the old code that updated the
canvas' clip bounds and then returned before making the layer. A comment
had suggested this was maybe okay to switch to this early out, but it
turns out that's not the case.

In Android's unit tests, it queries the clip bounds on a recording canvas
which always uses a no-layer strategy. However, we do need to set the
clip bounds of these types of canvas' (or virtual wrappers of a real
canvas) so that they stay consistent with a real canvas.

The unit tests had two failures, first the bounds and second a color
mismatch after reading back. However, the bounds test was an ASSERT_EQ
inside an SkDrawable function. ASSERT_EQ aborts the current function, so
it never ran the drawRect that sets the color to green. The later
readback is outside the drawable function, so that test still happened
and failed. The only real issue to fix is the clip bounds tracking; once
that unit test succeeds, the color readback will work properly.

Original change's description:
> Revert "Draw image filters directly under non-axis-aligned transforms"
>
> This reverts commit f8f23b2030.
>
> Reason for revert: b/172617382 is creating issues for Android's Webview
>
> Original change's description:
> > Draw image filters directly under non-axis-aligned transforms
> >
> > This removes hacking the canvas CTM and wrapping the paint's image
> > filter in a special MatrixTransform that computed a post-transform
> > instead of its documented pre-transform effect. Performance-wise, the
> > computed layer sizes should be about the same, but we avoid one less
> > render target switch because we apply the transformation while drawing
> > to the dst device, vs. transforming into another temporary layer and
> > then drawing that to the dst device.
> >
> > Several important changes in behavior here:
> > 1. The DeviceCM record no longer has a stashed matrix to restore and
> >    holds its restoration paint directly.
> > 2. Devices for image filter inputs can now have device-to-global
> >    transforms that are not integer translates.
> > 3. The MatrixTransform hack punted when there was perspective because it
> >    could produce excessively large temporary images, but the new version
> >    appears to work around that. We now impose a maximum layer size to
> >    protect against that and automatically scale the layer to prevent it.
> >    Perspective image filters otherwise now draw correctly.
> > 6. Updated layer sizing code to use the new image filter APIs
> > 7. Updated backdrop filter and restore filters to go through the same
> >    code paths, although restore filters skip the intermediate image
> >    transform.
> >     - layer bounds and transforms now go through the updated skif API
> >       and is hopefully more straight forward to understand.
> > 8. Now we can optimize root color filter nodes of a filter DAG, even if
> >    the entire DAG can't be represented as a color filter. The last node
> >    is pulled off and composed with the restoration paint instead.
> >
> > Bug: skia:9074,skia:9283
> > Change-Id: I1fa1d50135b9d6d453b02f89aa3cc3b54deab678
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/328376
> > Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
>
> TBR=bsalomon@google.com,robertphillips@google.com,fmalita@google.com,reed@google.com,michaelludwig@google.com
>
> Change-Id: I098d0e4b8ee067b436400eb9fea047e629544eec
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:9074
> Bug: skia:9283
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332737
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Derek Sollenberger <djsollen@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>

TBR=djsollen@google.com,bsalomon@google.com,robertphillips@google.com,fmalita@google.com,reed@google.com,michaelludwig@google.com

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

Bug: skia:9074
Bug: skia:9283
Change-Id: Ifd5fed708d05a64ddccbd096fbf29896a44ef9f5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333123
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2020-11-10 19:04:39 +00:00
Robert Phillips
88e8bb2fe2 Fix UMR (valgrind) bug in GrDrawingManager
Even prior to https://skia-review.googlesource.com/c/skia/+/332600
(Change UnrefDDLTask to just be the DDLTask) there was no good reason
the 'fRenderTask' array and the 'idArray' kept a strict 1-1
correspondence.

Change-Id: Ib92b47b724c319f52fff459d3dc28c49c17bd045
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333576
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2020-11-10 18:31:59 +00:00
Mike Klein
40022ad5c9 use SkFourByteTag to squelch warnings
[173/2069] compile ../src/ports/SkTypeface_mac_ct.cpp
    ../src/ports/SkTypeface_mac_ct.cpp:649:29: warning: multi-character character constant [-Wfour-char-constants]
        if (!this->getTableSize('glyf') || !this->getTableSize('loca')) {
                                ^
    ../src/ports/SkTypeface_mac_ct.cpp:649:60: warning: multi-character character constant [-Wfour-char-constants]
        if (!this->getTableSize('glyf') || !this->getTableSize('loca')) {
                                                               ^

Change-Id: I9dc691be285fe0e144aaabe4b81e6bc775564423
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333483
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
2020-11-10 18:24:11 +00:00
John Stiles
7f7b48537c Fix flipped array dimensions in SkSL.
Change-Id: I6e44dd5c347b43b3a5cb135724083adbaf65cf27
Bug: skia:10924
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333536
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2020-11-10 18:08:29 +00:00
Robert Phillips
267826c865 Disable both preservefillrule _big and _little for the *ooprddl configs
Change-Id: I8e61bac53dcc6344b766ff60a94c9fae15d1508f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333485
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2020-11-10 17:26:45 +00:00
Herb Derby
624f3f7ad8 cull glyphs that have far out positions - try #2
The first version of this CL assumed that the glyphs
are position in device space. After cl 330622, they are.

If a glyph's position is > 32K or < -32K, then it is not
on the device. Don't bother adding it to the GrOp. This
reduces the glyph position from SkIPoint to
Vec<2, int16_t>.

But, if some of the glyphs are dropped, and the blob is
scrolled, then the glyphs may be in range. Add a flag
to track if glyphs were dropped, and force a redraw if
not exactly the same matrix is used to draw.

In addition,
* Rename VertexData to DevicePosition
* Add needed calls to GrGlyphRect

Change-Id: I7b33ce38528cdd319a9a607403fa98fca7e9caab
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333167
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2020-11-10 17:08:54 +00:00
John Stiles
a695d62772 Limit struct nesting depth to a maximum of eight levels.
This addresses a sanitizer issue discovered in
https://oss-fuzz.com/testcase-detail/4908118777266176 (it has not been
assigned an oss-fuzz bug number yet; coming soon)

This puts an upper bound on struct nesting, again to prevent memory-
layout and other recursive type-handling code from overflowing the
stack. Coincidentally, while researching GLSL behavior around this bug,
I learned that WebGL has a similar limitation but caps nested structs to
4 deep. (I could not find any documented GLSL upper bound.)

Note that both the GLSL and Metal outputs for StructMaxDepth are badly
malformed. (Structs cannot be embedded within another struct in GLSL;
structs SA7 and below are never declared in GLSL; the array list for SA7
is backwards in GLSL; Metal is missing structs SA1 through SA8; Metal
puts the array list on the type instead of the variable name.)
These issues will be addressed in separate CLs.

Change-Id: I0f1059b6faa400cd0647dd7010ec839f73779a36
Bug: skia:10922, skia:10923, skia:10925, skia:10926
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333316
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2020-11-10 16:58:37 +00:00
John Stiles
8d05659074 Limit arrays to a maximum of eight dimensions.
This addresses a sanitizer issue discovered in
https://oss-fuzz.com/testcase-detail/4908118777266176 (it has not been
assigned an oss-fuzz bug number yet; coming soon)

We need to set some sort of limit here to avoid stack overflow. Eight
array dimensions seems like more than enough for any sort of code that
we might realistically need, but the limit is definitely flexible if we
wanted to increase it. (The fuzzer needed to generate a several-
hundred-dimensional array before encountering a crash.)

Change-Id: I3630ab40e47cc58a2280ba200b485e1958371fdc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333160
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2020-11-10 16:56:27 +00:00
Mike Klein
008d63e23d replace std::aligned_union
Since we're only describing the type size and alignment,
we can just use ordinary unions here.

This fixes the size and alignment of AllVertexData,
I think.

Bug: skia:10921
Change-Id: Ife5c1a1f52caf463d28a78b1f35d78e0bbeaeddc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333478
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-11-10 16:07:11 +00:00
Adlai Holler
4888cda29f Fix up a ton of implicit memory_order_seq_cst for unique id gen
Change-Id: Icfbaa3129f5b45b5053c4f3444ff904c188b211a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332725
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Adlai Holler <adlai@google.com>
2020-11-10 16:01:51 +00:00
John Stiles
9e2544e62f Add unit test for array with many dimensions.
This addresses a sanitizer issue discovered in
https://oss-fuzz.com/testcase-detail/4908118777266176 (it has not been
assigned an oss-fuzz bug number yet; coming soon)

A followup CL will limit array dimensionality to 8. This is an arbitrary
choice which is hopefully larger than any reasonable program will need.

Change-Id: I4cf05f40ec92c1c3444c71c45f759bb30d7da3c9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333135
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2020-11-10 15:58:47 +00:00
Chris Dalton
90ad0feef9 Add a mock implementation of GrMeshDrawOp::Target
Moves the "BenchmarkTarget" class from tessellation benchmarks into a
mock header where it can be reused by other tests and benchmarks.

Change-Id: I344d9ba3d391ff99e10c4ab238684b0b6ada87d0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333220
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2020-11-10 15:38:46 +00:00
Robert Phillips
cca1976560 Remove the bulk add-renderTasks entry point from the drawing manager
With the addition of the ddlTask this is no longer needed.

Change-Id: I39c60d2bbe3bc335146d51dc0b0ca8a45dc812f2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333463
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2020-11-10 15:13:06 +00:00
Kevin Lubick
a502878308 [canvaskit] Add support for woff2 fonts
Requested by Flutter. This adds about 80k of code size
due in large part to the brotli decoding logic.

This also updates the check_deps error to point at
a doc on how to create a new GOB mirror.

Brotli version is 1.0.9; the latest as of today.

Change-Id: I1580cb2189ff1205a9bffca3d887ff2b98a4042e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333218
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2020-11-10 15:07:26 +00:00
Mike Klein
fb5850f410 replace std::aligned_storage
There's no reason to use std::aligned_storage when it's simpler to use
an array and alignas().  This way you don't have to remember whether the
template arguments are size-then-align or align-then-size, you don't
have to remember to use the _t variant or typename ... ::type, and
there's no risk to forgetting the alignment parameter entirely.

It doesn't look like this was deprecated, but I still think this paper
makes good arguments for why we shouldn't use it:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1413r1.pdf

Bug: skia:10921
Change-Id: Ia64a2e43c4cba9b4d64138a7474e353a8eaf01a6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333258
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-11-10 14:47:36 +00:00
Robert Phillips
0c0884991d Update DDL testing harness to support drawing DDL w/ integer offsets
This isn't hooked up anywhere but breaks up the omnibus CL.

Change-Id: I15c200e57450e7cc8ee95a3f7969926d0eb8487f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333129
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2020-11-10 14:34:46 +00:00
John Stiles
e96c19e902 Add unit test demonstrating array function param bug.
A GLSL function like:
    void fn(int x[1][2][3]) {...}

Will emit SkSL with the array dimensions in reverse order:
    void fn(int x[3][2][1]) {...}

Trying to invoke the function will fail because it expects a reverse-
dimensioned array.

Change-Id: I24431aabd2f6111b5493f63f0a85f9c78514d522
Bug: skia:10924
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333317
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2020-11-10 14:04:36 +00:00
Tyler Denniston
b25caae788 [svg] Implement feComposite, basic filter result storage
- Plumbing to store filter results by id and resolve them as inputs
  when referenced
- Added implementation of feComposite filter
- Added call to resolve input in feColorMatrix
- Bugfix to SkSVGFilterType operator==

The tests filters-color-01-b and filters-composite-03-b should now be
passing.

Bug: skia:10841
Change-Id: I2cd099c60ac21710f25184806c5cc537656b42af
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332723
Commit-Queue: Tyler Denniston <tdenniston@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2020-11-10 14:00:56 +00:00
Robert Phillips
02dd0ed8ce Change UnrefDDLTask to just be the DDLTask
Change-Id: Ib5ff9f3f3d9cbc8860e3a2ba74e6da4355197662
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332600
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2020-11-10 13:37:46 +00:00
skia-autoroll
5b85989529 Roll ANGLE from d4439824c554 to 72001c7d85ba (15 revisions)
d4439824c5..72001c7d85

2020-11-10 m.maiya@samsung.com Vulkan: Bug fix in texture respecification code
2020-11-09 jmadill@chromium.org Vulkan: Move ExtensionNameList out of the class.
2020-11-09 jmadill@chromium.org Vulkan: Move primary command buffer to CommandQueue.
2020-11-09 jmadill@chromium.org Traces: Use 4 download threads.
2020-11-09 jmadill@chromium.org Perf Tests: Trace multiple threads.
2020-11-09 jmadill@chromium.org Vulkan: Make feature names consistent.
2020-11-09 syoussefi@chromium.org Fix expectations file for prerotation dEQP executables
2020-11-09 m.maiya@samsung.com Vulkan: Rewrite interpolateAtOffset to account for Y-flip
2020-11-09 jmadill@chromium.org Fix trace writing in angle_perftests.
2020-11-09 m.maiya@samsung.com Vulkan: Support VK_KHR_image_format_list for AHB backed EGL image
2020-11-09 stha09@googlemail.com Vulkan: add explicit template specialization for barrierImpl
2020-11-09 m.maiya@samsung.com Vulkan: Add EXT_external_buffer entry points
2020-11-09 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from 612ded0654a0 to 4ed9d3498dcf (2 revisions)
2020-11-09 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Vulkan-Headers from 87451c55aa8b to 670ffea9d61b (1 revision)
2020-11-09 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 52d33a46255e to 61aafe6377ea (506 revisions)

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 jlavrova@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Tbr: jlavrova@google.com
Test: Test: ImageTest.Source2DTarget2DTargetTextureRespecify*Test: Test: angle_end2end_tests.exe
Change-Id: I6aeb8fba50ede8532c96e174f9c194ca1caca325
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333281
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-11-10 04:58:18 +00:00
skia-autoroll
c2b8ecf26b Roll Dawn from 3e17e33724b4 to c04a0132be6c (3 revisions)
https://dawn.googlesource.com/dawn.git/+log/3e17e33724b4..c04a0132be6c

2020-11-09 cwallez@chromium.org Remove deprecated Device::CreateQueue.
2020-11-09 cwallez@chromium.org Remove deprecated names of texture formats.
2020-11-09 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll Tint from 8655b62207a5 to 7b750dc7337d (1 revision)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dawn-skia-autoroll
Please CC sarahmashay@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Debug-Dawn
Bug: None
Tbr: sarahmashay@google.com
Change-Id: Ia9545f9ff07ca84a36a0ec0bc3b87411a844e87e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333282
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-11-10 04:55:36 +00:00
Herb Derby
9c81e52171 use initial device coordinates as subrun positions
Originally, the positions had a bias of -initialOrigin,
so all that was needed was to add the new drawingOrigin
in. Store the actual device coordinates thus eliminating
the -initialOrigin, and calculate the origin offset
drawingOrigin - initialOrigin at vertex fill time.

Change-Id: I5a7fe0074f0c7fd01c5fe90a47e67509631379fe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333127
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2020-11-10 02:53:02 +00:00
Martin Vejdarski
cd2e148ea4 [skshaper] Fix CoreText segfault and convert UTF16 indices to UTF8
Bug: skia:10899
Bug: skia:10898
Bug: skia:10897

Change-Id: I0a9499b919e27c6fa01f1748b98ebcbcae2ed885
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332896
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2020-11-10 02:53:01 +00:00
Chris Dalton
f1aa6fc424 Fix GrPathUtils::convertLineToCubic
Change-Id: Ie096c9f0629102c5c6b2ca9ddfb8e5e2c31218f7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333145
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2020-11-10 02:47:57 +00:00
Brian Salomon
f143274cda Simplify promise image callbacks.
Remove done and release distinction. Chrome is not using either as
it tracks texture access using other synchronization mechanisms
(semaphores, flush finish procs). Now there is just fulfill and release
where release is called when the texture can be deleted. Also,
release proc can be null.

Simplify texture idle mechanism as the "flushed" state was only used to
implement the old idea of a release proc. The "finished" idle state is
still used to implement the new release proc. Though, it could also be
removed if GrTexture were to be removed for textures returned by fulfill.

Not directly tied to this bug, but a new YUVA factory will be required
and it's good to clean things up first to avoid adding another
instance of the current complexity.

Bug: skia:10632

Change-Id: I4fe3c0af3f5a591506b1b3c736fd3284a38465a6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/331836
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2020-11-10 02:47:56 +00:00
Mike Klein
c6acdab422 refactor Sk[S]TArray methods
Lots of this stuff can be delegated to each other,
cutting the protected SkTArray constructors to two.

Change-Id: Ie35b7a5ceb0ffef5a9548afccc546e076bd668cc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333256
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-11-09 22:28:48 +00:00
John Stiles
84d503b213 Report an SkSL error if an in var has an initializer expression.
This resolves the fuzzer error, as the program will fail compilation
before reaching the SPIR-V translation stage at all.

Change-Id: Ia73af497b1f57314a29878f2d2a29dc80186e630
Bug: oss-fuzz:27300
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333130
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2020-11-09 21:37:39 +00:00
Kevin Lubick
823b1537f7 [canvaskit] Add config key and manual mode to unit test harness.
Change-Id: Ic72f31ba7833c23f7baf4872d05671a7c3808e34
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333216
Reviewed-by: Chris Dalton <csmartdalton@google.com>
2020-11-09 21:12:39 +00:00
Mike Klein
339f0ee2a6 align SkAlignedSTStorage<N,T> to T
This decreases alignment for things like float
and increases alignment for things like __m128.

The other users of SkAlignedSStorage looked simple enough to port to
aligned char[].  I haven't changed either of their alignments---still
the old max(void*,double)---but we can now if we want.

All that together lets us delete SkAlignedSStorage.

Change-Id: I6b5957a26f42ad859de383054573fb58d5cd0576
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333196
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-11-09 19:51:55 +00:00
Jim Van Verth
ee1098db15 Update code-signing script to have better error messages.
Before the script would simply assert when it couldn't find valid
code-signing information. Now it spits out a message explaining
what's going wrong and a suggestion on how to fix it.

Change-Id: I81f64450702238f8a53ea0d7900e7de2d23b457b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333134
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2020-11-09 18:41:36 +00:00
Mike Klein
61b099bd62 re-enable tests on GCC (and Clang o_O)
Do these tests run ok once we init the SkSTArray storage first?

Cq-Include-Trybots: luci.skia.skia.primary:Test-Debian10-GCC-GCE-CPU-AVX2-x86-Debug-All-Docker,Test-Debian10-GCC-GCE-CPU-AVX2-x86-Release-All-Docker,Test-Debian10-GCC-GCE-CPU-AVX2-x86_64-Debug-All-Docker,Test-Debian10-GCC-GCE-CPU-AVX2-x86_64-Release-All-Docker
Change-Id: I5009b06ba16edf72692a58a9f2469fd38cefb2a6
Bug: skia:10891
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333147
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-11-09 18:20:49 +00:00
John Stiles
0ad52f6a24 Add unit test for fuzzer-detected error with in vars.
`in` vars shouldn't support initializer expressions at all. The fuzzer
noticed that dead-stripping interacts poorly with `in` var initializer
expressions, which makes sense because it's an unsupported and untested
path. In a followup CL, lines 1 and 3 will both become errors.

Change-Id: Ibb64ca319a046b040eea976acb6798a1402451de
Bug: oss-fuzz:27300
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333128
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2020-11-09 18:14:56 +00:00
Mike Klein
46f11c2aab init SkSTArray storage before passing to SkTArray
Using private inheritance is similar to having a class member,
except it's initialized before the next base class, SkTArray.
This lets us pass it to SkTArray's constructors.

I think we can make related changes (updating the various SkAlignedFoo,
not using them here, or not using them anywhere) independently.

... storage constructors made explicit at suggestion of GCC's -Wextra.
... now with explicit static_cast<STORAGE*>(this)

Change-Id: I665cf840e111da68f039416c9649ce328cc308d6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333146
Reviewed-by: John Stiles <johnstiles@google.com>
2020-11-09 18:13:57 +00:00
Ravi Mistry
5de0b38dd1 [bugs-central] Add documentation for sheriffs
Bug: skia:10783
Change-Id: Ib08cd1730fac3c971531ec4ee1e7be62cdab769e
No-Try: true
Docs-Preview: https://skia.org/?cl=333125
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333125
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Reviewed-by: Heather Miller <hcm@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
2020-11-09 15:42:26 +00:00
Kevin Lubick
2f30936d46 [canvaskit] Disable GrTextBlobMoveAround
Failing with RuntimeError: function signature mismatch

Bug: skia:10869
Change-Id: Ifd2f78362e2fd30b1c53be56a811551974e3cac3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333119
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2020-11-09 15:05:52 +00:00
Herb Derby
7d3886d66a rename Gr*Subrun to *Subrun in .cpp
Change-Id: If8ed057c230ca8d5291b65603f7196dbad897bcc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333120
Commit-Queue: Herb Derby <herb@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2020-11-09 15:00:53 +00:00
skia-autoroll
cffe7e631c Roll Chromium from a4f272b3a785 to 083976a7ea21 (536 revisions)
a4f272b3a7..083976a7ea

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/chromium-skia-autoroll
Please CC jlavrova@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Perf-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-CommandBuffer;skia/skia.primary:Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-CommandBuffer
Tbr: jlavrova@google.com
Change-Id: Ib1191669f272735b27ec9a908ea7a598b61529ed
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333060
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-11-09 05:53:17 +00:00
skia-autoroll
0780c2f6c1 Roll SwiftShader from 612ded0654a0 to 4ed9d3498dcf (2 revisions)
https://swiftshader.googlesource.com/SwiftShader.git/+log/612ded0654a0..4ed9d3498dcf

2020-11-06 vhau@google.com Modify gralloc0 implementation
2020-11-06 jaebaek@google.com SpirvShaderDebugger: Correct member index for DebugValue

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/swiftshader-skia-autoroll
Please CC jlavrova@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Test-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader
Bug: None
Tbr: jlavrova@google.com
Change-Id: I62616f3797a6bbf4baccdd4c3a3dd580e62b48cd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333057
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-11-09 04:52:37 +00:00
skia-autoroll
7683939fde Roll ANGLE from 3dfaeeb00271 to d4439824c554 (28 revisions)
3dfaeeb002..d4439824c5

2020-11-08 jmadill@chromium.org Gold Trace Tests: Fix JSON output with empty test set.
2020-11-07 jmadill@chromium.org Fix return value of cube map array imageStore.
2020-11-07 m.maiya@samsung.com Vulkan: Enable a subset of ImageTest colorspace tests
2020-11-07 ianelliott@google.com Enable logging API commands to Android logcat
2020-11-07 jmadill@chromium.org Add build flag to control runtime annotator checks.
2020-11-07 courtneygo@google.com Vulkan: Increase CommandBufferHelper pool size
2020-11-06 syoussefi@chromium.org Generate executables for prerotation deqp tests
2020-11-06 m.maiya@samsung.com Vulkan: Don't refresh image views unnecessarily
2020-11-06 jmadill@chromium.org GL: Compiler changes for GL_OES_texture_buffer
2020-11-06 courtneygo@google.com Vulkan: Allow Android properties to override features
2020-11-06 courtneygo@google.com Add GetEnvironmentVarOrUnCachedAndroidProperty
2020-11-06 jmadill@chromium.org Perf Tests: Fix test time with max steps performed.
2020-11-06 cnorthrop@google.com Tests: Add Clash of Clans trace
2020-11-06 geofflang@google.com Remove the amend commit from roll_aosp.sh
2020-11-06 cnorthrop@google.com Capture/Replay: Restore buffer bindings during Reset
2020-11-06 geofflang@google.com Always use the -f flag with rm in roll_aosp.sh
2020-11-06 jmadill@chromium.org Update DevSetup.
2020-11-06 amaiorano@google.com Re-enable GLES31 test that is no longer flaky
2020-11-06 jmadill@chromium.org Perf Tests: Add --max-steps-performed argument.
2020-11-06 geofflang@google.com Fix wrong working directory for roll_aosp.sh
2020-11-06 jmadill@chromium.org Symbol Table: Error on duplicate group keys.
2020-11-06 geofflang@google.com Check out depot_tools in roll_aosp.sh
2020-11-06 syoussefi@chromium.org Vulkan: Remove vertex attribute aliasing suppressions
2020-11-06 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SPIRV-Tools from c2b2b5788575 to a61d07a72763 (3 revisions)
2020-11-06 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from ad54c71632cc to 612ded0654a0 (4 revisions)
2020-11-06 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Vulkan-Tools from 51c1c5ab56d5 to bd0ebb680792 (1 revision)
2020-11-06 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 3c7580ad595f to 52d33a46255e (441 revisions)
2020-11-06 lexa.knyazev@gmail.com Metal: Fix typo in TextureMtl::bindToShader

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 jlavrova@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Tbr: jlavrova@google.com
Test: Test: Capture Clash of ClansTest: Test: angle_end2end_tests.exeTest: Test: angle_perftests --gtest_filter="*clash_of_clans*"
Change-Id: I3adcae0b0efcce3645534e3c1124d55e076d682e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333058
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-11-09 04:50:07 +00:00
skia-autoroll
ee0ce9858c Roll Dawn from 2b6b0f45ff05 to 3e17e33724b4 (6 revisions)
https://dawn.googlesource.com/dawn.git/+log/2b6b0f45ff05..3e17e33724b4

2020-11-07 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll Tint from cc2305dd9537 to 8655b62207a5 (4 revisions)
2020-11-06 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll Tint from 795bf4c71637 to cc2305dd9537 (1 revision)
2020-11-06 cwallez@chromium.org Use IsSubset in more places.
2020-11-06 cwallez@chromium.org SwapChainVK: Handle transform, imageCount, alphaMode.
2020-11-06 kainino@chromium.org Add WGPU_STRIDE_UNDEFINED and update bytesPerRow/rowsPerImage validation
2020-11-06 cwallez@chromium.org Make dawn_platform a component.

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dawn-skia-autoroll
Please CC cwallez@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Debug-Dawn
Bug: None
Tbr: cwallez@google.com
Change-Id: I1d3aeea8ea0e294d20fb732fd123fc20d52ce035
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333059
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-11-09 04:40:47 +00:00
skia-recreate-skps
cfe647c02f Update SKP version
Automatic commit by the RecreateSKPs bot.

TBR=rmistry@google.com
NO_MERGE_BUILDS

Change-Id: Ibe905c63c05bd7927f3eedb02c7b9586bcf33459
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332960
Reviewed-by: <skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com>
Commit-Queue: <skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com>
2020-11-08 08:40:16 +00:00
Martin Vejdarski
ed435953df Fix issues with latest GN
Change-Id: I9490479242a025fa1f5ff84a556ae43d8de4c19a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332897
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2020-11-07 13:55:45 +00:00
Adlai Holler
c2bfcff072 Use SkSpan to cut out some noise when flushing surfaces
Once I noticed this, I had to go for it.

Change-Id: Ibd720e8b731298ab716eab8409c6fe05417c12b5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332721
Commit-Queue: Adlai Holler <adlai@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2020-11-06 21:19:54 +00:00
Chris Dalton
86d4cfdf8e Revert "Update GrTriangulator to count curves"
This reverts commit 8e2b69440a.

Bug: chromium:1075428
Change-Id: I0be8570193783981a995265d0446db219bc73a87
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/330576
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2020-11-06 20:47:44 +00:00
Adlai Holler
d7b59c091d Have DDLs honor the reduceOpsTaskSplittingFlag
Especially while I'm fiddling with the implementation, we don't
want the user to be surprised when using DDLs also triggers
this other codepath.

Bug: skia:10877
Change-Id: I660ea08189fff45acd7a45df12e15c45f607758a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332720
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Auto-Submit: Adlai Holler <adlai@google.com>
2020-11-06 20:20:44 +00:00
Herb Derby
e886b8e8b1 move concrete subruns to .cpp
In addition, place all the subruns, and helpers in
an anonymous namespace. Add helper has_some_antialiasing.

Change-Id: Iee7dc24f7e568e2bace03ee00c1c98dbf3050634
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332744
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2020-11-06 19:49:14 +00:00
Julia Lavrova
1d1c5c1a18 Yet another workaround Thai \n problem (same as txtlib)
Bug: skia:10881

Change-Id: If451b662646e66e5d699ca0cca3795f5e078b84e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332257
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
2020-11-06 19:33:39 +00:00
Florin Malita
8c42567377 [svg] Convert most presentation attributes to new style parsing
Change-Id: Ib430ce05f7e336ae82a51ee45194338e90d77c58
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332751
Commit-Queue: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Tyler Denniston <tdenniston@google.com>
2020-11-06 19:29:54 +00:00
Brian Osman
b06301ee12 Reland "Rearrange SkSL pre-include modules to hide things"
This reverts commit 4cb5c5e172, and fixes
the Chromium issue by declaring sign(x) in sksl_public.sksl.

Original description:

This makes numerous internal and GLSL types or intrinsics hidden from
public (runtime effect) SkSL. In particular:

- Only core numeric types are visible to all program types. GLSL types
  involving images, textures, and sampling are restricted to internal use.
- sk_Caps is no longer visible to runtime effects.
- The set of intrinsics available to runtime effects is now a separate,
  curated list in sksl_public.sksl. It exactly matches the GLSL ES 1.00
  spec order.
- The blend intrinsics are no longer visible, which also fixes a bug.
  These are nice, but we're not going to offer them yet - they involve
  enums, which creates complications.

Bug: skia:10680
Bug: skia:10709
Bug: skia:10913

Cq-Include-Trybots: luci.chromium.try:linux-chromeos-rel,linux-rel
Change-Id: I42deeeccd725a9fe18314d091ce253404e3572e2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332750
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
2020-11-06 19:28:34 +00:00
Brian Osman
33316414c7 Allow public SkSL to return vec4 (aka float4)
We already allowed narrowing type conversions, so GLSL type aliases
could be used almost exclusively. This fixes the last spot that a
client would be forced to use half4 rather than vec4.

Bug: skia:10679
Change-Id: Ie9cfc161650b238678861b9b126ce586c229162d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332743
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
2020-11-06 19:11:44 +00:00