Go to file
Michael Ludwig 887ac49f9e Always use AutoLayerForImageFilter
This definitely simplifies the drawing code, but always copies the input
SkPaint so that it can be modified if necessary. If we get perf hits, we
can just revert this. We could keep it using a copy-on-write, but with
this change, I believe we've removed the majority of instances of
SkCopyOnWrite<SkPaint> inside SkCanvas. There's just one LatticePaint
struct that's overly complex for what it does that I can clean up next.

A middle ground would be to keep the copy-on-write behavior, but drop
the branch on image-filter. Given the lack of perf needle movement on
some of the other simplifications that avoided technically unnecessary
paint copies, I doubt it's worth the complexity.

As part of this change, since the draw calls no longer branch based on
the presence of an image filter, the AutoLayerForImageFilter takes over
calling predrawNotify() in its various forms. We don't have to follow
through with that, if we'd rather have the notification be called out
explicitly within the draw call itself. I've found it easy to forget to
call predrawNotify(), or keep it in the right place while updating draws
so I may be biased.

Bug: skia:10987
Change-Id: I5204c175aae691f82cc45f3d9a04ef64dee5d80f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/342920
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2020-12-15 15:38:19 +00:00
animations
bazel bazel baby steps 2020-09-14 15:18:32 +00:00
bench how to use SkArenaAlloc with no friends 2020-12-15 01:23:18 +00:00
bin bin/try: automatically set 'git cl issue' when not found 2020-06-25 17:44:01 +00:00
build/fuchsia [fuchsia] Fix fidlc command. 2020-06-10 03:29:24 +00:00
build_overrides Port to ANGLE's GN files 2020-09-11 15:22:34 +00:00
client_utils/android Replace 'typedef xxxxx INHERITED' with 'using INHERITED = xxxx;'. 2020-09-03 03:41:26 +00:00
demos.skia.org [canvaskit] Remove Sk from nearly all function/type names. 2020-10-07 21:01:32 +00:00
dm Reland "SkAndroidCodec: Support decoding all frames" 2020-11-16 16:55:48 +00:00
docker [canvaskit,pathkit] Update to emsdk 2.0 2020-08-20 14:55:50 +00:00
docs/examples Use samplingoptions for bitmap shader 2020-12-12 17:08:11 +00:00
example Reland "Remove use of legacy display globals." 2020-10-05 19:13:58 +00:00
experimental Spelling and capitalization fixes from GitHub PRs 2020-12-10 18:40:09 +00:00
fuzz Bitmap should use sampling options 2020-12-12 15:36:21 +00:00
gm Revert "Add integer relational ops to sksl_public." 2020-12-15 15:07:31 +00:00
gn Reland "Reland "Reland "Revert "Initial land of SkSL DSL."""" 2020-12-11 20:45:13 +00:00
include Always use AutoLayerForImageFilter 2020-12-15 15:38:19 +00:00
infra [infra] Use Mac10.15.7 and xcode 12.2 for CommandBuffer builds. 2020-12-14 19:57:27 +00:00
modules Get CanvasKit viewer compiling again 2020-12-15 01:10:48 +00:00
platform_tools clean playback methods and constructors in SkottieView 2020-12-10 16:29:38 +00:00
resources [skottie] Add text colorization GM 2020-12-10 17:10:48 +00:00
samplecode Replace more instances of sk_OutColor with explicit returns. 2020-12-15 15:14:09 +00:00
site Spelling and capitalization fixes from GitHub PRs 2020-12-10 18:40:09 +00:00
specs Fix CanvasKit generated documentation to work with emscripten 1.39.16. 2020-05-27 12:23:32 +00:00
src Always use AutoLayerForImageFilter 2020-12-15 15:38:19 +00:00
tests Replace more instances of sk_OutColor with explicit returns. 2020-12-15 15:14:09 +00:00
third_party implement SkAudioPLayer for Android 2020-12-15 00:12:48 +00:00
tools Separate the playback and recording characterizations in the DDLTileHelper 2020-12-14 17:49:43 +00:00
.bazelignore bazel baby steps 2020-09-14 15:18:32 +00:00
.clang-format Disable BinPackParameters in .clang-format 2020-03-27 14:32:40 +00:00
.clang-tidy Disable ClangTidy namespace comments for short blocks. 2020-08-24 14:01:22 +00:00
.gitignore bazel baby steps 2020-09-14 15:18:32 +00:00
.gn
AUTHORS Fix issues with latest GN 2020-11-07 13:55:45 +00:00
BUILD.bazel bazel baby steps 2020-09-14 15:18:32 +00:00
BUILD.gn implement SkAudioPLayer for Android 2020-12-15 00:12:48 +00:00
codereview.settings
CONTRIBUTING
CQ_COMMITTERS
DEPS Roll Chromium from 2c493e0e0782 to 7d81a2685bc7 (9278 revisions) 2020-12-15 05:35:09 +00:00
go.mod Update buildbot repo to deploy debugger changes 2020-12-11 16:16:10 +00:00
go.sum Update buildbot repo to deploy debugger changes 2020-12-11 16:16:10 +00:00
LICENSE
OWNERS
PRESUBMIT.py Revert "Reland "[infra] Switch from isolate to RBE-CAS"" 2020-12-09 18:09:39 +00:00
public.bzl remove SK_BUILD_NO_OPTS 2020-12-08 19:44:02 +00:00
README
README.chromium
RELEASE_NOTES.txt Remove SkImage::MakeFromYUVATexturesCopyToExternal 2020-12-09 14:50:19 +00:00
whitespace.txt Whitespace change to re-trigger Mac/iOS tests 2020-02-23 20:55:01 +00:00
WORKSPACE.bazel bazel baby steps 2020-09-14 15:18:32 +00:00

Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

See full details, and build instructions, at https://skia.org.