Commit Graph

52003 Commits

Author SHA1 Message Date
John Stiles
bfce87b06e Fix fuzzing error with duplicate function definitions.
Without an early return, the inliner tries to inline a function inside
of itself, eating up gigabytes of memory before hitting its inline
threshold.

This normally wouldn't be possible because functions are meant to be
fully assembled before they're added to the list of ProgramElements, so
the inliner shouldn't find a function as a candidate to be inlined into
itself at all. However, the fuzzer found that an existing function
could be extended by re-declaring it; in this case, it is findable as
a ProgramElement and becomes inlinable.

Change-Id: I4c02a7b52e4b75151b75c94cb70dfadb8e4c9e6b
Bug: oss-fuzz:27442
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334556
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2020-11-13 21:50:40 +00:00
John Stiles
3e1b771ce4 Replace skslc worklist files with -- delimited command lines.
Command lines with delimiters are a simpler approach; they don't require
a scratch file to be created and parsed. (I didn't consider this
approach until after implementing worklists.)

This also fixes a minor issue with result codes when processing multiple
files at once; in particular, unit tests can ignore compile errors, but
regular fragment processor compilation should treat compile errors as
fatal and stop the build.

Change-Id: I3f153e7670d757c6b021bf60a260a2cd3f2090aa
Bug: skia:10919
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334428
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2020-11-13 21:27:20 +00:00
Florin Malita
ebbacd8a37 [skottie] Initial direction for text shaping
Extend text properties to allow specifying an initial direction.

Bug: skia:10946
Change-Id: Ia037aa060a4e2bb404cd50b0d6c8883ffe0ee38a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334677
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2020-11-13 20:57:03 +00:00
Mike Reed
cae335d5b1 Add temporary Make for SkSamplingOptions
To help stage clients away from SkFilterQuality

Change-Id: Icf9d192880caa16a82f9774cc99c97e096f8e678
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334162
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2020-11-13 20:12:53 +00:00
Herb Derby
0fc077e065 use SkMask::Format in SkGlyph and SkScalerContextRec
Change-Id: I673ddffa0c0e154476ef6d0e8213263327dbe014
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334429
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2020-11-13 19:51:13 +00:00
Brian Salomon
a29ed26cfc Remove unused copy-to-external YUV SkImage factories.
Also inline some helper functions into newer factory method
that are no longer shared.

Bug: skia:10632
Change-Id: I466c59f668d882802087acad1ec1f229505a3377
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334596
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2020-11-13 19:24:15 +00:00
Stan Iliev
e9783f22db Skottie perf metric improvements
Add 2 lottie files given by wearos.
Measure startup time.
Measure total time for 7 seconds starting from second frame.

Test: Ran tests on wearos and android.
Change-Id: I87ddcd116df0cd39df42636cca518a91c3be0329
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300044
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Stan Iliev <stani@google.com>
2020-11-13 19:03:15 +00:00
Leon Scroggins III
267a8589d3 Revert "SkAndroidCodec: Support decoding all frames"
This reverts commit fc4fdc5b25.

Reason for revert: Google3 and ASAN failures

Change-Id: I890cd76109c0375391637f879550837d01e650f9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334840
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2020-11-13 16:20:39 +00:00
Leon Scroggins
efd628a1a9 Revert "SkAnimatedImage: Use fSampleSize"
This reverts commit 4fdf9f9ce5.

Reason for revert: Google3 and ASAN failures caused by the prior
change, which this depends on.

Original change's description:
> SkAnimatedImage: Use fSampleSize
>
> Bug: b/163595585
>
> This will allow using less memory when decoding an animated GIF by
> sampling at decode time. This is tested by the animated_image GMs.
>
> Change-Id: I748b2180827623e4ca1fc0fd4d6dd02733b3b5f2
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333226
> Commit-Queue: Leon Scroggins <scroggo@google.com>
> Reviewed-by: Derek Sollenberger <djsollen@google.com>

TBR=djsollen@google.com,scroggo@google.com

Change-Id: I0d30ada4eba2302ce0c5f85b1174d0618ae0f589
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: b/163595585
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334839
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2020-11-13 15:28:00 +00:00
John Stiles
586df9556c Simplify the ModifiersPool class.
Rather than adding unique Modifiers to a vector and then returning
vector indices as opaque Handle objects, we can instead add them to an
unordered_set and return back the address of the object inside the set.
This removes a lot of complexity and saves an indirection.

