Go to file
Greg Daniel 1a2326363a Only store resources in the GrResourceCache::fScratchMap that are available to be scratch.
Currently when we create a scratch resource, we immediately add it to
scratch map and it will stay there until we delete the resource. The one
exception to this is adding a unique key will remove a resource from
the scratch map. This means there are resources in the scratch map that
can't be returned when looking for a scratch because they are either
already in use by something else or their budget was changed to
unbudgeted. This means everything time we do a scratch lookup, even
after finding the list of resources that match a key, we still have to
iterate that list to see if we can use that resource or not.

The problem comes when we may have lots of resources that all match the
same key (think 1000s of identical buffers). Then the cost of iterating
this list starts to get very high.

This change makes it so only resources that can actively be used as a
scratch at that moment are stored in the scratch map. Thus when we find
a scratch resource we pull it out of the scratch map. When that resources
refs go back to zero it is added back to the scratch map. Similar removal
is also now used for changing a resource to and from budgeted.

Change-Id: I52b415d0e035dfc589f3d712be85799a56827bf0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/367976
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2021-02-08 20:16:44 +00:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bazel bazel baby steps 2020-09-14 15:18:32 +00:00
bench introduce a subrun linked list 2021-02-05 20:48:34 +00:00
bin pull arm64 binary on arm64 Mac/Linux 2021-01-15 19:00:46 +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 [particles] Fix up URLs for the particles migration. 2021-01-25 20:44:32 +00:00
dm Reland "[svg] Plumb a ResourceProvider" 2021-01-27 21:12:23 +00:00
docker [docker] Fix build by pointing to correct path 2021-01-22 17:34:56 +00:00
docs/examples Guard legacy matrixtransforms, and expose new one 2021-02-01 22:10:39 +00:00
example Reland "Remove use of legacy display globals." 2020-10-05 19:13:58 +00:00
experimental [particles] Fix up URLs for the particles migration. 2021-01-25 20:44:32 +00:00
fuzz Detach pipeline-stage generator from SkSL compiler 2021-02-06 16:25:32 +00:00
gm Hide (unused) SkDrawLooper 2021-02-07 12:49:53 +00:00
gn Add a writer class for indirect draw commands 2021-02-08 19:13:42 +00:00
include Add a writer class for indirect draw commands 2021-02-08 19:13:42 +00:00
infra Update SKP version 2021-02-07 10:37:23 +00:00
modules [svg] Support preserveAspectRatio for images 2021-02-05 15:59:10 +00:00
platform_tools [SkottieView] handle calls to setSource after first animation initialization 2021-01-21 23:41:28 +00:00
resources Add additional cases to folding tests. 2021-02-08 16:17:18 +00:00
samplecode Rename GrPathStencilFillOp -> GrTessellatingStencilFillOp 2021-01-28 13:51:17 +00:00
site Update Skia Gardener Docs 2021-02-05 21:12:56 +00:00
specs Fix CanvasKit generated documentation to work with emscripten 1.39.16. 2020-05-27 12:23:32 +00:00
src Only store resources in the GrResourceCache::fScratchMap that are available to be scratch. 2021-02-08 20:16:44 +00:00
tests Only store resources in the GrResourceCache::fScratchMap that are available to be scratch. 2021-02-08 20:16:44 +00:00
third_party NEON libjpeg-turbo on iOS and Mac 2021-02-02 22:07:54 +00:00
tools rerun only what makes unknown hashes 2021-02-04 10:22:52 +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 Update gitignore for goma win_toolchain 2021-02-01 17:25:52 +00:00
.gn Pre-emptive fix for upcoming ANGLE change. 2021-01-08 17:23:52 +00:00
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 [fuzzing] Add SkParagraph to oss-fuzz. 2021-02-04 19:34: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 Chromium from e94d2f0da382 to 3842e9ea8162 (629 revisions) 2021-02-08 06:20:33 +00:00
DIR_METADATA Move metadata in OWNERS files to DIR_METADATA files 2021-02-02 23:41:54 +00:00
go.mod Update go.skia.org/infra in go.mod/go.sum 2020-12-21 20:31:07 +00:00
go.sum Update go.skia.org/infra in go.mod/go.sum 2020-12-21 20:31:07 +00:00
LICENSE LICENSE file: clean up 2019-11-22 21:59:03 +00:00
PRESUBMIT.py reland: make brianosman a public API owner 2021-02-03 20:27:17 +00:00
public.bzl Round unresolved font blocks to grapheme edges 2021-01-27 15:39:09 +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 Reland "Remove deprecated SkImageFilter::MakeMatrixFilter" 2021-02-04 21:17:58 +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.