Go to file
John Stiles 5556c2ca9a Emit helper function in GenerateDefaultGlueCode when children exist.
A runtime effect needs to be able to invoke a child snippet from
a `child.eval()` expression anywhere. Because `eval` occurs in an
expression context, we don't have the ability to emit multiple
statements, or declare new variables. That means all of our glue code
needs to eventually become glue-expressions.

When there are no children, the default glue code is just a function
call to a snippet, so this will actually work fine as an expression.
However, when there _are_ children, the glue code becomes arbitrarily
complex. (We need to call child snippets, which could themselves call
more children.)

Now, when children exist, the default glue code emits a helper
function which invokes all of the children first, followed by
invoking the shader snippet passing along all the child outputs.
This gives us some of that Ganesh-like tree structure when
it's needed, but simple flat code when it's not.

Change-Id: I85e42f0794872c9f378ec63581364e0ed55f6047
Bug: skia:13508
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/558308
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2022-07-14 17:39:23 +00:00
bazel Manual dawn roll 2022-07-14 14:45:31 +00:00
bench [graphite] Add HybridBoundsManager and use as default impl 2022-06-21 15:52:22 +00:00
bin Update emsdk to version 3.1.15 2022-07-12 17:30:43 +00:00
build/fuchsia [fuchsia] Fix fidlc command. 2020-06-10 03:29:24 +00:00
build_overrides Manual Dawn Roll 2022-06-23 12:39:45 +00:00
client_utils/android Revert "Move SkCamera.h to client_utils/android" 2022-04-25 12:33:01 +00:00
demos.skia.org Pin canvaskit used in demos 2022-06-24 19:59:24 +00:00
dm Reland "Replace SK_ARRAY_COUNT with std::size() all the rest" 2022-07-01 16:20:51 +00:00
docker Update Perfetto reference following fix for b/234001590 2022-06-16 15:16:55 +00:00
docs/examples Replace SK_ARRAY_COUNT with std::size() for skia/docs 2022-06-16 20:09:58 +00:00
example reland "set up GL sample app to build through Bazel Mac toolchain" 2022-06-21 19:22:16 +00:00
experimental Better encapsulate Blend, Color and Empty shaders 2022-07-11 16:37:52 +00:00
fuzz Reland "Replace SK_ARRAY_COUNT with std::size() all the rest" 2022-07-01 16:20:51 +00:00
gm Revert "In the CPU backend, stop treating alpha images as coverage" 2022-07-14 16:29:44 +00:00
gn Disallow most modifiers in runtime effects 2022-07-13 18:22:23 +00:00
include Fix some prevent_unsafe_narrowing warnings 2022-07-14 17:31:01 +00:00
infra Add a 'FrameworkWorkarounds' Android job 2022-07-14 16:31:09 +00:00
modules Add addCircle, isInterpolate, and interpolate 2022-07-14 17:26:43 +00:00
platform_tools Enable inline/datauri image support for SkottieView 2022-06-27 19:54:24 +00:00
resources Disallow most modifiers in runtime effects 2022-07-13 18:22:23 +00:00
samplecode Better encapsulate Blend, Color and Empty shaders 2022-07-11 16:37:52 +00:00
site [gardener] Update docs for triaging oss-fuzz bugs 2022-07-12 11:04:12 +00:00
specs [infra] Port serve.py from Python2 to 3 2021-08-31 15:28:19 +00:00
src Emit helper function in GenerateDefaultGlueCode when children exist. 2022-07-14 17:39:23 +00:00
tests Disallow most modifiers in runtime effects 2022-07-13 18:22:23 +00:00
third_party Add skia_use_system_freetype2_include_path and skia_use_system_freetype2_lib build options to configure system freetype2 to build and link against. 2022-07-13 20:56:02 +00:00
toolchain [includes] Reduce IWYU exports from SkTypes.h 2022-07-06 14:52:55 +00:00
tools Turn on bilerp support for the atlas in viewer 2022-07-14 16:13:20 +00:00
.bazelrc [bazel] Add option for SkSVGCanvas (and expat third_party DEP) 2022-06-27 15:56:55 +00:00
.bazelversion Reland "[bazel] Update to v5.2.0" 2022-06-21 18:49:10 +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 [infra] Add BazelBuild task to build CanvasKit on the CI with Bazel 2022-05-06 17:54:08 +00:00
.gn Disable wayland in ANGLE 2022-06-15 18:24:40 +00:00
.vpython [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
AUTHORS Add mike@reedtribe.org to AUTHORS 2022-05-19 12:49:11 +00:00
BUILD.bazel [bazel] Make modules depend on //:skia_internal 2022-06-24 17:01:56 +00:00
BUILD.gn Add vtune jit support for linux 2022-07-07 19:48:25 +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 16e7226da288 to 4b20c309fba8 (3 revisions) 2022-07-14 15:35:02 +00:00
DIR_METADATA Move metadata in OWNERS files to DIR_METADATA files 2021-02-02 23:41:54 +00:00
go_repositories.bzl [infra] Update dep of infra repo 2022-04-28 13:20:10 +00:00
go.mod [infra] Update dep of infra repo 2022-04-28 13:20:10 +00:00
go.sum [infra] Fix go.sum 2022-04-28 18:01:34 +00:00
LICENSE LICENSE file: clean up 2019-11-22 21:59:03 +00:00
OWNERS [infra] Add wildcard OWNERS 2021-08-30 19:19:34 +00:00
OWNERS.android Update OWNERS.android with more details 2022-03-16 18:13:33 +00:00
package-lock.json [bazel] Make custom karma_test rule 2022-02-23 14:53:01 +00:00
package.json [bazel] Make custom karma_test rule 2022-02-23 14:53:01 +00:00
PRESUBMIT.py [bazel] Add support for Macs to make Linux RBE builds 2022-06-23 12:00:43 +00:00
public.bzl Improve encapsulation of SkRadialGradient 2022-07-13 16:19:04 +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 single-child RuntimeShader to use string_view. 2022-07-12 18:59:43 +00:00
requirements.txt Added expected hash for MarkupSafe for the MacOS platform with the M1 chip 2022-05-19 17:54:32 +00:00
whitespace.txt Push shaders.skia.org. 2022-01-19 21:46:16 +00:00
WORKSPACE.bazel Update emsdk to version 3.1.15 2022-07-12 17:30:43 +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.