STL unordered_sets guarantee pointer stability, so this is safe:
https://en.cppreference.com/w/cpp/container/unordered_set/insert
"If rehashing occurs due to the insertion, all iterators are
invalidated. Otherwise iterators are not affected. References are not
invalidated."

Change-Id: I580cad12b3711d490baab417affb8895f7fa18e7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334598
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2020-11-13 14:05:09 +00:00
Heather Miller
011218edb5 add M88 release notes
Bug: skia:
Change-Id: Ic6934a5317c886b06f6d8ab739404254952c1f31
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334557
Reviewed-by: Heather Miller <hcm@google.com>
Commit-Queue: Heather Miller <hcm@google.com>
2020-11-13 07:47:01 +00:00
skia-autoroll
49c0cf9417 Roll ANGLE from 47b3db22be33 to 9eff98952674 (36 revisions)
47b3db22be..9eff989526

2020-11-13 syoussefi@chromium.org Sensible default for --emulated-pre-rotation on rotated targets
2020-11-13 syoussefi@chromium.org Faster stack traces on Linux
2020-11-13 syoussefi@chromium.org Vulkan: Fix incorrect reordering of barriers
2020-11-13 jmadill@chromium.org Vulkan: Move device queue management to CommandQueue.
2020-11-13 jmadill@chromium.org Vulkan: Merge async command queue features.
2020-11-13 jmadill@chromium.org Vulkan: Move CommandBuffer management to RendererVk.
2020-11-13 jmadill@chromium.org Vulkan: Merge CommandQueue and TaskProcessor.
2020-11-13 syoussefi@chromium.org Fix texture buffer validation w.r.t to non-existing buffer
2020-11-13 jmadill@chromium.org Vulkan: Align CommandQueue and TaskProcessor.
2020-11-13 timvp@google.com Vulkan: Suppress VkSubpassDescriptionDepthStencilResolve
2020-11-12 cclao@google.com Vulkan: Let RewriteInterpolateAtOffset use FlipRotateSpecConst
2020-11-12 jmadill@chromium.org Vulkan: Align submit and serial management code.
2020-11-12 jmadill@chromium.org Vulkan: Remove queue/device wait idle in favor of finish().
2020-11-12 timvp@google.com Vulkan: Skip copy_tex_image_conversions.* on Pixel 2
2020-11-12 cclao@google.com Reland "Vulkan: Let shader use rotation specialized constant"
2020-11-12 cclao@google.com Vulkan: Factor out DriverUniform code to tree_utils/DriverUniform.cpp
2020-11-12 jmadill@chromium.org Vulkan: Remove in-flight commands lock in TaskProcessor.
2020-11-12 jmadill@chromium.org Vulkan: Move vk::CommandQueue to RendererVk.
2020-11-12 m.maiya@samsung.com Vulkan: Disable OES_shader_multisample_interpolation
2020-11-12 jmadill@chromium.org Perf Tests: Add mutex around trace events.
2020-11-12 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Vulkan-Loader from f635feea18cb to e2b55419a370 (1 revision)
2020-11-12 timvp@google.com Revert "Suppress RenderbufferBlitFramebufferTest"
2020-11-12 timvp@google.com Revert "Suppress Additional MultisampledRenderToTextureES3Test"
2020-11-12 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SPIRV-Tools from a61d07a72763 to 1cda495274bb (1 revision)
2020-11-12 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from ca966cfbaa65 to a927c079f7db (518 revisions)
2020-11-12 jmadill@chromium.org Tests: Fix async queue feature comparision.
2020-11-11 timvp@google.com Suppress BestPractices-vkCreateDevice-specialuse-extension
2020-11-11 timvp@google.com Suppress Additional MultisampledRenderToTextureES3Test
2020-11-11 m.maiya@samsung.com Vulkan: Support VK_KHR_image_format_list for PbufferSurfaces
2020-11-11 timvp@google.com Suppress RenderbufferBlitFramebufferTest
2020-11-11 timvp@google.com Suppress VulkanPerformanceCounterTest::DepthStencilTextureClearAndLoad
2020-11-11 jmadill@chromium.org Improve stack backtraces on Linux.
2020-11-11 jmadill@chromium.org Vulkan: Enable async feature in end2end_tests.
2020-11-11 timvp@google.com Revert "Vulkan: Let shader use rotation specialized constant"
2020-11-11 jmadill@chromium.org Revert "Created test and fixed texture storage bug in d3d11"
2020-11-11 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 902580740a6e to ca966cfbaa65 (459 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: MultisampledRenderToTextureES3Test.RenderbufferBlitFramebufferTestTest: Test: PbufferTest.ClearAndBindTexImageSrgb*VulkanTest: Test: VulkanPerformanceCounterTest.DepthStencilTextureClearAndLoadTest: Test: dEQP.KHR_GLES31/core_texture_buffer_texture_buffer_errors
Change-Id: Iae725a028a0500f87532d53d8803e8f5c847c74e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334660
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-11-13 05:23:48 +00:00
skia-autoroll
9a2cb05e60 Roll Chromium from 2cd5dabd7743 to 3fae529574ca (1029 revisions)
2cd5dabd77..3fae529574

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: Iee1ac934a286375cc648578e85893761a4530bd8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334662
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-11-13 05:05:38 +00:00
skia-autoroll
cad292843d Roll Dawn from f3c829047220 to b6f4d53126d3 (9 revisions)
https://dawn.googlesource.com/dawn.git/+log/f3c829047220..b6f4d53126d3

2020-11-13 brandon1.jones@intel.com Only Increment Serials When Necessary On D3D12
2020-11-13 enga@chromium.org dawn_wire: Protect against large allocations in ChunkedCommandHandler
2020-11-12 enga@chromium.org Rename DepthSamplingTests to DepthStencilSamplingTests
2020-11-12 rharrison@chromium.org Use remapped entry point name in D3D12
2020-11-12 enga@chromium.org dawn_wire: Reject new callbacks if the client is disconnected
2020-11-12 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll Tint from 0573714bfd0f to 1995ddf876ef (19 revisions)
2020-11-12 cwallez@chromium.org Move most of Ref's functionality in RefBase for reuse.
2020-11-11 enga@chromium.org Reject all callbacks with DeviceLost on wire client disconnect
2020-11-11 enga@chromium.org Track and destroy all child objects on wire client destruction

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: I32d58fcec0132f381d3322094e2f422cc373e361
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334661
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-11-13 04:51:18 +00:00
skia-autoroll
8ead30d51c Roll SwiftShader from 4804ac8724ff to e4c1a25cc679 (6 revisions)
https://swiftshader.googlesource.com/SwiftShader.git/+log/4804ac8724ff..e4c1a25cc679

2020-11-13 capn@google.com Use LLVM JIT for MemorySanitizer GN builds
2020-11-12 srisser@google.com Update vulkan headers to 1.2.160
2020-11-12 swiftshader.regress@gmail.com Regres: Update test lists @ 4804ac87
2020-11-12 zzyiwei@google.com Disable VK_KHR_external_memory_fd for Android build
2020-11-12 natsu@google.com Handle image properties from external device memory
2020-11-12 capn@google.com Fix conditionally enabling Reactor MSan instrumentation

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: Idc8c3fe541ba608e2adda43c4d7d4e3e54db4c3c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334659
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-11-13 04:47:18 +00:00
Nathaniel Nifong
a06b63c56e Deprecate some debugger bindings in favor of ones that better serve the lit html debugger
The deprecated ones can be removed when the polymer debugger is gone.

Change-Id: I351f1c691d7a95fea594c7e001f9b16c15d216a9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334160
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Nathaniel Nifong <nifong@google.com>
2020-11-12 23:01:56 +00:00
Leon Scroggins
4fdf9f9ce5 SkAnimatedImage: Use fSampleSize
Bug: b/163595585

This will allow using less memory when decoding an animated GIF by
sampling at decode time. This is tested by the animated_image GMs.

Change-Id: I748b2180827623e4ca1fc0fd4d6dd02733b3b5f2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333226
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2020-11-12 22:30:51 +00:00
Leon Scroggins
fc4fdc5b25 SkAndroidCodec: Support decoding all frames
Bug: b/160984428
Bug: b/163595585

Add support to SkAndroidCodec for decoding all frames with an
fSampleSize, so that an entire animation can be decoded to a smaller
size.

dm/:
- Test scaled + animated decodes

SkAndroidCodec:
- Make AndroidOptions inherit from SkCodec::Options. This allows
  SkAndroidCodec to use fFrameIndex. (It also combines the two versions
  of fSubset, which is now const for both.)
- Respect fFrameIndex, and call SkCodec::handleFrameIndex to decode
  the required frame.
- Disallow decoding with kRespect + fFrameIndex > 0 if there is a
  non-default orientation. As currently written (except without
  disabling this combination), SkPixmapPriv::Orient would draw the new
  portion of the frame on top of uninitialized pixels, instead of the
  prior frame. This could be fixed by
  - If SkAndroidCodec needs to decode the required frame, it could do so
    without applying the orientation, then decode fFrameIndex, and then
    apply the orientation.
  - If the client provided the required frame, SkAndroidCodec would need
    to un-apply the orientation to get the proper starting state, then
    decode and apply.
  I think it is simpler to force the client to handle the orientation
  externally.

SkCodec:
- Allow SkAndroidCodec to call its private method handleFrameIndex. This
  method handles decoding a required frame, if necessary. When called by
  SkAndroidCodec, it now uses the SkAndroidCodec to check for/decode the
  required frame, so that it will scale properly.
- Call rewindIfNeeded inside handleFrameIndex. handleFrameIndex calls a
  virtual method which may set some state (e.g. in SkJpegCodec). Without
  this change, that state would be reset by rewindIfNeeded.
- Simplify handling a kRestoreBGColor frame. Whether provided or not,
  take the same path to calling zero_rect.
- Updates to zero_rect:
  - Intersect after scaling, which will also check for empty.
  - Round out instead of in - this ensures we don't under-erase
  - Use kFill_ScaleToFit, which better matches the intent.

Change-Id: Ibe1951980a0dca8f5b7b1f20192432d395681683
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333225
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2020-11-12 21:31:41 +00:00
Jim Van Verth
351c9b53d6 Switch to using GrMtlBackendContext for GrDirectContext creation.
Makes the Metal backend more consistent with the other backends,
and allows new init parameters to be added without significantly
changing API.

Added updated sk_cf_obj because I needed some of its functionality.

Bug: skia:10804
Change-Id: I6f1dd1c03ddc4c4b702ea75eff14bc0f98ab5ad2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334426
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2020-11-12 21:03:51 +00:00
Leon Scroggins
afdbd9d75d SkAnimatedImage: Reject invalid crops
A crop is invalid if it is empty/unsorted or does not intersect with
the image. Android (the only known client of the cropping API) will not
pass such a rectangle to the API, but this prevents other clients from
passing an invalid rectangle.

Change-Id: I09e007ecd378c358a1c604aff518035090f1e0a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333224
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2020-11-12 20:24:21 +00:00
Herb Derby
7a1928ff43 make constexpr variants for SkCLZ/SkCLT and similar functions
Make a parallel constexpr set of functions for bit log and power
functions. These are labeled as *_portable.

Change-Id: I40cca37eb3e75c496638d8b58d622467dd692b27
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333657
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2020-11-12 19:55:21 +00:00
Leon Scroggins
7d1153fc4c Handle EXIF orientation in SkAnimatedImage
Bug: skia:10914
Bug: b/163595585

In a WebP image, it is possible to combine animation with an EXIF
orientation. While SkAndroidCodec attempts to handle orientation itself
by decoding into temporary memory and then drawing through a matrix,
this doesn't work directly when compositing a P-frame into a prior
frame. SkAnimatedImage already uses an SkMatrix to handle cropping and
scaling, so update that matrix to include the orientation.

Make SkAnimatedImage a friend of SkAndroidCodec. This allows the former
to have the same ExifOrientationBehavior specified by the latter, and to
recreate the latter so it does not try to handle the orientation itself.

Clip SkAnimatedImage to its bounds. Android's AnimatedImageDrawable
performs its own clip, but this makes a crop rect work for other
clients.

Update getCurrentFrame to take cropping, scaling, and orientation into
account. This method is used by CanvasKit, which does not use cropping
or scaling, but will now properly orient an animation with an EXIF
orientation.

Add a GM that exercises the various combinations of ways SkAnimatedImage
can be used:
- via newPictureSnapshot (as in Android) versus getCurrentFrame
- scaling down to a dimension that can be output from the
  SkAndroidCodec, versus up, which SkAnimatedImage scales
- with a crop rect
- with a post processor

Change-Id: If1854e9aea23fc4afddf75d39132b38e3fbc6071
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333223
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2020-11-12 19:47:59 +00:00
Florin Malita
4ad2cca236 [skottie] Fix font style parsing
1) avoid partial matches (e.g. "Extra" vs. "ExtraLight")

