adadb95a9f
This does a few things, because they're all intertwined: 1) SkRuntimeEffect's API now includes details about children (which Skia stage was declared, not just the name). The factories verify that the declared types in the SkSL match up with the C++ types being passed. Today, we still only support adding children of the same type, so the checks are simple. Once we allow mixing types, we'll be testing the declared type against the actual C++ type supplied for each slot. 2) Adds sample variants that supply the input color to the child. This is now the only way to invoke a colorFilter child. Internally, we support passing a color when invoking a child shader, but I'm not exposing that. It's not clearly part of the semantics of the Skia pipeline, and is almost never useful. It also exposes users to several inconsistencies (skbug.com/11942). 3) Because of #2, it's possible that we can't compute a reusable program to filter individual colors. In that case, we don't set the constant output for constant input optimization, and filterColor4f falls back to the slower base-class implementation. Bug: skia:11813 skia:11942 Change-Id: I06c41e1b35056e486f3163a72acf6b9535d7fed4 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/401917 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Mike Klein <mtklein@google.com> |
||
---|---|---|
.. | ||
oss_fuzz | ||
coverage | ||
Fuzz.cpp | ||
Fuzz.h | ||
FuzzCanvas.cpp | ||
FuzzCommon.cpp | ||
FuzzCommon.h | ||
FuzzCreateDDL.cpp | ||
FuzzDDLThreading.cpp | ||
FuzzDrawFunctions.cpp | ||
FuzzEncoders.cpp | ||
FuzzGradients.cpp | ||
FuzzMain.cpp | ||
FuzzParsePath.cpp | ||
FuzzPath.cpp | ||
FuzzPathMeasure.cpp | ||
FuzzPathop.cpp | ||
FuzzPolyUtils.cpp | ||
FuzzRegionOp.cpp | ||
FuzzRRect.cpp | ||
FuzzSkParagraph.cpp | ||
FuzzTriangulation.cpp | ||
README.md |
We fuzz Skia using oss-fuzz, which in turn uses fuzzing engines such as libfuzzer, afl-fuzz, hong-fuzz and others.
We define a fuzzer
to be a targeted bit of code that takes a randomized input and executes code
in a specific area. For example, we have a codec fuzzer which takes a mutated png/jpeg or similar
file and attempts to turn it into an SkImage
. We also have a canvas fuzzer which takes in a random
set of bytes and turns them into calls on SkCanvas
.
See [../site/dev/testing/fuzz.md] for more information on building and running fuzzers.
See also: