Go to file
Brian Salomon 0de475e29e Use a table for dither effect rather than math.
We used to use integer math on sk_FragCoord, when supported, and a
fallback using floating point (on a 4x4 rather than 8x8 grid). Now we
precompute a 8x8 table in a texture because it was shown to be
significantly faster on several devices. Test was done with the following
running in viewer with the stats layer enabled and looking at total
frame time:
 SkRandom r;
 for (int i = 0; i < N; ++i) {
     SkColor c[2] = {r.nextU(), c[1] = r.nextU()};
     SkPoint pts[2] = {{r.nextRangeScalar(0, 500), r.nextRangeScalar(0, 500)},
                       {r.nextRangeScalar(0, 500), r.nextRangeScalar(0, 500)}};
     SkPaint p;
     p.setDither(true);
     p.setShader(SkGradientShader::MakeLinear(pts, c, nullptr, 2, SkTileMode::kRepeat));
     canvas->drawPaint(p);
 }

Device            GPU             N      no dither    int math dither   table dither
Linux desktop     QuadroP1000     5000   304ms        400ms (1.31x)     383ms (1.26x)
TecnoSpark3Pro    PowerVRGE8320   200    299ms        820ms (2.74x)     592ms (1.98x)
Pixel 4           Adreno640       500    110ms        221ms (2.01x)     214ms (1.95x)
Galaxy S20 FE     Mali-G77 MP11   600    165ms        360ms (2.18x)     260ms (1.58x)


Bug: b/195281495
Change-Id: I200a2be8e450ab66f7c8ae340a5c83ec6780db09
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437239
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2021-08-06 18:56:45 +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 Fix Wunused-but-set-variable warnings 2021-08-05 21:49:18 +00:00
bin Fix fetch-sk on Windows 2021-08-02 22:12:12 +00:00
build/fuchsia [fuchsia] Fix fidlc command. 2020-06-10 03:29:24 +00:00
build_overrides fix tint roll - enable tint_build_wgsl_writer 2021-07-01 00:32:40 +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] Fix demo image link 2021-06-03 12:57:50 +00:00
dm Add dm via-option rtblend- to test using Runtime Blends. 2021-07-20 17:43:50 +00:00
docker [infra] Update cmake docker image to be Debian 10 2021-07-23 11:21:31 +00:00
docs/examples Hide getBlendMode() 2021-07-07 20:55:26 +00:00
example Remove SDL from DEPS (and SDL example that used it) 2021-05-27 21:37:57 +00:00
experimental Fix -Wdeprecated-copy warnings 2021-08-03 16:06:11 +00:00
fuzz Fix Wunused-but-set-variable warnings 2021-08-05 21:49:18 +00:00
gm Fix Wunused-but-set-variable warnings 2021-08-05 21:49:18 +00:00
gn Ease HarfBuzz API change with feature detection 2021-08-06 17:22:22 +00:00
include Pass dsl::PositionInfo by value 2021-08-06 18:10:41 +00:00
infra [infra] Update buildbot repo used by go.mod 2021-08-05 19:12:58 +00:00
modules [canvaskit] Update object types 2021-08-06 14:42:28 +00:00
platform_tools [androidkit] add seekTime and seekFrame for SkottieView util view 2021-07-29 14:12:54 +00:00
resources Add unit test for array narrowing conversions. 2021-08-06 13:05:35 +00:00
samplecode Use SkClipOp::kFoo instead of kFoo_SkClipOp from SkClipOpPriv 2021-08-03 18:08:21 +00:00
site Update minimum Linux versions 2021-07-16 16:20:26 +00:00
specs Fix CanvasKit generated documentation to work with emscripten 1.39.16. 2020-05-27 12:23:32 +00:00
src Use a table for dither effect rather than math. 2021-08-06 18:56:45 +00:00
tests Pass dsl::PositionInfo by value 2021-08-06 18:10:41 +00:00
third_party Ease HarfBuzz API change with feature detection 2021-08-06 17:22:22 +00:00
tools Fix Wunused-but-set-variable warnings 2021-08-05 21:49:18 +00:00
.bazelignore bazel baby steps 2020-09-14 15:18:32 +00:00
.clang-format no more bin packing in .clang-format 2021-03-04 17:22:50 +00:00
.clang-tidy Disable ClangTidy namespace comments for short blocks. 2020-08-24 14:01:22 +00:00
.gitignore add mskps/ to .gitignore 2021-07-06 21:04:55 +00:00
.gn Pre-emptive fix for upcoming ANGLE change. 2021-01-08 17:23:52 +00:00
AUTHORS Correct a typo in build_workaround_header.py 2021-07-29 13:06:01 +00:00
BUILD.bazel bazel baby steps 2020-09-14 15:18:32 +00:00
BUILD.gn Ease HarfBuzz API change with feature detection 2021-08-06 17:22:22 +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 ANGLE from 9da4e52b5bb6 to 9b646c132d63 (12 revisions) 2021-08-06 05:24:15 +00:00
DIR_METADATA Move metadata in OWNERS files to DIR_METADATA files 2021-02-02 23:41:54 +00:00
go.mod [infra] Update buildbot repo used by go.mod 2021-08-05 19:12:58 +00:00
go.sum [infra] Update buildbot repo used by go.mod 2021-08-05 19:12:58 +00:00
LICENSE LICENSE file: clean up 2019-11-22 21:59:03 +00:00
PRESUBMIT.py [fiddle] Add PRESUBMIT rule to run tools/fiddle/make_all_examples_cpp.py 2021-07-01 15:20:57 +00:00
public.bzl Reland "Experimental ICU runtime linking" 2021-07-27 19:51:31 +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 Rename/simplify SkCanvas::resetClip() and make recordable 2021-07-23 19:05:42 +00:00
whitespace.txt Test SkCQ 2021-07-24 21:07:28 +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.