2) weight/slant are space-separated (e.g. "ExtraLight Italic")

Change-Id: Id2db44d8b4a32b97674ec7490992974135b39ae9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334164
Commit-Queue: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2020-11-12 18:36:49 +00:00
Herb Derby
4168981bb0 don't use MASK_FORMAT_UNKNOWN to represent scaler context state
MASK_FORMAT_UNKNOWN was shared state between glyphs, and
SkScalerContext making hard to reason about.

Change-Id: Ifb70bcc288bc46905de5f2c32891c940a0b2a11f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334157
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2020-11-12 18:10:50 +00:00
Mike Klein
7ac2be2020 Reland "add ERMS (enhanced rep mov/sto) SkOpts slice"
This is a reland of 26ad8ccdec
... now with MSAN support.

Original change's description:
> add ERMS (enhanced rep mov/sto) SkOpts slice
>
> Intel's got two CPUID bits indicating the speed of rep mov/sto
> (memcpy/memset),
>
>     - ERMS, Enhanced Rep Mov/Sto, older, large copies are fast?
>     - FSRM, Fast Short Rep Mov, newer, small copies are fast?
>
> ERMS has been around a long time on Intel, but is relatively recent on
> Ryzen, and FSRM is new across the board.  The startup cost for
> ERMS-but-not-FSRM copies really is noticeable, so we cut over to the
> previous SSE/AVX routines when N is small.
>
> I've left the memset benchmarks as I found them most useful when
> tuning the small/large cutoff in this CL.
>
> Change-Id: I3ac4e3f34796aba0ea86aabbe9dda7526919456a
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332580
> Reviewed-by: Herb Derby <herb@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

