Commit Graph

54066 Commits

Author SHA1 Message Date
John Stiles
2dda50dd50 Add return-value check to the function finalizer.
Rather than have the inliner own this responsibility, the function
finalizer now detects if a function is supposed to return a value but
never actually does. This will allow us to detect this error case even
if the inliner is disabled. The inliner should no longer encounter
functions that claim to return a value but don't, so it will now assert
if one is encountered. (The inliner still has the logic to handle this
case gracefully, just in case.)

The check is currently very simple and doesn't analyze the structure of
the function, so it won't report cases where some paths return a value
and others don't, e.g. this will pass the test:

    int func() { if (something()) return 123; }

(This is good enough to resolve the inliner issue, though, as it only
occurred in functions with no value-returns at all.)

Change-Id: I21f13daffe66c8f2e72932b320ee268ba9207bfa
Bug: oss-fuzz:31469, oss-fuzz:31525, skia:11377
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377196
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-03-03 16:29:22 +00:00
Brian Salomon
874b3fb3c5 Add more clarity to why we use GrWrapCacheable::kYes in AHWB generator.
Change-Id: Ica5542466ef8db1c72506edebd1360b27e65dab6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378779
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2021-03-03 16:15:51 +00:00
John Stiles
23521a8d69 Add Convert factory function to SkSL IRNodes.
SkSL IRNodes now have two different factory functions:

XxxxxStatement::Convert -- this is the equivalent of
    IRGenerator::convertXxxxx. Type coercion is fully supported. Errors
    are reported via ErrorReporter. Failure is handled gracefully by
    returning null.

XxxxxStatement::Make -- this is treated more like `new XxxxxStatement`
    but with optimizations applied. Types must already be correct.
    If the passed-in arguments don't make sense, errors are reported
    via SkASSERT. `Make` is always expected to return an IRNode--
    either exactly what was passed in, or an equivalent simpler form.

(In some rare exceptions, supporting Make was too difficult and is
not handled in this CL. Constructor was the biggest edge case; it
is extremely complicated [skia:11032], and supporting Make would require
duplicating most of its logic. It was too much copy-and-paste for me.)

Rationale for this change:

Originally, when the Inliner or Rehydrator would create an IRNode, it
would just allocate it via `new` or `make_unique` and take it as-is.
No error-checking, no optimization.

I decided to allow those callers to benefit from simple optimizations.
This meant porting logic from the IRGenerator (e.g. `convertIf`, which
removes empty branches) into widely available factory functions.
However, the Inliner and Rehydrator don't need the type coercion, and
we'd rather have them assert/succeed instead of getting a null and
crashing (in the unexpected case that recreating an IRNode causes an
error to be detected).

Change-Id: I6949328e904258a627106524ed4134b524e012b6
Bug: skia:11342
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377843
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2021-03-03 16:13:41 +00:00
Greg Daniel
2c760cc913 Add MakeTexture factory to GrVkAttachment.
This adds the factory, but it is not used anywhere.

Bug: skia:10727
Change-Id: I94379598a2fbf488a36d44f21921289f9bf02823
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378378
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2021-03-03 15:26:21 +00:00
Adlai Holler
ba52c9165d Make GPU image lazy size calculation thread-safe
We also don't talk to the GrGpuResource if its been assigned,
because other threads may be querying this proxy for its size.

Bug: skia:10286
Change-Id: Ifd4fb8ca796143c7264554b0812910c88e32dcdd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/376716
Auto-Submit: Adlai Holler <adlai@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2021-03-03 15:15:51 +00:00
Kevin Lubick
a1e30a3a28 [canvaskit] Update all demos to use full version from 0.25.0
Also add some explanation to the image_sampling demo.

Change-Id: Id20fe4d47c45b6a6b27e227871458bb862ec83d8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378936
Reviewed-by: Mike Reed <reed@google.com>
2021-03-03 14:38:35 +00:00
Herb Derby
9ad09829f5 encapsulate GrSDFTOptions better
The logic for picking what type of sub run to create is spread
over several locations. Gather that altogether in drawingType().

