Go to file
Michael Ludwig 379e4961fd Merge consecutive entries that share proxy in bulk texture op
Previously, a batch draw that reused the same proxy consecutively
would create a ViewCountPair for each set entry, with its count == 1.
This turned into 1 draw per entry, so although there'd still be a single
pipeline, it didn't take advantage of merging those consecutive entries
into a larger draw to reduce draw count as well.

Initially, the thinking for the batch API was that it was for tilers
that used unique images for each tile or render pass. However, Chrome's
compositor is also responsible for rendering 9 patches as part of the UI.
These appear as 9 consecutive entries in the image set that all refer to
the same texture. With this CL the texture op will automatically merge
such occurrences into one ViewCountPair with a count of 9.

The bulkrect_1000_[grid|random]_sharedimage_batch leverages this case.
Before this CL its op would hold 1000 view count pairs that each drew
one quad. Now its op will hold 1 view count pair with a count of 1000.
On my linux workstation, the bulkrect_1000_grid_sharedimage_batch time
went from 377us to 206us. For reference, the _ref variant (which already
was a 1 view count pair with ct == 1000 due to merging of each op) has
a time of 497us. The difference between 497us and 206us represents the
overhead of calling through SkCanvas, op creation, quad optimization
analysis 1000x.

Interestingly the bulkrect_1000_random_sharedimage_batch benchmark did not
change on my workstation. My conjecture is that it is bottlenecked by
overdraw of the many overlapping rectangles.

Change-Id: Icc4195de0bcb2219f424fdaa79728281c0418558
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/258418
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-12-06 18:49:35 +00:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bench Pull creation of GrPipeline explicitly into the Ops' onExecute methods 2019-12-06 16:33:15 +00:00
bin [infra] Fix bin/try 2019-11-15 19:44:04 +00:00
build/fuchsia Notes on how to build SKQP for Fuchsia. 2019-12-04 15:14:14 +00:00
build_overrides Update Dawn backend to ToT. This is about 3 months of changes. 2019-10-15 22:26:38 +00:00
dm Remove SkSize& SkSize::operator=(const SkISize&) 2019-12-04 17:36:06 +00:00
docker Fix usage of depot_tools in containers. 2019-10-14 19:38:40 +00:00
docs/examples Revert "Revert "switch to new filltype for SkPath"" 2019-11-26 17:43:14 +00:00
example Revert "Revert "switch to new filltype for SkPath"" 2019-11-26 17:43:14 +00:00
experimental experimental/skottie_ios: fix some objc errors 2019-12-04 20:35:19 +00:00
fuzz Revert "Revert "switch to new filltype for SkPath"" 2019-11-26 17:43:14 +00:00
gm Pull creation of GrPipeline explicitly into the Ops' onExecute methods 2019-12-06 16:33:15 +00:00
gn WS: reorder GrTextBlob struct and move all methods to .cpp 2019-12-06 17:46:05 +00:00
include Add storage of programInfos to GrRecordingContext and SkDDL 2019-12-06 18:34:05 +00:00
infra Roll recipe dependencies (trivial). 2019-12-05 20:51:33 +00:00
modules Get baselines from cached default metrics if the text is empty 2019-12-06 18:36:55 +00:00
platform_tools [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
resources [skottie] Fix precomposed camera sizing 2019-12-05 14:34:15 +00:00
samplecode fix make_path to not care about param-eval-order 2019-12-05 23:05:11 +00:00
site Update release notes files 2019-12-05 21:10:49 +00:00
specs [img-decode] Start on proposed new spec 2019-05-06 17:39:19 +00:00
src Merge consecutive entries that share proxy in bulk texture op 2019-12-06 18:49:35 +00:00
tests Merge consecutive entries that share proxy in bulk texture op 2019-12-06 18:49:35 +00:00
third_party Roll skia/third_party/skcms 68d3f3a95f1b..ef3043bd8110 (1 commits) 2019-11-25 14:52:45 +00:00
tools Pull creation of GrPipeline explicitly into the Ops' onExecute methods 2019-12-06 16:33:15 +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 Issue- >Skia tiled bitmap rendering is too slow when tildmodeX is not same as tileModeY. 2019-11-14 20:52:18 +00:00
BUILD.gn Reland "Replace CGFontCreate with CTFontManagerCreate." 2019-11-27 19:42:13 +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 ../src a25cc4cdcd47..36a639fc2d93 (535 commits) 2019-12-06 04:42:46 +00:00
go.mod [infra] Use "mod download" and "install", not "get" in chrome_release_branch 2019-12-06 11:16:41 +00:00
go.sum [infra] Use "mod download" and "install", not "get" in chrome_release_branch 2019-12-06 11:16:41 +00:00
LICENSE LICENSE file: clean up 2019-11-22 21:59:03 +00:00
OWNERS add OWNERS file 2017-12-01 19:50:19 +00:00
PRESUBMIT.py Use urllib_request instead of urllib2 in PRESUBMIT. 2019-10-22 20:30:56 +00:00
public.bzl Copy SkottieUtils' classes into skresources 2019-11-26 14:25:44 +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
RELEASE_NOTES.txt Update release notes files 2019-12-05 21:10:49 +00: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.