Cq-Include-Trybots: luci.skia.skia.primary:Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Release-All-MSAN
Change-Id: Ia293bba90022c48c884599331ef35aa67644729b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334343
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2020-11-12 18:00:39 +00:00
Brian Osman
8f6d4d369c Test & implement exponential intrinsics
Bug: skia:10913
Change-Id: Id9f2b14ca7443b3375036d588849bc9a20d76e40
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334156
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2020-11-12 17:50:19 +00:00
Mike Reed
db0b9980fb mark bitmap immutable in bench
So we don't incidentally measure the cost of the copy

Change-Id: I6f7e2119792423b0857764b3b557a9f838bb43fb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334423
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2020-11-12 17:35:50 +00:00
Brian Osman
24000785e5 Implement two-argument atan in public SkSL, improve GM
This completes all of the "Angle and Trigonometry Functions"
Made the graphs larger in the GM, and laid them out to make better use
of space. Also changed how the shaders are assembled to support
two-argument functions (at least partially).

Bug: skia:10913
Change-Id: I3ae6288f76fb9b3200c843595b065a6afbf92230
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334416
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2020-11-12 17:22:39 +00:00
John Stiles
ba06e1ae5d Improve performance of skia_compile_processors.
Previously, we would instantiate skslc twice, and clang-format once, for
each fragment processor. We now batch all the work into a single
invocation of each tool--skslc is called once with a worklist file, and
clang-format is asked to clean all the generated files at once. This
will improve build times very substantially on Windows, and should
provide a small benefit on Mac/Linux as well.