Have GrSDFT close over all the data needed to calculate the
drawing type. This reduces plumbing to the processGlyphRun
routine.

The next CL should rename GrSDFTOptions to GrSDFTControl.

Change-Id: I99e74c11af6d3b3d9919e54fe1e7286fcfbf1bfb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378036
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2021-03-03 14:27:32 +00:00
Mike Klein
158cab563f track flags in a map
I got to thinking that seeing flags like,

    out/fm --nonativeFonts -b cpu --nativeFonts -s ...

is kind of confusing, and I'm also trying to figure out
how to identify these runs to Gold.  I think the answer
to both might be to track a map[string]string for flags,
allowing overrides rather than just appending, and then
that flag map ends up being the identifying properties.

Change-Id: Ie5f80ee8b145c205edc768ae871eb70a3e1bc5b7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378355
Reviewed-by: Eric Boren <borenet@google.com>
2021-03-03 14:22:16 +00:00
Brian Salomon
6d25f9d068 Fix downsampled blur with clamp mode.
Ensure the extra border added to the downsampled image doesn't filter in
values from outside the source bounds.

Bug: chromium:1174354
Change-Id: I6c62eeaa57ce4e5341eab24985553f87ab0df666
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378322
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2021-03-03 14:15:31 +00:00
Adlai Holler
e1a728416c Enable reduceOpsTaskSplitting on select bots
This is a prep stage to get coverage of this option as we
move into Android code freeze.

This also removes the separate ReduceOpsTaskSplitting run from
the Pixel4XL. No need for it.

See skbug.com/10877#c27 for information.

Added this info to the Skia Gardener doc as advisory.

Bug: skia:10877
Change-Id: I69475f87b29aa125e285a8914015ac6a55e3390e
Cq-Include-Trybots: luci.skia.skia.primary:Test-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Debug-All-Android_Vulkan,Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_Vulkan_Skpbench,Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-All-Android,Perf-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-All-Android,Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android,Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android,Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Debug-All-Android,Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377856
Reviewed-by: Eric Boren <borenet@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Adlai Holler <adlai@google.com>
2021-03-03 13:58:31 +00:00
Brian Osman
acf26501fb Revert "Redesign program key construction"
This reverts commit bbbf1a7f50.

Reason for revert: D3D Failures

