Go to file
Mike Reed f93d021680 remove allocs for colorfilters
For a modified bench, that installs colorfilterimagefilters and then draws a colored rect:
before:
  13/13  MB	18	1.66µs	1.67µs	1.67µs	1.73µs	1%	█▂▂▃▄▁▂▁▁▃	8888
after:
  13/13  MB	17	874ns	878ns	882ns	920ns	2%	█▁▂▂▁▂▂▁▁▁	8888


Some observations
- we can sometimes build several rasterpipelines in a single draw
    - filterColor4f (can be called more than once)
    - actual_blit
- imagefilter::affectsTransparentBlack
    - calls through to the colorfilter
    - this in-turn invokes filterColor4f, which makes a pipeline
    + if we had elimnated the imagefilter (for a colorfilter) sooner,
      we would not have called affectsTransparentBlack
    + adding a virtual to colorfilter for affectsTransparentBlack might
      also avoid having to call filterColor4f (at least for filters
      that know how to determine this simply)

For now however, increasing the arena's stack-budget seems to brush over
these other inefficiencies.

More observations
- we decide to use pipeline before we fold-away the colorfilter (w/ no shader)
   - the pipeline later notices this, and becomes just a color draw
   - if we had removed the colorfilter earlier, we would have taken a different
     (legacy, slightly faster) blitter (logically using memset).

Change-Id: I1a63414acbf23967c4d4daed9956bdc4d81148c6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/214682
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-05-20 14:23:46 +00:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bench remove SkLiteDL 2019-05-14 18:55:44 +00:00
bin SkQP: new docker test code 2019-04-19 18:50:03 +00:00
dm Switch over to using new direct allocation API in our tests (as much as possible at least) 2019-05-17 15:41:50 +00:00
docker Include wasm debugger in continuous build part 2 2019-04-01 19:51:43 +00:00
docs/examples Use SkTextEncoding enum instead of macros. 2019-05-07 20:54:16 +00:00
example Use SkTextEncoding enum instead of macros. 2019-05-07 20:54:16 +00:00
experimental Revert "Revert "Experimental SkVideoDecoder, to wrap calls to ffmpeg"" 2019-05-17 21:25:48 +00:00
fuzz Use SkFontHinting instead of macros. 2019-05-08 12:16:37 +00:00
gm Revert "Revert "Experimental SkVideoDecoder, to wrap calls to ffmpeg"" 2019-05-17 21:25:48 +00:00
gn Revert "remove SkMiniPicture and co." 2019-05-20 13:18:48 +00:00
include Revert "remove SkMiniPicture and co." 2019-05-20 13:18:48 +00:00
infra Roll recipe dependencies (trivial). 2019-05-20 13:16:06 +00:00
modules Particles + Interpreter: Bind particle's SkRandom to "rand" 2019-05-17 14:29:22 +00:00
platform_tools rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
resources Initial version of rescaling async readback API 2019-05-17 16:39:10 +00:00
samplecode Remove Nima from DEPS, experiments, Viewer, etc. 2019-05-16 17:02:11 +00:00
site rewrite docs to explicitly use python2 2019-05-13 19:21:47 +00:00
specs [img-decode] Start on proposed new spec 2019-05-06 17:39:19 +00:00
src remove allocs for colorfilters 2019-05-20 14:23:46 +00:00
tests support for SkSL interpreter external function calls 2019-05-20 13:49:56 +00:00
third_party Remove Nima from DEPS, experiments, Viewer, etc. 2019-05-16 17:02:11 +00:00
tools [Recreate SKPs bot] Fix failing web pages 2019-05-17 20:34:58 +00:00
.clang-format restore .clang-format 2019-03-21 15:52:32 +00:00
.clang-tidy add google-build-namespaces to clang-tidy checks 2018-12-12 16:33:59 +00:00
.gitignore clean up some .gitignores 2019-05-15 19:55:45 +00:00
.gn Basic standalone GN configs. 2016-07-21 12:25:45 -07:00
AUTHORS Fix use of 'is' operator for comparison 2019-05-07 14:22:15 +00:00
BUILD.gn Revert "Revert "Experimental SkVideoDecoder, to wrap calls to ffmpeg"" 2019-05-17 21:25:48 +00:00
codereview.settings Make uploading to Gerrit the default for Skia 2016-11-09 19:07:56 +00:00
CONTRIBUTING Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
CQ_COMMITTERS Moved committer list to chrome-infra-auth and deleted it from the repo 2015-09-02 13:37:54 -07:00
DEPS Roll third_party/externals/angle2 06de90c66c18..70958d15db70 (8 commits) 2019-05-20 05:34:25 +00:00
go.mod [infra] Pin infra code using Go modules 2019-05-06 17:53:19 +00:00
go.sum [infra] Pin infra code using Go modules 2019-05-06 17:53:19 +00:00
LICENSE BUG=skia:5602 2016-09-02 11:19:34 -07:00
OWNERS add OWNERS file 2017-12-01 19:50:19 +00:00
PRESUBMIT.py add mtklein to api approvals 2019-04-02 15:16:56 +00:00
public.bzl Revert "Revert "Experimental SkVideoDecoder, to wrap calls to ffmpeg"" 2019-05-17 21:25:48 +00:00
README Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
README.chromium Update README.chromium. 2015-06-11 13:19:24 -07:00
whitespace.txt Whitespace test 2019-05-18 13:05:29 +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.