Change-Id: I97ac1f22bf19298dfac1c02e1a28a106cfc8491d
Bug: skia:10919
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334420
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-12 17:20:09 +00:00
Heather Miller
c6e3881888 Update Skia milestone to 89
Change-Id: I9de827fe1902a9a91898fcf70d82153a821500ee
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334418
Reviewed-by: Heather Miller <hcm@google.com>
Commit-Queue: Heather Miller <hcm@google.com>
2020-11-12 16:50:19 +00:00
Martin Stjernholm
b4382ced88 Remove windows:enabled from skia_deps
skia_deps are inherited by libhwui, so this previously enabled building
libhwui on Windows. But this would require a libnativehelper variant on
Windows. Disable the libhwui Windows build until then.

Reenable windows builds for libskia and its tools (via skia_tool_deps).

Add a comment describing the proper way to update Android.bp.

Test: m
Test: mmm external/skia
Bug: b/172649321

Author: mast@google.com

Change-Id: I9b2dba455f25e4582bb359d660fbd78fe67da976
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334048
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Jerome Gaillard <jgaillard@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Martin Stjernholm <mast@google.com>
2020-11-12 16:26:48 +00:00
Mike Klein
a957ac999b support NDK r22 beta
I was curious to try r22 out today and it needed these small tweaks,
which should be compatible with r21d.  I'll hold off on the actual
upgrade until r22 is out of beta.

Builds using the NDK compilers (r21d or r22 both) don't even need the
remaining --sysroot flag, but keeping it lets GOMA builds using Chrome's
compilers keep working.

Change-Id: Ic30cb9e00fe91179ca219999a9f3131ace61f753
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334396
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-11-12 16:12:17 +00:00
Derek Sollenberger
0f3afa7e55 Revert "make quickReject treat empty rects and paths the same"
This reverts commit d986835a6c.

Reason for revert: breaking a CTS tests and stopping Android autoroller

Original change's description:
> make quickReject treat empty rects and paths the same
>
> Change-Id: Ie334a2f0aa354ea3b52f6143e2659fd74fdd6185
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334100
> Reviewed-by: Mike Klein <mtklein@google.com>
> Commit-Queue: Mike Reed <reed@google.com>

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

Change-Id: I7c296aa93089170c4bcd0968b2782809cab7efb0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334421
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Derek Sollenberger <djsollen@google.com>
2020-11-12 16:10:39 +00:00
Mike Klein
d32c57d742 Revert "add ERMS (enhanced rep mov/sto) SkOpts slice"
This reverts commit 26ad8ccdec.

Reason for revert: gonna need to teach MSAN about this to reland.

Original change's description:
> add ERMS (enhanced rep mov/sto) SkOpts slice
>
> Intel's got two CPUID bits indicating the speed of rep mov/sto
> (memcpy/memset),
>
>     - ERMS, Enhanced Rep Mov/Sto, older, large copies are fast?
>     - FSRM, Fast Short Rep Mov, newer, small copies are fast?
>
> ERMS has been around a long time on Intel, but is relatively recent on
> Ryzen, and FSRM is new across the board.  The startup cost for
> ERMS-but-not-FSRM copies really is noticeable, so we cut over to the
> previous SSE/AVX routines when N is small.
>
> I've left the memset benchmarks as I found them most useful when
> tuning the small/large cutoff in this CL.
>
> Change-Id: I3ac4e3f34796aba0ea86aabbe9dda7526919456a
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332580
> Reviewed-by: Herb Derby <herb@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

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

Change-Id: I3264af132272dbbaac8fc8b62e139a6a112bbadb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334342
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-11-12 15:48:38 +00:00
Kevin Lubick
83bbd7c0ad [canvaskit] Roll to 0.20.0
Change-Id: I5025a5ca8deca45dfe3e222e3bf4b6f047416eb4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334419
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-11-12 15:48:12 +00:00
Adlai Holler
33432272d6 Remove intermediary RenderTaskDAG class
This thing is a leaky abstraction ("rawRemove" fn) and it doesn't
actually do much encapsulation. Almost all the code is just views into
the underlying array and wrappers that could be replaced by

std::algorithm routines (and in this CL, are). It's more trouble than
it's worth – maybe in the past that wasn't so.
Change-Id: I81f3aa6874525f8f2ed1315f50e084030e34865e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332718
Commit-Queue: Adlai Holler <adlai@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2020-11-12 15:44:47 +00:00
Robert Phillips
80bfda87c8 Remove GrSurfaceContext::flush calls ...
... replacing them w/ calls to GrDirectContextPriv::flushSurface.

Since recording contexts can also possess surface- and renderTarget-
Contexts it is misleading for them to have a flush method.

Change-Id: I10f4fad12d4d5efdd999ba212fda9ce5cdd83130
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334068
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2020-11-12 15:33:07 +00:00
Julia Lavrova
c90084a9a3 Revert "Some testing images in Google3 look slightly different with this change. Need to change them, too."
This reverts commit b776a105e5.

Reason for revert: This will be the first step of a staged change.