Original change's description:
> Redesign program key construction
>
> This does two things:
> 1) Moves responsibility for bit-packing portions of the key into the key
>    itself. A new GrKeyBuilder type manages adding bits, with asserts to
>    ensure a value always fits in the requested number. In theory this
>    will let us generate smaller keys overall, at the expense of slightly
>    more complex code during construction.
> 2) Adds a string label parameter for key methods that fold in data. For
>    new methods, the label is required. To ease migration, the old add32
>    does not require a label (yet). This will let us generate detailed,
>    human readable keys, either based on SK_DEBUG, or a runtime option
>    (if we're comfortable paying the cost).
>
> Bug: skia:11372
> Change-Id: Ib0f941551e0dbadabbd2a7de912b00e9e766b166
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377876
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

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

Change-Id: I7bfb20905c87083e84a1ea21bc53d63e882e2c68
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:11372
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378777
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-03-03 13:35:22 +00:00
skia-autoroll
73518c4ee9 Roll ANGLE from 6b6da203cce0 to 1de8b5a697e7 (8 revisions)
6b6da203cc..1de8b5a697

2021-03-02 cnorthrop@google.com Tests: Add Car Parking Multiplayer trace
2021-03-02 ynovikov@chromium.org Pull buildtools DEPS directly instead of via recursedeps
2021-03-02 cnorthrop@google.com Test: Add Standoff 2 trace
2021-03-02 j.vigil@samsung.com EGL: implement EGL_EXT_buffer_age
2021-03-02 lubosz.sarnecki@collabora.com capture_replay_tests: Fix MemoryObjectTest.
2021-03-02 lexa.knyazev@gmail.com Add Chrome Canary ANGLE injection steps
2021-03-02 jonahr@google.com VK: Suppress VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979
2021-03-02 cnorthrop@google.com Tests: Add Among Us trace

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 stani@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: stani@google.com
Test: Test: angle_deqp_egl_testsTest: Test: angle_end2end_test --gtest_filter=EGLBufferAgeTestTest: Test: angle_perftests --gtest_filter="*among_us*"Test: Test: angle_perftests --gtest_filter="*car_parking_multiplayer*"Test: Test: angle_perftests --gtest_filter="*standoff_2*"
Change-Id: Ibce215bdc5a0a5b704950acbc7ff5e874bde33ef
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378818
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-03-03 04:47:29 +00:00
skia-autoroll
c2525a2776 Roll Dawn from fbda46da44a0 to f9d75ead9e2d (4 revisions)
https://dawn.googlesource.com/dawn.git/+log/fbda46da44a0..f9d75ead9e2d

2021-03-02 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll Tint from 5cfd4f5a073e to e879143801a1 (1 revision)
2021-03-02 senorblanco@chromium.org Skip SNORM formats on unsupported platforms.
2021-03-02 rharrison@chromium.org Add missed level value to textureLoad
2021-03-02 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll Tint from 05d9bffdbda1 to 5cfd4f5a073e (7 revisions)

Also rolling transitive DEPS:
  https://dawn.googlesource.com/tint from 05d9bffdbda1 to e879143801a1

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 rharrison@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: rharrison@google.com
Change-Id: Iea578aed3f9d66c33b44d72185c6ec361d1ee9cf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378836
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-03-03 04:43:20 +00:00
Brian Osman
bbbf1a7f50 Redesign program key construction
This does two things:
1) Moves responsibility for bit-packing portions of the key into the key
   itself. A new GrKeyBuilder type manages adding bits, with asserts to
   ensure a value always fits in the requested number. In theory this
   will let us generate smaller keys overall, at the expense of slightly
   more complex code during construction.
