aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* Move DstCoordTexture to GrXP, rename and remove the word "copy" from ↵Gravatar bsalomon2015-05-22
| | | | | | dstcopytexture names. Review URL: https://codereview.chromium.org/1132093004
* Fix LCD coverage regression in GrPorterDuffXPFactoryGravatar cdalton2015-05-22
| | | | | | | | | Fixes GrPorterDuffXPFactory to not use the blend table when getting info about the LCD coverage XP. BUG=skia: Review URL: https://codereview.chromium.org/1149883004
* Store context options on caps.Gravatar bsalomon2015-05-22
| | | | | | Committed: https://skia.googlesource.com/skia/+/f28cff71db2cbb1ff18a8fbf1e80ca761d1f69bc Review URL: https://codereview.chromium.org/1158433006
* fix for atlas is abandoned text corruptionGravatar joshualitt2015-05-22
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1156693004
* Simpler version of Plus w/ AA. ~25% faster too.Gravatar mtklein2015-05-22
| | | | | | | | BUG=skia:3852 TBR=fmalita@chromium.org Review URL: https://codereview.chromium.org/1150693003
* Revert of Store context options on caps. (patchset #3 id:40001 of ↵Gravatar bsalomon2015-05-22
| | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1158433006/) Reason for revert: breaking chromeos build (???) Original issue's description: > Store context options on caps. > > Committed: https://skia.googlesource.com/skia/+/f28cff71db2cbb1ff18a8fbf1e80ca761d1f69bc TBR=joshualitt@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1151603005
* Store context options on caps.Gravatar bsalomon2015-05-22
| | | | Review URL: https://codereview.chromium.org/1158433006
* use SkPixmap inside sprite blittersGravatar reed2015-05-22
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1144923005
* Implement Porter Duff XP with a blend tableGravatar cdalton2015-05-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removes the runtime logic used by PorterDuffXferProcessor to decide blend coeffs and shader outputs, and instead uses a compile-time constant table of pre-selected blend formulas. Introduces a new blend strategy for srcCoeff=0 that can apply coverage with a reverse subtract blend equation instead of dual source blending. Adds new macros in GrBlend.h to analyze blend formulas both runtime. Removes kSetCoverageDrawing_OptFlag and GrSimplifyBlend as they are no longer used. Adds a GM that verifies all xfermodes, including arithmetic, with the color/coverage invariants used by Porter Duff. Adds a unit test that verifies each Porter Duff formula with every color/coverage invariant. Major changes: * Uses a reverse subtract blend equation for coverage when srcCoeff=0 (clear, dst-out [Sa=1], dst-in, modulate). Platforms that don't support dual source blending no longer require a dst copy for dst-in and modulate. * Sets BlendInfo::fWriteColor to false when the blend does not modify the dst. GrGLGpu will now use glColorMask instead of blending for these modes (dst, dst-in [Sa=1], modulate ignored for [Sc=1]). * Converts all SA blend coeffs to One for opaque inputs, and ISA to Zero if there is also no coverage. (We keep ISA around when there is coverage because we use it to tweak alpha for coverage.) * Abandons solid white optimizations for the sake of simplicity (screen was the only mode that previous had solid white opts). Minor differences: * Inconsequential differences in opt flags (e.g. we now return kCanTweakAlphaForCoverage_OptFlag even when there is no coverage). * Src coeffs when the shader outputs 0. * IS2C vs IS2A when the secondary output is scalar. BUG=skia: Review URL: https://codereview.chromium.org/1124373002
* Trivial patch to set a max lookback on reorderingGravatar joshualitt2015-05-22
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1150253003
* BUG=skia:Gravatar stephana2015-05-22
| | | | | | | NOTRY=true TBR=borenet Review URL: https://codereview.chromium.org/1153783003
* Move Sk4px Xfermode code to a header so we can use it twice.Gravatar mtklein2015-05-22
| | | | | | | | | | | | | | | | - Once in SkXfermode as usual to pick up compile-time SSE and NEON - Once in SkXfermode_arm_neon to pick up run-time NEON This allows us to start cleaning up SkXfermode_arm_neon as we've done for SkXfermode_SSE2. I'm saving this catharsis for a day when I need it. The Sk4px xfermodes are generally faster than the existing NEON procs, so this should also have the side effect of a perf win there. This means our new Plus-AA code works for runtime NEON too. BUG=skia:3852 Review URL: https://codereview.chromium.org/1150313003
* Add more detail on how DM checksums are done.Gravatar jcgregorio2015-05-22
| | | | | | | | | | | This will be linked to from Gold for image diffs that have different digests but no pixel differences. BUG=skia: NOTRY=true DOCS_PREVIEW= https://skia.org/?cl=1151153005 Review URL: https://codereview.chromium.org/1151153005
* Remove init from GrGLContextInfo and caps classesGravatar bsalomon2015-05-22
| | | | | | Make Gr*Caps, GrGLContext* noncopyable Review URL: https://codereview.chromium.org/1153813002
* add SkPixmap and external locking to bitmapsGravatar reed2015-05-22
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1074983003
* rename GrDrawTargetCaps.h to GrCaps.h and move to includeGravatar bsalomon2015-05-22
| | | | Review URL: https://codereview.chromium.org/1135113005
* Move GrPath(Range) creation to ResourceProvider.Gravatar bsalomon2015-05-22
| | | | Review URL: https://codereview.chromium.org/1155593002
* remove SK_LEGACY_STROKE_CURVESGravatar caryclark2015-05-22
| | | | | | | | | The change in Chrome has been landed so this guard is no longer needed. R=reed@google.com,fmalita@chromium.org BUG=102411 Review URL: https://codereview.chromium.org/1157623003
* Re-proc SkBlitRow::Color32 for ARM.Gravatar mtklein2015-05-22
| | | | | | | | | | This is a spiritual revert of http://crrev.com/1104183004. BUG=skia: Committed: https://skia.googlesource.com/skia/+/4e13a23d8f720e17660f26657b45b89fe4339004 Review URL: https://codereview.chromium.org/1145283003
* Further work on sRGB support.Gravatar jvanverth2015-05-22
| | | | | | | | | Fix some caps. Add framebuffer enum. BUG=skia:3856 Review URL: https://codereview.chromium.org/1152563003
* Revert of Re-proc SkBlitRow::Color32 for ARM. (patchset #3 id:40001 of ↵Gravatar mtklein2015-05-22
| | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1145283003/) Reason for revert: http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_rel_device_ninja/builds/70016/steps/compile%20%28with%20patch%29/logs/stdio Original issue's description: > Re-proc SkBlitRow::Color32 for ARM. > > This is a spiritual revert of http://crrev.com/1104183004. > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/4e13a23d8f720e17660f26657b45b89fe4339004 TBR=reed@google.com,mtklein@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1157633003
* Mark SkPaths created by GrContext fallback draw logic as volatileGravatar kkinnunen2015-05-21
| | | | | | | | | | | | | | | | | | | | | | GrContext draw functions (drawRect, drawRRect,...) fall back to GrContext::drawPath for complex cases. Mark the argument SkPath as volatile, since it is. Progressions for nvprmsaa: tabl_androidpolice.skp_1 11.6ms -> 10.3ms 0.89x desk_twitter.skp_1 9.21ms -> 8.08ms 0.88x tabl_sahadan.skp_1 8.97ms -> 7.65ms 0.85x desk_wikipedia.skp_1 5.63ms -> 4.5ms 0.8x desk_booking.skp_1 11.5ms -> 8.87ms 0.77x desk_ebay.skp_1 7ms -> 5.37ms 0.77x Makes rrects and rects go to "simple path" path cache (cached by contents). No change for msaa, gpu. BUG=skia: Review URL: https://codereview.chromium.org/1150993002
* Re-proc SkBlitRow::Color32 for ARM.Gravatar mtklein2015-05-21
| | | | | | | | This is a spiritual revert of http://crrev.com/1104183004. BUG=skia: Review URL: https://codereview.chromium.org/1145283003
* Remove uniform view matrix from GrGLPrimitiveProcessor base classGravatar joshualitt2015-05-21
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1151693005
* Fix PlusGravatar mtklein2015-05-21
| | | | | | | | | | | | | | This makes Plus with AA ~3% slower. Seems like a good deal. GMs affected: mixed_xfermodes, the new one. Based on https://codereview.chromium.org/1150833003/ Still TODO: NEON. The new GM should show this. BUG=skia:3852 Review URL: https://codereview.chromium.org/1156453002
* remove unused SkBitmap::scrollRect APIGravatar reed2015-05-21
| | | | | | | BUG=skia: TBR= Review URL: https://codereview.chromium.org/1154623002
* Add mode validation to PtProcRec::init.Gravatar ochang2015-05-21
| | | | | | BUG=486946 Review URL: https://codereview.chromium.org/1142563003
* Clean up Sk4f xfermodes and covered _SSE2 xfermodes.Gravatar mtklein2015-05-21
| | | | | | | | Before I get going on fixing Plus, it's nice to clear out the dead cruft. BUG=skia:3852 Review URL: https://codereview.chromium.org/1150833003
* Temporarily disable nanobench to see what else is in the way of the bots ↵Gravatar stephana2015-05-21
| | | | | | | | | going green. NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1147333002
* Whitespace change to trigger buildsGravatar Eric Boren2015-05-21
| | | | | | | | | | | | | | Two major things have happened: 1. Android bots split between more machines. This caused lots of congestion-related failures, leading to... 2. All buildslaves now use a single checkout for all of the builders that they run. This should give us far fewer problems when we have to re-download SKPs, toolchains, etc. TBR=rmistry BUG=skia:3835,3774 Review URL: https://codereview.chromium.org/1154603002
* Add PlusMergesAA GMGravatar mtklein2015-05-21
| | | | | | | | C.f. https://crrev.com/1156453002/ BUG=skia: Review URL: https://codereview.chromium.org/1149103003
* Make mixed samples contingent on auxiliary extensionsGravatar cdalton2015-05-21
| | | | | | | | | | | | | | | | | | | | | Moves the cap for mixed samples into GrShaderCaps and does not enable it unless we have support for both dual source blending and multisample disable. Creates a dedicated cap for multisample disable. Reconfigures the mixed samples cap to indicate the collective capability of three different extensions: GL_NV_framebuffer_mixed_samples GL_NV_sample_mask_override_coverage GL_EXT_raster_multisample Imports tokens and procedures for GL_EXT_raster_multisample. BUG=skia: Review URL: https://codereview.chromium.org/1151793002
* SkBlockMemoryStream implements peek()Gravatar halcanary2015-05-21
| | | | Review URL: https://codereview.chromium.org/1146903004
* Add RGBA half float texture format.Gravatar jvanverth2015-05-21
| | | | | | BUG=skia:3829 Review URL: https://codereview.chromium.org/1148243002
* add assert that the lock-count on pixelref is balancedGravatar reed2015-05-21
| | | | | | | BUG=skia: TBR= Review URL: https://codereview.chromium.org/1147153004
* Move font loading in gm tests and benches out of constructorsGravatar kkinnunen2015-05-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Constructing the gm tests and benches causes many calls to font loads. This is visible as profiling samples in fontconfig and freetype on Linux for all profiling runs of nanobench. This complicates analysis of test-cases that are suspected of being slow due to font-related issues. Move the font loading to GM::onOnceBeforeDraw and Benchmark::onPreDraw. This way the code is not executed if the testcase does not match the nanobench --match filter. This way the samples in font-related code are more easy to identify as legitimate occurances caused by the testcase. This should not cause differences in timings, because: * Benchmark::preDraw / onPreDraw is defined to be run outside the timer * GM::runAsBench is not enabled for any of the modified testcases. Also nanobench untimed warmup round should run the onOnceBeforeDraw. (and there are other GM::runAsBench gms already doing loading in onOnceBeforeDraw). Changes the behavior: In TextBench: Before, the test would report two different gms with the same name if the color emoji font was not loaded successfully. After, the test always reports all tests as individual names. Generally: The errors from loading fonts now print inbetween each testcase, as opposed to printing during construction phase. Sample output: ( 143/145 MB 1872) 14.7ms 8888 gm quadclosepathResource /fonts/Funkster.ttf not a valid font. ( 160/160 MB 1831) 575µs 8888 gm surfacenewResource /fonts/Funkster.ttf not a valid font. ( 163/165 MB 1816) 12.5ms 8888 gm linepathResource /fonts/Funkster.ttf not a valid font. ( 263/411 MB 1493) 118ms 8888 gm typefacestyles_kerningResource /fonts/Funkster.ttf not a valid font. ( 374/411 MB 1231) 7.16ms 565 gm getpostextpathResource /fonts/Funkster.ttf not a valid font. ( 323/411 MB 1179) 4.92ms 565 gm stringartResource /fonts/Funkster.ttf not a valid font. ( 347/493 MB 917) 191ms 565 gm patch_gridResource /fonts/Funkster.ttf not a valid font. ( 375/493 MB 857) 23.9ms gpu gm clipdrawdrawCannot render path (0) ( 393/493 MB 706) 2.91ms unit test ParsePath------ png error IEND: CRC error ( 394/493 MB 584) 166ms gpu gm hairmodesResource /fonts/Funkster.ttf not a valid font. Resource /fonts/Funkster.ttf not a valid font. Resource /fonts/Funkster.ttf not a valid font. ... Review URL: https://codereview.chromium.org/1144023002
* Improve caching of special case paths in GrStencilAndCoverPathRendererGravatar kkinnunen2015-05-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Cache lines and oval paths in their own cache domains. Skia has many hard-to-replace codepaths that create volatile paths out of lines or ovals. Results for amd64: desk_tigersvg.skp_1 3.06ms -> 3.07ms 1x tabl_cnet.skp_1 2.3ms -> 2.3ms 1x desk_baidu.skp_1 8.99ms -> 8.98ms 1x desk_weather.skp_1 4.58ms -> 4.57ms 1x desk_samoasvg.skp_1 12.3ms -> 12.3ms 1x tabl_gamedeksiam.skp_1 15.8ms -> 15.7ms 1x desk_chalkboard.skp_1 14.9ms -> 14.9ms 1x desk_mapsvg.skp_1 6.57ms -> 6.54ms 1x desk_wordpress.skp_1 2.2ms -> 2.19ms 1x tabl_slashdot.skp_1 6.91ms -> 6.84ms 0.99x desk_linkedin.skp_1 7.7ms -> 7.58ms 0.98x desk_googlespreadsheet.skp_1 58.7ms -> 57.7ms 0.98x tabl_ukwsj.skp_1 7.67ms -> 7.53ms 0.98x tabl_engadget.skp_1 4.71ms -> 4.61ms 0.98x desk_carsvg.skp_1 116ms -> 114ms 0.98x tabl_nytimes.skp_1 3.71ms -> 3.61ms 0.97x desk_googlespreadsheetdashed.skp_1 25.8ms -> 24.9ms 0.97x tabl_hsfi.skp_1 5.3ms -> 5.1ms 0.96x tabl_techmeme.skp_1 2.9ms -> 2.8ms 0.96x tabl_cnn.skp_1 6.88ms -> 6.62ms 0.96x desk_espn.skp_1 9.12ms -> 8.64ms 0.95x desk_gws.skp_1 5.15ms -> 4.88ms 0.95x tabl_gspro.skp_1 4.48ms -> 4.2ms 0.94x desk_yahooanswers.skp_1 6.84ms -> 6.3ms 0.92x tabl_pravda.skp_1 11.1ms -> 10.1ms 0.91x tabl_sahadan.skp_1 11.8ms -> 10.7ms 0.91x desk_wowwiki.skp_1 8.48ms -> 7.58ms 0.89x tabl_googleblog.skp_1 6ms -> 5.34ms 0.89x tabl_worldjournal.skp_1 6.08ms -> 5.35ms 0.88x desk_booking.skp_1 15.3ms -> 13.4ms 0.88x tabl_androidpolice.skp_1 15.5ms -> 13.5ms 0.87x desk_twitter.skp_1 12.2ms -> 10.6ms 0.87x tabl_nofolo.skp_1 5.49ms -> 4.76ms 0.87x desk_mobilenews.skp_1 22ms -> 18.9ms 0.86x desk_forecastio.skp_1 9.47ms -> 8.05ms 0.85x tabl_culturalsolutions.skp_1 6.21ms -> 5.28ms 0.85x desk_youtube.skp_1 16.1ms -> 13.5ms 0.84x tabl_mlb.skp_1 9.75ms -> 8.01ms 0.82x tabl_digg.skp_1 5.2ms -> 4.22ms 0.81x desk_blogger.skp_1 10.2ms -> 8.24ms 0.81x desk_gmailthread.skp_1 26.8ms -> 21.6ms 0.81x desk_googleplus.skp_1 10.5ms -> 8.39ms 0.8x tabl_frantzen.skp_1 4.55ms -> 3.58ms 0.79x desk_pinterest.skp_1 8.85ms -> 6.88ms 0.78x desk_ebay.skp_1 10.5ms -> 8.15ms 0.77x tabl_transformice.skp_1 4.93ms -> 3.5ms 0.71x Results for arm_v7_neon: desk_samoasvg.skp_1 13.9ms -> 14.6ms 1.05x desk_mapsvg.skp_1 8.31ms -> 8.75ms 1.05x tabl_deviantart.skp_1 1.41ms -> 1.45ms 1.02x desk_weather.skp_1 3.8ms -> 3.88ms 1.02x desk_sfgate.skp_1 3.06ms -> 3.1ms 1.01x desk_css3gradients.skp_1 2.78ms -> 2.79ms 1x desk_espn.skp_1 6.52ms -> 6.43ms 0.99x desk_gws.skp_1 4.16ms -> 4.09ms 0.98x tabl_cnn.skp_1 4.66ms -> 4.58ms 0.98x tabl_hsfi.skp_1 3.49ms -> 3.42ms 0.98x tabl_cuteoverload.skp_1 2.41ms -> 2.35ms 0.98x desk_yahooanswers.skp_1 5.28ms -> 5.14ms 0.97x desk_carsvg.skp_1 90.8ms -> 87.9ms 0.97x tabl_gspro.skp_1 2.81ms -> 2.71ms 0.96x desk_wowwiki.skp_1 5.85ms -> 5.63ms 0.96x tabl_pravda.skp_1 7.8ms -> 7.5ms 0.96x desk_twitter.skp_1 8.14ms -> 7.8ms 0.96x tabl_androidpolice.skp_1 10.4ms -> 9.96ms 0.96x tabl_googleblog.skp_1 4.06ms -> 3.83ms 0.95x desk_mobilenews.skp_1 15.2ms -> 14ms 0.93x desk_booking.skp_1 9.89ms -> 9.08ms 0.92x desk_forecastio.skp_1 6.16ms -> 5.65ms 0.92x desk_blogger.skp_1 6.17ms -> 5.66ms 0.92x tabl_digg.skp_1 3.73ms -> 3.41ms 0.91x tabl_nofolo.skp_1 3.82ms -> 3.47ms 0.91x tabl_worldjournal.skp_1 4.24ms -> 3.84ms 0.9x desk_youtube.skp_1 10.5ms -> 9.39ms 0.9x desk_googleplus.skp_1 7.01ms -> 6.19ms 0.88x tabl_mlb.skp_1 5.91ms -> 5.22ms 0.88x tabl_googlecalendar.skp_1 10.7ms -> 9.44ms 0.88x desk_gmailthread.skp_1 19.2ms -> 16.8ms 0.88x desk_ebay.skp_1 5.68ms -> 4.93ms 0.87x desk_pinterest.skp_1 5.99ms -> 5.08ms 0.85x desk_googlehome.skp_1 3.31ms -> 2.71ms 0.82x tabl_transformice.skp_1 3.03ms -> 2.44ms 0.81x desk_amazon.skp_1 6.05ms -> 4.84ms 0.8x desk_facebook.skp_1 12.6ms -> 9.62ms 0.76x Review URL: https://codereview.chromium.org/1120023005
* Use high precision vertex attributes.Gravatar senorblanco2015-05-20
| | | | | | | | | | Specifying vertex attributes and the view matrix as mediump causes bad artifacts on Mali T6XX. Covered by the bigmatrix GM in msaa4 mode. BUG:skia=3545,3771 Review URL: https://codereview.chromium.org/1145273002
* purge imagefilter cache so we can better track leaksGravatar reed2015-05-20
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1148973002
* check for big sizes in NewDataGravatar reed2015-05-20
| | | | | | BUG=486977 Review URL: https://codereview.chromium.org/1148873004
* Don't serialize SkPictures in SkPictureShaders when in untrusted mode.Gravatar mtklein2015-05-20
| | | | | | | | This requires we "first" add a has-picture bool to SkPictureShader serialized format. BUG=chromium:486947, billions and billions of others. Review URL: https://codereview.chromium.org/1151663002
* Fix for bisector computation bug in GrAAConvexTessellatorGravatar robertphillips2015-05-20
| | | | Review URL: https://codereview.chromium.org/1151623002
* Have SkPicture inherit from SkRefCnt.Gravatar mtklein2015-05-20
| | | | | | | | | This re-enables adoption tracking for SkPictures in Blink, which should be green now that crrev.com/1136123011 has landed. BUG=skia:3847 Review URL: https://codereview.chromium.org/1145153002
* Make SkEmptyPicture a singleton.Gravatar mtklein2015-05-20
| | | | | | | | | | | | In my confusion yesterday I accidentally left this as a non-singleton. The issue in Blink was not related to this being a singleton, and it should be safe to make it one. This means recording an empty picture properly costs zero mallocs. BUG=skia: Review URL: https://codereview.chromium.org/1147053002
* More efficient SkRecorder::flushMiniRecorder()Gravatar mtklein2015-05-20
| | | | | | | | This should involve no mallocs, frees, or memcpys, and less refcounting. BUG=skia: Review URL: https://codereview.chromium.org/1144173002
* Sort build files for consistent link order.Gravatar bungeman2015-05-20
| | | | | | | | | | | Prior to the introduction of find.py, GMs were liked in the order they were listed in the gypi file, which was generally alphabetically. This made it fairly easy to predict where slides would show up in SampleApp and the order was consistent. This simply sorts the list of files in find.py to restore the expectation that files should be listed in the build in alphabetical order. Review URL: https://codereview.chromium.org/1144973003
* Font variations.Gravatar bungeman2015-05-20
| | | | | | | | | | | | Multiple Master and TrueType fonts support variation axes. This implements back-end support for axes on platforms which support it. Committed: https://skia.googlesource.com/skia/+/05773ed30920c0214d1433c07cf6360a05476c97 Committed: https://skia.googlesource.com/skia/+/3489ee0f4fa34f124f9de090d12bdc2107d52aa9 Review URL: https://codereview.chromium.org/1027373002
* fix win 8 botGravatar caryclark2015-05-20
| | | | | | | | | Comment out assert (runtime documentation) It fails on Win 8 because the result isn't bit identical. TBR=bungeman@google.com Review URL: https://codereview.chromium.org/1148053003
* Unmount before app-installGravatar stephana2015-05-20
| | | | | | | | | TBR=borenet NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1145093005
* Don't fail SkMergeImageFilter if one of the inputs are emptyGravatar fs2015-05-20
| | | | | | | | | | | | | | If one of the inputs to a SkMergeImageFilter was clipped away or otherwise caused the filterImage(...) invocation for it to return false, the entire effect would be "failed" and return false -- regardless of if it had produced a result or not. Instead of returning false directly if filterImage(...) for a source returned false, consider all the inputs, and then only return false if all of them do. BUG=chromium:489046 Review URL: https://codereview.chromium.org/1133523006