Original change's description:
> Some testing images in Google3 look slightly different with this change. Need to change them, too.
>
> Revert "Roll back #10487 fix (so now spaces always resolved in the main font)"
>
> This reverts commit ff5d8700b3.
>
> Reason for revert: <INSERT REASONING HERE>
>
> Original change's description:
> > Roll back #10487 fix (so now spaces always resolved in the main font)
> >
> > Bug: skia:10715
> > Change-Id: I06bb881998d00228c79a218967eda6468cbc5bed
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334053
> > Reviewed-by: Ben Wagner <bungeman@google.com>
> > Commit-Queue: Julia Lavrova <jlavrova@google.com>
>
> TBR=bungeman@google.com,jlavrova@google.com
>
> Change-Id: Icc1f262f60fa2ec9b4425ce3088b5eaac9313374
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:10715
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334158
> Reviewed-by: Julia Lavrova <jlavrova@google.com>
> Commit-Queue: Julia Lavrova <jlavrova@google.com>

TBR=bungeman@google.com,jlavrova@google.com

Change-Id: I0f2f46fc21eec795026ea98696f68112915f7979
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10715
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334159
Commit-Queue: Julia Lavrova <jlavrova@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2020-11-12 15:32:48 +00:00
John Stiles
a1e8fe3a2b Update skslc to compile multiple files during one invocation.
skslc can now take a `.worklist` file as an input, containing multiple
"command lines" to run in sequence. compile_sksl_tests.py now assembles
a worklist file and runs skslc one time, rather than running skslc
once per each target. This improves compile times on Windows
significantly (where spawning skslc hundreds of times is much more
expensive than on Linux/Mac).

One subtle behavioral difference with .worklist files: if an error is
encountered, it is written to the output file instead of to stdout.
Previously, compile_sksl_tests was in charge of for capturing stdout
and overwriting the compiler output with the error message, but this
doesn't work when many files are being compiled (which errors are
associated with which files?)

This refactor exposed a minor latent bug--when encountering an error,
skslc would previously exit() immediately without closing its
FileOutputStream. This led to an assertion when exit() was replaced with
normal returns. Since FileOutputStream is only used by skslc, and in
every case the desired behavior is just to close the stream cleanly,
FileOutputStream now closes the file in its destructor instead of
asserting that we haven't done so.

Change-Id: Ia55baff0c11fe466923bde2e0c944df9f2ccd092
Bug: skia:10919
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334099
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2020-11-12 15:05:27 +00:00
Mike Klein
26ad8ccdec add ERMS (enhanced rep mov/sto) SkOpts slice
Intel's got two CPUID bits indicating the speed of rep mov/sto
(memcpy/memset),

    - ERMS, Enhanced Rep Mov/Sto, older, large copies are fast?
    - FSRM, Fast Short Rep Mov, newer, small copies are fast?

ERMS has been around a long time on Intel, but is relatively recent on
Ryzen, and FSRM is new across the board.  The startup cost for
ERMS-but-not-FSRM copies really is noticeable, so we cut over to the
previous SSE/AVX routines when N is small.

I've left the memset benchmarks as I found them most useful when
tuning the small/large cutoff in this CL.

Change-Id: I3ac4e3f34796aba0ea86aabbe9dda7526919456a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332580
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-11-12 15:05:07 +00:00
Mike Klein
bcf0bdadd0 add arm64 mac builders
These probably won't work yet,
but will remind us to get them working.

Change-Id: Id440b9afb680993aaeb2940749721018f86508b7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334059
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-11-12 14:59:47 +00:00
Kevin Lubick
6df5cd28db [canvaskit] Revert raster change.
Drawing to a Premul Raster Surface and then copying out Unpremul pixels
was 15x slower. Drawing to an Unpremul Raster surface was a little
slower than the previous RasterDirect surface.

Out of an abundance of caution, I'm going back to the way things were.
We can revisit drawing to a Raster surface in the future.

This also adds better error handling to the SkottieFrames test which
thankfully caught this regression.

Bug: skia:10717
Change-Id: Ib8b9d490c92e013c3311adb1d08de5fa0fc0351c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334356
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-11-12 14:49:47 +00:00
Leon Scroggins
bc098ef6d4 Handle EXIF orientation in SkAnimCodecPlayer
Bug: skia:10914

SkAnimCodecPlayer:
- Properly handle orientation, whether the image is still or not
- Mark const methods as const
- Fix seek() so that if you seek to the duration of frame 0, it will
  show frame 1
- Fix the SkImageInfo so if the first frame is opaque, but following
  frames are not, those frames can still be decoded