2) Adds a string label parameter for key methods that fold in data. For
   new methods, the label is required. To ease migration, the old add32
   does not require a label (yet). This will let us generate detailed,
   human readable keys, either based on SK_DEBUG, or a runtime option
   (if we're comfortable paying the cost).

Bug: skia:11372
Change-Id: Ib0f941551e0dbadabbd2a7de912b00e9e766b166
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377876
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2021-03-02 23:46:48 +00:00
John Stiles
e80e169ba4 Add GetConstantValueForVariable to constant-folder.
This can be used in places which simplify an expression at IR generation
time. e.g. `const bool x = true; @if (x) {...}` could be evaluated at
compile time by calling GetConstantValueForVariable before checking for
a BoolLiteral and flattening the if. It is also used at the top of
ConstantFolder::Simplify to reduce either side of the binary
expression being simplified, in case it's a const variable.

We don't use a lot of const variables in our tests, but this does
improve the code generation in ConstVariableComparison.sksl
when constant-propagation is disabled: http://screen/gnWPhQG8Jc5cER9

Change-Id: I26309769cd16a6833b74b11a115b87c3dc312514
Bug: skia:11343
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378017
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-03-02 22:59:04 +00:00
Herb Derby
12e760e958 simplify check_integer_translate's API
Change-Id: I369ff838d0467b1447237c6721d4e380933f630b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378376
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2021-03-02 21:58:08 +00:00
Brian Osman
587efaeb15 Handle pipeline creation failure in Dawn
All other backends already have similar logic.

Change-Id: Idc8f1fe0839d5338f4832c04dd036accab20f156
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378457
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>
2021-03-02 21:56:48 +00:00
Greg Daniel
e0baf60910 Add Texture usage to GrAttachment.
This is not used anywhere yet, just starting to get the framework all
set up.

Bug: skia:10727
Change-Id: Ie321bb850e4c0eecd5e557b8a7828ee941ba7d2c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378377
Reviewed-by: Brian Salomon <bsalomon@google.com>
2021-03-02 21:56:42 +00:00
Ethan Nicholas
4113057c57 Fix use-after-free in SkSL DSL
Bug: skia:11384
Change-Id: I462295ce8eb42ca5270595bbd8714d70abf33441
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378319
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
2021-03-02 21:33:59 +00:00
John Stiles
46f4497cb6 Add const to SkSL layout keys.
This will allow @if statements to work properly with layout(key) values
even with control-flow analysis disabled.

Change-Id: Ib76b8c5553621815decda7fb0eefccb2c82df02b
Bug: skia:11319
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378416
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-03-02 20:52:24 +00:00
Mike Klein
bc4a36af7c add --race to FM
Try to uncover races by running parallel replicas.

The default --race 0 should keep FM working as before, but now with
--race ≥2 we'll actively try to race replicas, syncing between tests.
--race 1 is almost pointless, just changing the thread tests run on but
without any interesting concurrency.

Rearrange a bit how fm_driver decides what flags to pass to which
invocations of FM, so individual runs can easily override defaults (e.g.
--nativeFonts overriding the usual --nonativeFonts).  Use that here to
set --race 0 for unit tests; many unit tests are not reentrant.

Change-Id: Ida451626c093793b0805d3036beb185e7d54f27e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/376761
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2021-03-02 20:43:05 +00:00
Julia Lavrova
b7b9a23281 Treat control codepoints as resolved
The correct solution will be implemented to fix bug 11380.
https://bugs.chromium.org/p/skia/issues/detail?id=11380

Bug: skia:11370
Change-Id: I15a84e2e785d73a298558e5ef0dedcc69f7b6eef
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/376936
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
2021-03-02 20:38:48 +00:00
Jim Van Verth
35906e0115 Store push constants setting in persistent cache.
When generating the SkSL for a given shader we've already made some
decisions about whether to use push constants or not. However, the
SkSL->SPIR-V generator needs to know this in case it adds a uniform
(namely RTHeight).

Change-Id: Id8767924fff4e01227aca5f6fd6f8d5386e357bc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378321
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-03-02 19:29:07 +00:00
Mike Klein
6cac02f5c7 add missing failStep()
If a re-run fails today, that leaf exec.Run() step will fail, and its
grandparent (representing a giant bunch of sources and a set of flags)
fails, and the whole great-grandparent task fails, but the exec.Run()'s
parent (a small batch of those sources) stays green.

Here's a before-this-CL example:
https://task-driver.skia.org/td/y2nmMwJAyuK2kmCNGtrk?ifNotFound=https%3A%2F%2Fchromium-swarm.appspot.com%2Ftask%3Fid%3D520ccdac1ff16010

Here's one where the failures propagate up right, I think:
https://task-driver.skia.org/td/Gb2Pta6M2bZAJpQYvRXO?ifNotFound=https%3A%2F%2Fchromium-swarm.appspot.com%2Ftask%3Fid%3D520cfbaeb2f06010

I don't suspect anything's wrong beyond bookkeeping.

Change-Id: Ib138f62f6663bbba1804ccafb28756f8c4c4d3ea
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378401
Reviewed-by: Eric Boren <borenet@google.com>
2021-03-02 19:17:28 +00:00
Mike Klein
a9e62e893b add flags for clipping to FM
tabl_mozilla.skp is uselessly large without a clip.

Change-Id: I6e8ab8c31e790b6629be01e6eeb2e8d60c6ff56f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378360
Reviewed-by: Brian Osman <brianosman@google.com>
2021-03-02 19:06:24 +00:00
John Stiles
786d42c6da Improve comments for Analysis::IsSelfAssignment.
Change-Id: I34353769f4c65bdfa7205d460671a78f3463a5f2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378317
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-03-02 18:05:03 +00:00
Nathaniel Nifong
036ba86489 Enable dithering in more situations by using raster pipeline
https://b.corp.google.com/issues/178474583

For a CPU backend, SkBlitter now tries to choose RasterPipelineBlitter
when the paint has isDither=true, because that blitter is better at dithering
than LinearGradient4fContext.

guarded by SK_USE_RASTER_PIPEPLINE_BLITTER_FOR_DITHER which will
be set on android.

Change-Id: I5201dc7243d80cfee822d775c673593d119f0b5b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/372557
Commit-Queue: Nathaniel Nifong <nifong@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2021-03-02 16:56:23 +00:00
Brian Osman
dc4f8cd7ea Add early_fragment_tests layout qualifier to SkSL
Bug: skia:11356
Change-Id: I16322e6396dc7e7c8c50ba1d39e07311cf3bd346
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/376116
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
2021-03-02 16:45:03 +00:00
Mike Klein
db8340f15f scope AutoreleasePool tightly
We think this has the same effect as written right?

I'm looking ahead to a mode of FM where each round
of this loop might run in a different thread, and
I think there we'd want to give each its own pool?

Change-Id: I8f4e215fb2f96f4fe433d15f8654445200fdca5d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377896
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2021-03-02 16:25:53 +00:00
Florin Malita
d863ae52d4 [skottie] Fractal noise 'fractal type' support
In addition to various filter modes, ADBE Fractal Noise also supports
a "fractal type" option which controls a post-filter function.

This CL implements support for 4 types:

  - basic:            f(N) = N
  - turbulent basic:  f(N) = abs(N - 0.5)*2
  - turbulent smooth: f(N) = (abs(N - 0.5)*2)^2
  - turbulent sharp:  f(N) = sqrt(abs(N - 0.5)*2)

Change-Id: I4067a414272cbe1c20e1e46d8a46e3bc51d93af0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377841
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
2021-03-02 15:50:32 +00:00
Jorge Betancourt
00f1276a7e [SkottieView] call onAnimationEnd listeners after finished repeating
Change-Id: Ia01469b4cec68c781353ff2d5c80d120b19223fc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377861
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2021-03-02 15:35:03 +00:00
Mike Reed
2d2c4f0af3 Interactive toy for custom image sampling
Change-Id: I116d0fbe5556e77606a1a08de33351156a4fa3bf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/370938
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2021-03-02 14:41:59 +00:00
Brian Osman
c7206ccb30 Revert "Reland "Reland "export SkRuntimeShaderBuilder"""
This reverts commit 2960b6a62c.

Reason for revert: Android is invoking copy constructor.

Original change's description:
> Reland "Reland "export SkRuntimeShaderBuilder""
>
> This is a reland of a950fef9db
> ... with copy/move ctors/operators deleted for Clang warning.
>
> Original change's description:
> > Reland "export SkRuntimeShaderBuilder"
> >
> > This is a reland of f1a937f141
> >
> > Original change's description:
> > > export SkRuntimeShaderBuilder
> > >
> > > ... like we do SkRuntimeEffect.
> > >
> > > Change-Id: I024f1716b2f818d24b002213c02fa83d2b271123
> > > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377757
> > > Commit-Queue: Mike Klein <mtklein@google.com>
> > > Commit-Queue: Brian Osman <brianosman@google.com>
> > > Auto-Submit: Mike Klein <mtklein@google.com>
> > > Reviewed-by: Brian Osman <brianosman@google.com>
> >
> > Cq-Include-Trybots: luci.skia.skia.primary:Build-Win-MSVC-x86_64-Release-Shared
> > Change-Id: I82c440be4ea53e21c6c3d2b6999d832f71563d83
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377859
> > Reviewed-by: Brian Osman <brianosman@google.com>
> > Commit-Queue: Mike Klein <mtklein@google.com>
>
> Change-Id: I29aaa84b6ff995b4226f2b9b34a94f4d2e9964dd
> Cq-Include-Trybots: luci.skia.skia.primary:Build-Win-MSVC-x86_64-Release-Shared,Build-Win-Clang-x86_64-Release-Shared
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377867
> Reviewed-by: Mike Klein <mtklein@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

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

Change-Id: Iba51d1823bbee084c6a9055d7f41b09786b5418e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Cq-Include-Trybots: luci.skia.skia.primary:Build-Win-MSVC-x86_64-Release-Shared
Cq-Include-Trybots: luci.skia.skia.primary:Build-Win-Clang-x86_64-Release-Shared
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378316
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-03-02 14:33:14 +00:00
John Stiles
232b4ce888 Allow ForLoopIsValidForES2 to run before creating a ForStatement.
Conceptually, ForLoopIsValidForES2 is meant to prevent the creation of
an invalid ForStatement, so ideally, we shouldn't need to actually
allocate the ForStatement to check its correctness. This change will
be more meaningful in a followup CL where correctness tests are factored
away from object creation more strongly.

Change-Id: I0d924f741d86f4e157543d801abf4c45d0849dd8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377838
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2021-03-02 14:14:52 +00:00
Kevin Lubick
0676317b1f [canvaskit] Deploy 0.25.0
Change-Id: I1af79766e6e781b8190a3aa266fc7e8eb7d1b0df
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378256
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2021-03-02 12:45:42 +00:00
skia-autoroll
e32ace76ec Roll ANGLE from a6d4623970ed to 6b6da203cce0 (9 revisions)
a6d4623970..6b6da203cc

2021-03-02 penghuang@chromium.org Include a Makefile which contains some useful command lines
2021-03-02 cnorthrop@google.com Tests: Use context version from trace
2021-03-01 angle-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 3ca55e802f5b to 64e40ae7572f (14 revisions)
2021-03-01 ianelliott@google.com Vulkan: Always write to swapchain alpha channel
2021-03-01 gert.wollny@collabora.com build: Add -Wdeprecated-copy to the C++ build flags
2021-03-01 ynovikov@chromium.org Suppress UNINSTANTIATED_PARAMETERIZED_TEST failures on Win AMD
2021-03-01 gert.wollny@collabora.com libANGLE: Declare copy operator if copy constructor is defined
2021-03-01 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from 349abccec8f7 to 106e01583a3a (2 revisions)
2021-03-01 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 61aec087e2f8 to 2a5fa9108962 (430 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 stani@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: stani@google.com
Test: Test: Capture and replay ES 3.2 appsTest: Test: ClearTest.ChangeFramebufferAttachmentFromRGBAtoRGBTest: Test: dEQP-GLES2.functional.fbo.render.stencil_clear.tex2d_rgb_stencil_index8
Change-Id: I21399415e6b854a68f23bafb7aadf931d63550c3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378062
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-03-02 04:58:32 +00:00
skia-autoroll
d29e500ece Roll Dawn from 60d6d0acd6e2 to fbda46da44a0 (7 revisions)
https://dawn.googlesource.com/dawn.git/+log/60d6d0acd6e2..fbda46da44a0

2021-03-02 shaobo.yan@intel.com Refactor CopyTextureForBrowserTests to use compute shader
2021-03-02 jiawei.shao@intel.com D3D12: Clear texture with RecordCopyBufferToTextureFromTextureCopySplit
2021-03-02 bryan.bernhart@intel.com D3D12: Fix ASSERT for external image tests
2021-03-01 rharrison@chromium.org Add level value to textureLoad
2021-03-01 stha09@googlemail.com IWYU: add missing type_traits for std::is_unsigned
2021-03-01 senorblanco@chromium.org Roll third_party/angle/ f4cd17472..0e11e49d1 (443 commits; 2 trivial rolls)
2021-03-01 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll Tint from e5c105d40a49 to 05d9bffdbda1 (5 revisions)

Also rolling transitive DEPS:
  https://dawn.googlesource.com/tint from e5c105d40a49 to 05d9bffdbda1

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 rharrison@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: rharrison@google.com
Change-Id: I975ab44cbde07b97ddb5ea20791b4e8f4daaa0d7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378061
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-03-02 04:55:02 +00:00
John Stiles
67808983c6 Remove reliance on constant propagation from Ellipse effect.
Being able to copy an sk_Caps bit into a boolean with a nicer name is
helpful, but it relies on the optimizer. Using the sk_Caps value
directly will work even if the optimizer is off.

Change-Id: I3d976f13c435cf471ab764917f78d27dacbf331c
Bug: skia:11378
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377842
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2021-03-01 23:33:32 +00:00
Mike Klein
2960b6a62c Reland "Reland "export SkRuntimeShaderBuilder""
This is a reland of a950fef9db
... with copy/move ctors/operators deleted for Clang warning.

Original change's description:
> Reland "export SkRuntimeShaderBuilder"
>
> This is a reland of f1a937f141
>
> Original change's description:
> > export SkRuntimeShaderBuilder
> >
> > ... like we do SkRuntimeEffect.
> >
> > Change-Id: I024f1716b2f818d24b002213c02fa83d2b271123
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377757
> > Commit-Queue: Mike Klein <mtklein@google.com>
> > Commit-Queue: Brian Osman <brianosman@google.com>
> > Auto-Submit: Mike Klein <mtklein@google.com>
> > Reviewed-by: Brian Osman <brianosman@google.com>
>
> Cq-Include-Trybots: luci.skia.skia.primary:Build-Win-MSVC-x86_64-Release-Shared
> Change-Id: I82c440be4ea53e21c6c3d2b6999d832f71563d83
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377859
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

Change-Id: I29aaa84b6ff995b4226f2b9b34a94f4d2e9964dd
Cq-Include-Trybots: luci.skia.skia.primary:Build-Win-MSVC-x86_64-Release-Shared,Build-Win-Clang-x86_64-Release-Shared
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377867
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2021-03-01 23:27:42 +00:00
John Stiles
95d0badecf Support self-assignment elimination in the constant-folder.
Interestingly, this improves our codegen even with the optimizer fully
enabled, as apparently statement chains like:
	`x = true; x = x; x = x;`
were getting transformed by constant-propagation into:
	`x = true; x = true; x = true;`
making them no longer candidates for self-assignment elimination.

Change-Id: I6d94a809e94b01a00fd92459fcbce898b3cbbb11
Bug: skia:11343
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377100
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-03-01 22:46:01 +00:00
John Stiles
e2aec43cfc Convert IRGenerator::convertBinaryExpr to BinaryExpr::Make.
Interestingly, this reduces the size of our dehydated data
significantly, because we were storing the result type of the binary
expression explicitly. Now the result type is deduced automatically from
the left and right types by the Make call.

Change-Id: Ic6187a5c36774f5a4ed2ec579e9cd13b331832b5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377099
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-03-01 22:01:21 +00:00
Mike Klein
f1af57cf0a Revert "Reland "export SkRuntimeShaderBuilder""
This reverts commit a950fef9db.

Reason for revert: sigh, Build-Win-Clang-x86_64-Release-Shared too

Original change's description:
> Reland "export SkRuntimeShaderBuilder"
>
> This is a reland of f1a937f141
>
> Original change's description:
> > export SkRuntimeShaderBuilder
> >
> > ... like we do SkRuntimeEffect.
> >
> > Change-Id: I024f1716b2f818d24b002213c02fa83d2b271123
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377757
> > Commit-Queue: Mike Klein <mtklein@google.com>
> > Commit-Queue: Brian Osman <brianosman@google.com>
> > Auto-Submit: Mike Klein <mtklein@google.com>
> > Reviewed-by: Brian Osman <brianosman@google.com>
>
> Cq-Include-Trybots: luci.skia.skia.primary:Build-Win-MSVC-x86_64-Release-Shared
> Change-Id: I82c440be4ea53e21c6c3d2b6999d832f71563d83
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377859
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

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

Change-Id: Ia0f2da7a6761cad2020449d2d1be2f844f629f9c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Cq-Include-Trybots: luci.skia.skia.primary:Build-Win-MSVC-x86_64-Release-Shared
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377866
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2021-03-01 21:45:33 +00:00
Herb Derby
861ef8f7bc hoist origin translation out of the run loop
Change-Id: If5da3dd75b2632a688081fce7517d08a979a3f05
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/376850
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2021-03-01 21:07:31 +00:00
Mike Klein
9ca065e2fd fix races in dashcircle.cpp
Remove static from locals that are not constexpr.

See
https://task-driver.skia.org/logs/sMqS6sn7QDHLAJjHkSg7/65e8489b-9f04-4da5-bea4-d996dc0bb9ba

Change-Id: I2c1d75c8cd2866b500b0d33ac8a1b8cd9b9fb567
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377940
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2021-03-01 20:18:21 +00:00
John Stiles
0c2d14a1b9 Fix fuzzer-discovered error with inlining.
In http://review.skia.org/375776, an optimization was added to the
Inliner, causing it to skip generation of unnecessary temporary
variables. The fuzzer immediately discovered a flaw in this logic: the
"unnecessary" variable was actually used in the rare case that a
function failed to actually return a value. The inliner didn't detect
this case. Of course, this isn't a valid program either, so now we
report the error and cleanly fail.

Change-Id: I1f201cfd33f45cace3be93765a4e214e43a46e69
Bug: oss-fuzz:31469, oss-fuzz:31525
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377101
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2021-03-01 20:06:50 +00:00
Mike Klein
4636ac68de print only once per source in FM
This does mean we won't print the name of a failing source, but that
shouldn't be needed so much given how FM runs on the bots... should be
obvious what failed without it.

On the flip side, this means each log line will print out atomically,
which might be nice when reading through TSAN runs with async threads.

Change-Id: Ib971416f255e60ea6d900ea687abb8404d799dfd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377916
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2021-03-01 19:57:00 +00:00
Florin Malita
8e4031d1d1 [skottie] Initial fractal noise effect
Supported options:

  - noise type
  - complexity
  - evolution
  - sub influence
  - sub scaling
  - sub rotation
  - sub offset
  - random seed
  - rotation
  - uniform scaling
  - scale/scale width/scale height
  - offset

TBR=
Change-Id: Id54ace54ec2d474e6d016f51db68c8d4fd229a4c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/374676
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Florin Malita <fmalita@google.com>
2021-03-01 19:50:10 +00:00
Mike Klein
c5582317b3 make SkExecutor::GetDefault() a little threadsafe
We note SetDefault() isn't threadsafe, but don't mention anything about
GetDefault().  So it feels like it ought to be thread safe.

But it's not threadsafe as-is, since it writes to gDefaultExecutor.
With tiny tweaks we can make it instead only read gDefaultExecutor.

Change-Id: If229afda3d0bfb4fe491137fd2fc2226d0eafafa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377918
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2021-03-01 19:49:31 +00:00
Mike Klein
a950fef9db Reland "export SkRuntimeShaderBuilder"
This is a reland of f1a937f141

Original change's description:
> export SkRuntimeShaderBuilder
>
> ... like we do SkRuntimeEffect.
>
> Change-Id: I024f1716b2f818d24b002213c02fa83d2b271123
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377757
> Commit-Queue: Mike Klein <mtklein@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>
> Auto-Submit: Mike Klein <mtklein@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

Cq-Include-Trybots: luci.skia.skia.primary:Build-Win-MSVC-x86_64-Release-Shared
Change-Id: I82c440be4ea53e21c6c3d2b6999d832f71563d83
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377859
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2021-03-01 19:40:21 +00:00
Mike Klein
135500d33d Revert "export SkRuntimeShaderBuilder"
This reverts commit f1a937f141.

Reason for revert: Build-Win-*-x86_64-Release-Shared

Original change's description:
> export SkRuntimeShaderBuilder
>
> ... like we do SkRuntimeEffect.
>
> Change-Id: I024f1716b2f818d24b002213c02fa83d2b271123
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377757
> Commit-Queue: Mike Klein <mtklein@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>
> Auto-Submit: Mike Klein <mtklein@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

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

Change-Id: I594c123c5161102e8341033d7a62c4bb98ab3835
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377858
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2021-03-01 16:08:02 +00:00