Go to file
Michael Ludwig d0440195d5 Revert "Redo how extra emit code flushing operates"
This reverts commit 9b8181b05a.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> Redo how extra emit code flushing operates
> 
> The previous implementation of flushEmittedCode(), that flushed on
> demand when a process() was encountered, was brittle and susceptible to
> mangling the expected sksl when fOut was modified outside of its
> control. Given that writeFunction() and generateCode() in the parent
> class all do this, it's possible to generate a simple SkSL snippet that
> would generate a CPP file that builds invalid final SkSL:
> 
> ```
> in fragmentProcessor child;
> bool someGlobalVar = ...;
> void main() {
>     if (someGlobalVar) {
>         sk_OutColor = process(child, sk_InColor);
>     } else {
>         sk_OutColor = half4(1);
>     }
> }
> ```
> 
> The CPP generated code *should* insert 'bool someGlobalVar' at the start
> but because of the early flush from the child process and because of
> how fOut was overwritten, someGlobalVar's declaration is put into a
> stream that is not visible to the flush and ends up being inserted into
> the output sksl in an incorrect location (namely after the if condition
> that depends on it).
> 
> This CL updates the extra emitted code logic to support multiple blocks
> of extra CPP code. When a flush point occurs in SkSL writing, a special
> token is inserted into the SkSL and a new CPP code buffer is associated
> with that token. Then once all of the SkSL is accumulated into the root
> output stream, it is processed into sections for each extra CPP block.
> Special logic is done so that the SkSL that is emitted before the next
> CPP block terminates at the end of the last valid statement before the
> special token.
> 
> A unit test demonstrating this failure condition is added to SkSLFPTest
> and the CL properly passes. Since this bug did not trigger on existing
> .fp files, the updated generator does not modify the generated FPs.
> 
> Bug: skia:
> Change-Id: Ib74911942080f1b964159807a06805bc52898789
> Reviewed-on: https://skia-review.googlesource.com/152321
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>

TBR=ethannicholas@google.com,michaelludwig@google.com

Change-Id: Id0f908453b596873f43b86a1c14eed48b2474a76
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/152660
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2018-09-07 14:25:10 +00:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bench Revert "SkStream: remove some WStream functions from public api" 2018-09-06 12:22:41 +00:00
bin Add script to pull svgs to svgs/ and add to .gitignore 2018-08-31 20:02:24 +00:00
dm Revert "makeSurface defaults to raster" 2018-09-05 18:41:45 +00:00
docker Use a larger machine for our cloud build. 2018-07-31 20:40:33 +00:00
docs bookmaker self documentation 2018-09-06 17:11:23 +00:00
example Compile with GCC 7.2.0. 2018-03-13 22:18:18 +00:00
experimental [PathKit] Move from experimental to modules 2018-08-31 14:18:16 +00:00
fuzz Rip out variable offsetting 2018-09-05 19:54:31 +00:00
gm Don't use MEM_MOVE=true with SkTArrays of sk_sp 2018-09-05 20:11:07 +00:00
gn fix typo 2018-09-05 21:32:18 +00:00
include Reland "Revert "update to new MakeFromStream signature"" 2018-09-07 12:44:47 +00:00
infra Roll recipe dependencies (trivial). 2018-09-06 16:12:20 +00:00
modules Make fallback font iterator in shaper cache fallback. 2018-09-04 18:00:56 +00:00
platform_tools [skottie] Plumb external SkFontMgr 2018-08-23 13:13:30 +00:00
resources Reland "Switch SkCodec to use skcms plus fixes"" 2018-08-27 16:16:14 +00:00
samplecode Revert "makeSurface defaults to raster" 2018-09-05 18:41:45 +00:00
site bookmaker self documentation 2018-09-06 17:11:23 +00:00
src Revert "Redo how extra emit code flushing operates" 2018-09-07 14:25:10 +00:00
tests Revert "Redo how extra emit code flushing operates" 2018-09-07 14:25:10 +00:00
third_party Roll skia/third_party/skcms 8a251fa55434..da4870efd7b7 (1 commits) 2018-09-05 18:46:00 +00:00
tools Only run image tests on Windows once 2018-09-06 20:35:55 +00:00
.clang-format Update .clang-format to handle Objective-C files 2018-07-27 21:33:30 +00:00
.gitignore Add script to pull svgs to svgs/ and add to .gitignore 2018-08-31 20:02:24 +00:00
.gn Basic standalone GN configs. 2016-07-21 12:25:45 -07:00
AUTHORS Fixed SkVertices crashing on Windows DLL builds 2018-04-22 14:42:01 +00:00
BUILD.gn [skottie] Enable skotte_tool on Mac builds 2018-09-02 16:54:52 +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 dff32a0da1de..801719235b13 (3 commits) 2018-09-07 01:27:02 +00:00
Doxyfile Make the housekeeper upload doxygen to a newer bucket 2016-10-04 13:23:57 -07: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 Make CR and trailing whitespace errors. 2018-07-11 20:48:38 +00:00
public.bzl Revert "fix g3 by adding legacy flag" 2018-08-29 13:24:11 +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 change to trigger flutter roller 2018-06-22 01:18:46 +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.