resources:
- Rename "webp-animated.webp" to "stoplight.webp", which better
  describes the animation
  - Update test files accordingly
- Add "stoplight_h.webp", which is the same animation with an EXIF
  that converts it to a horizontal stoplight

AnimCodecPlayer test:
- Test the new image files
- Verify SkAnimCodecPlayer::dimensions behaves as expected
- Remove extra debugging line
- Provide better error messages

AnimCodecPlayerExifGM:
- Add a new GM that shows all frames of the new animation with an EXIF
  orientation
- Add a new GM that shows all frames of an animation with an opaque
  first frame followed by frames with alpha

Change-Id: I43cf91c16d52aa1901eef8e13e1e644eea6058b3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332753
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2020-11-12 14:43:47 +00:00
skia-autoroll
c4ff4df250 Roll SwiftShader from 019feda602ec to 4804ac8724ff (9 revisions)
https://swiftshader.googlesource.com/SwiftShader.git/+log/019feda602ec..4804ac8724ff

2020-11-12 capn@google.com Implement MemorySanitizer instrumentation of Reactor routines
2020-11-11 nicolascapens@google.com Fix backslash interpreted as part of URL
2020-11-11 srisser@google.com Implement VK_KHR_shader_float_controls
2020-11-11 amaiorano@google.com Subzero: clang-format crosstest, pnacl-llvm, runtime, and unittest
2020-11-11 amaiorano@google.com Subzero: clang-format src
2020-11-11 capn@google.com Fix LLVM host triple for ORCv2 JIT
2020-11-11 srisser@google.com Add SPIR-V tools dependency to BUILD.gn files
2020-11-11 natsu@google.com Fix Android build
2020-11-11 amaiorano@google.com Add a unit test for bug fixed by swiftshader-cl/50008

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: I83da37c49f2632144ee9862f934562ee5f6f7be8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334268
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-11-12 14:37:47 +00:00
Kevin Lubick
43f0a7d724 [canvaskit] Fix the build
Change-Id: Ia3b3fa1183d5654bcfeab0bfd24ca04b8f622eed
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334166
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-11-12 13:07:46 +00:00
Kevin Lubick
59bafeeaa7 [canvaskit] Deprecate measureText
After discussion on https://skia-review.googlesource.com/c/skia/+/334096
we decided to remove this misleading API.

Bug: skia:10480
Change-Id: I3daeb6251d5fed829742cfe39c7cade4f19e5a43
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334101
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Nathaniel Nifong <nifong@google.com>
2020-11-11 22:49:10 +00:00
Kevin Lubick
15d7a38b04 [canvaskit] Use Raster instead of RasterDirect for Canvas2D surface
This also refactors some internal names to be more consistent
with the normal naming convention.

Bug: skia:10717
Change-Id: I69a0d95aaca359e121b3ff84002d0b5f7cadb260
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334041
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Nathaniel Nifong <nifong@google.com>
2020-11-11 22:48:53 +00:00
Brian Salomon
e4387382c2 Split SkYUVAInfo::PlanarConfig into PlaneConfig and Subsampling enums
Sometimes it's helpful to think about subsampling separately from
how the channels are spread across planes.

Bug: skia:10632
Change-Id: Ib03f71195f9706ef6def418b1f2125c29e0cf738
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334102
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2020-11-11 22:42:36 +00:00
Leon Scroggins
70eba23828 Remove SkAnimatedImage::dimensions
The only caller is CanvasKit, and SkAnimatedImage already has getBounds
(from SkDrawable) which does the same thing, except it returns
SkScalars. It also takes scaling and cropping into account, which
CanvasKit does not use, and in a future commit, it will consider
orientation. Switch CanvasKit to use getBounds.

Change-Id: Ia956f91d241641aec450f3aba99583e95a3ff386
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333222
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-11-11 21:48:15 +00:00
Leon Scroggins
398fbed736 Remove unused SkAnimatedImage factory
This version was used before we added the version with an SkImageInfo
parameter to handle the SkColorSpace. That version supports all use
cases supported by this old one.

Change-Id: I966cfc83ac34d4951283eaf9e81febb032f461cf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333221
Commit-Queue: Leon Scroggins <scroggo@google.com>
Auto-Submit: Leon Scroggins <scroggo@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2020-11-11 21:29:05 +00:00