2016-10-27 16:21:40 +00:00
|
|
|
# Copyright 2016 Google Inc.
|
|
|
|
#
|
|
|
|
# Use of this source code is governed by a BSD-style license that can be
|
2018-09-26 18:49:27 +00:00
|
|
|
# found in the LICENSE file.
|
2016-10-27 16:21:40 +00:00
|
|
|
|
|
|
|
# Things are easiest for everyone if these source paths are absolute.
|
|
|
|
_gm = get_path_info("../gm", "abspath")
|
|
|
|
|
|
|
|
gm_sources = [
|
2018-05-30 20:02:48 +00:00
|
|
|
"$_gm/3dgm.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/aaa.cpp",
|
|
|
|
"$_gm/aaclip.cpp",
|
|
|
|
"$_gm/aarectmodes.cpp",
|
|
|
|
"$_gm/aaxfermodes.cpp",
|
|
|
|
"$_gm/addarc.cpp",
|
|
|
|
"$_gm/all_bitmap_configs.cpp",
|
2017-07-19 21:25:38 +00:00
|
|
|
"$_gm/alpha_image.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/alphagradients.cpp",
|
Reland "Reland "Implement an explicit binary search-based analytic gradient colorizer""
This is a reland of f065907ccc0ae5e9258443b5a1bbabeef181e965
3rd time's the charm:
The new analytic gradient shader was sporadically triggering violations of the coverage as alpha
compatibility optimization. Unfortunately, even when using the same device and random seed for the
test, the bots did not always reproduce the error. However, we identified the likely cause of the
violation.
The test requires that all output channels are less than the input alpha, which it uses to validate
whether or not the shader is modulating its values by the input alpha. This test does not pass if
the RGB values are greater than 1. The original version of the analytic gradient shader used half4s
for its scale and bias values. Given the threshold limit for hardstops of 0.00024 (SkNearlyZero),
a very small interval that is not treated as a hardstop can create a scale or bias of over 4000.
This moves into the very imprecise region of 16-bit floats, making it plausible that the gradient
outputs colors greater than 1, due to rounding. The kicker is that the random test generation for
stop locations does not use a uniform distribution, but is instead biased towards the remaining
interval, which increases the likelihood of generating a small interval that is not treated as a
hard stop. We are keeping this behavior since ill-conditioned gradients are useful in testing.
Original change's description:
> Reland "Implement an explicit binary search-based analytic gradient colorizer"
>
> This reverts commit 9461dcf1306a9a9517e1545cf6d16bde05261280.
>
> Reason for revert: Fixes for ANGLE's incorrect shader behavior
>
> Original change's description:
> > Revert "Implement an explicit binary search-based analytic gradient colorizer"
> >
> > This reverts commit dcc85fc61008f61daef4313846bdd62877fd596d.
> >
> > Reason for revert: ANGLE is frequently corrupted, particularly radial_gradient4 and mixershader
> >
> > Original change's description:
> > > Implement an explicit binary search-based analytic gradient colorizer
> > >
> > > Provides a reasonably flexible fragment processor that defines another
> > > colorizer implementation for gradients. It can support up to 8
> > > interpolation intervals (which is 16 colors if every stop is a hard stop
> > > or 9 colors if every stop is a smooth transition). It
> > > supports mixtures of hard and smooth stops. It is conditionally compiled
> > > into versions specific to the interval count (so it can produce up to
> > > 8 shader variants).
> > >
> > > The GrGradientShader controller does not remove the single and dual
> > > interval colorizers, which are useful specializations of this explicit
> > > binary search colorizer. Similarly, since it can only handle up to 8
> > > intervals, the texture colorizer is still used as a fallback.
> > >
> > > Currently it does not employ capabilities detection to determine if the
> > > hardware can support the number of required uniforms, which can become
> > > substantial for the larger gradient configurations.
> > >
> > > Bug: chromium:796479, chromium:729727, chromium:696603, chromium:543625, chromium:414254
> > > Change-Id: Ia1f735a5019766ae4796cc22964b2913db34b95b
> > > Reviewed-on: https://skia-review.googlesource.com/155080
> > > Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> > > Reviewed-by: Brian Osman <brianosman@google.com>
> >
> > TBR=bsalomon@google.com,brianosman@google.com,michaelludwig@google.com
> >
> > Change-Id: I351a387f0528e4c2db2d47ab2e5d6b336991fb98
> > No-Presubmit: true
> > No-Tree-Checks: true
> > No-Try: true
> > Bug: chromium:796479, chromium:729727, chromium:696603, chromium:543625, chromium:414254
> > Reviewed-on: https://skia-review.googlesource.com/156541
> > Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> > Commit-Queue: Michael Ludwig <michaelludwig@google.com>
>
> TBR=bsalomon@google.com,brianosman@google.com,michaelludwig@google.com
>
> Change-Id: I2aca36307d88c26905d860ec29417ec68c6037cc
> Bug: chromium:796479, chromium:729727, chromium:696603, chromium:543625, chromium:414254
> Reviewed-on: https://skia-review.googlesource.com/156542
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Bug: chromium:796479, chromium:729727, chromium:696603, chromium:543625, chromium:414254
Change-Id: I2d050624781c77cdd160291cadbadac602b48bde
Reviewed-on: https://skia-review.googlesource.com/c/157569
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2018-09-28 15:53:32 +00:00
|
|
|
"$_gm/analytic_gradients.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/animatedGif.cpp",
|
2018-08-03 15:15:24 +00:00
|
|
|
"$_gm/androidblendmodes.cpp",
|
2016-12-01 17:42:43 +00:00
|
|
|
"$_gm/animatedimageblurs.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/anisotropic.cpp",
|
|
|
|
"$_gm/annotated_text.cpp",
|
|
|
|
"$_gm/arcofzorro.cpp",
|
|
|
|
"$_gm/arcto.cpp",
|
|
|
|
"$_gm/arithmode.cpp",
|
2017-11-19 18:20:13 +00:00
|
|
|
"$_gm/atlastext.cpp",
|
2018-12-14 21:03:38 +00:00
|
|
|
"$_gm/b_119394958.cpp",
|
2019-02-22 21:58:22 +00:00
|
|
|
"$_gm/backdrop.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/badpaint.cpp",
|
|
|
|
"$_gm/beziereffects.cpp",
|
|
|
|
"$_gm/beziers.cpp",
|
|
|
|
"$_gm/bigblurs.cpp",
|
|
|
|
"$_gm/bigmatrix.cpp",
|
2017-05-04 22:04:53 +00:00
|
|
|
"$_gm/bigrect.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/bigrrectaaeffect.cpp",
|
|
|
|
"$_gm/bigtext.cpp",
|
|
|
|
"$_gm/bigtileimagefilter.cpp",
|
|
|
|
"$_gm/bitmapcopy.cpp",
|
|
|
|
"$_gm/bitmapfilters.cpp",
|
|
|
|
"$_gm/bitmapimage.cpp",
|
|
|
|
"$_gm/bitmappremul.cpp",
|
|
|
|
"$_gm/bitmaprect.cpp",
|
|
|
|
"$_gm/bitmaprecttest.cpp",
|
|
|
|
"$_gm/bitmapshader.cpp",
|
2017-02-06 21:48:57 +00:00
|
|
|
"$_gm/bitmaptiled.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/bleed.cpp",
|
|
|
|
"$_gm/blend.cpp",
|
|
|
|
"$_gm/blurcircles.cpp",
|
|
|
|
"$_gm/blurcircles2.cpp",
|
2017-05-30 15:15:07 +00:00
|
|
|
"$_gm/blurignorexform.cpp",
|
2017-07-10 17:49:05 +00:00
|
|
|
"$_gm/blurimagevmask.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/blurquickreject.cpp",
|
|
|
|
"$_gm/blurrect.cpp",
|
|
|
|
"$_gm/blurredclippedcircle.cpp",
|
|
|
|
"$_gm/blurroundrect.cpp",
|
|
|
|
"$_gm/blurs.cpp",
|
2017-12-20 19:36:53 +00:00
|
|
|
"$_gm/blurpositioning.cpp",
|
2017-08-14 18:58:14 +00:00
|
|
|
"$_gm/blurtextsmallradii.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/bmpfilterqualityrepeat.cpp",
|
|
|
|
"$_gm/bug5252.cpp",
|
2017-05-16 16:03:15 +00:00
|
|
|
"$_gm/bug6643.cpp",
|
2017-06-22 18:00:17 +00:00
|
|
|
"$_gm/bug6783.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/bug530095.cpp",
|
|
|
|
"$_gm/bug615686.cpp",
|
|
|
|
"$_gm/cgm.c",
|
|
|
|
"$_gm/cgms.cpp",
|
2017-11-27 14:33:44 +00:00
|
|
|
"$_gm/circle_sizes.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/circles.cpp",
|
|
|
|
"$_gm/circulararcs.cpp",
|
|
|
|
"$_gm/circularclips.cpp",
|
2016-11-16 15:15:23 +00:00
|
|
|
"$_gm/clip_error.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/clip_strokerect.cpp",
|
|
|
|
"$_gm/clipdrawdraw.cpp",
|
|
|
|
"$_gm/clippedbitmapshaders.cpp",
|
2018-07-27 18:38:35 +00:00
|
|
|
"$_gm/clockwise.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/color4f.cpp",
|
|
|
|
"$_gm/coloremoji.cpp",
|
2017-04-25 15:09:16 +00:00
|
|
|
"$_gm/coloremoji_blendmodes.cpp",
|
2016-10-28 17:25:40 +00:00
|
|
|
"$_gm/colorfilteralpha8.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/colorfilterimagefilter.cpp",
|
|
|
|
"$_gm/colorfilters.cpp",
|
|
|
|
"$_gm/colormatrix.cpp",
|
|
|
|
"$_gm/colorwheel.cpp",
|
|
|
|
"$_gm/complexclip.cpp",
|
|
|
|
"$_gm/complexclip_blur_tiled.cpp",
|
|
|
|
"$_gm/complexclip2.cpp",
|
|
|
|
"$_gm/complexclip3.cpp",
|
2016-12-12 22:39:55 +00:00
|
|
|
"$_gm/complexclip4.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/composeshader.cpp",
|
2019-02-15 21:03:53 +00:00
|
|
|
"$_gm/compositor_quads.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/concavepaths.cpp",
|
|
|
|
"$_gm/conicpaths.cpp",
|
|
|
|
"$_gm/constcolorprocessor.cpp",
|
|
|
|
"$_gm/convex_all_line_paths.cpp",
|
|
|
|
"$_gm/convexpaths.cpp",
|
|
|
|
"$_gm/convexpolyclip.cpp",
|
|
|
|
"$_gm/convexpolyeffect.cpp",
|
|
|
|
"$_gm/copyTo4444.cpp",
|
2017-02-13 16:03:23 +00:00
|
|
|
"$_gm/crbug_691386.cpp",
|
2017-11-29 15:52:00 +00:00
|
|
|
"$_gm/crbug_788500.cpp",
|
2018-09-07 17:47:49 +00:00
|
|
|
"$_gm/crbug_847759.cpp",
|
2018-09-26 21:25:59 +00:00
|
|
|
"$_gm/crbug_884166.cpp",
|
|
|
|
"$_gm/crbug_887103.cpp",
|
2018-11-14 18:39:51 +00:00
|
|
|
"$_gm/crbug_892988.cpp",
|
2018-11-19 15:05:08 +00:00
|
|
|
"$_gm/crbug_899512.cpp",
|
2018-12-03 16:17:51 +00:00
|
|
|
"$_gm/crbug_905548.cpp",
|
2019-01-09 14:46:43 +00:00
|
|
|
"$_gm/crbug_918512.cpp",
|
2019-03-11 20:12:51 +00:00
|
|
|
"$_gm/crbug_938592.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/croppedrects.cpp",
|
2017-05-09 17:19:50 +00:00
|
|
|
"$_gm/crosscontextimage.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/cubicpaths.cpp",
|
2018-12-12 17:37:56 +00:00
|
|
|
"$_gm/daa.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/dashcircle.cpp",
|
|
|
|
"$_gm/dashcubics.cpp",
|
|
|
|
"$_gm/dashing.cpp",
|
|
|
|
"$_gm/degeneratesegments.cpp",
|
|
|
|
"$_gm/dftext.cpp",
|
2017-12-19 16:09:32 +00:00
|
|
|
"$_gm/dftext_blob_persp.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/discard.cpp",
|
|
|
|
"$_gm/displacement.cpp",
|
|
|
|
"$_gm/distantclip.cpp",
|
|
|
|
"$_gm/downsamplebitmap.cpp",
|
|
|
|
"$_gm/draw_bitmap_rect_skbug4374.cpp",
|
|
|
|
"$_gm/drawable.cpp",
|
|
|
|
"$_gm/drawatlas.cpp",
|
|
|
|
"$_gm/drawatlascolor.cpp",
|
|
|
|
"$_gm/drawbitmaprect.cpp",
|
|
|
|
"$_gm/drawlooper.cpp",
|
2018-10-12 15:42:02 +00:00
|
|
|
"$_gm/drawimageset.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/drawminibitmaprect.cpp",
|
2018-11-28 20:34:34 +00:00
|
|
|
"$_gm/drawquadset.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/drawregion.cpp",
|
|
|
|
"$_gm/drawregionmodes.cpp",
|
|
|
|
"$_gm/dropshadowimagefilter.cpp",
|
|
|
|
"$_gm/drrect.cpp",
|
2017-12-01 21:01:47 +00:00
|
|
|
"$_gm/drrect_small_inner.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/dstreadshuffle.cpp",
|
|
|
|
"$_gm/emboss.cpp",
|
|
|
|
"$_gm/emptypath.cpp",
|
|
|
|
"$_gm/encode.cpp",
|
2017-05-09 16:46:50 +00:00
|
|
|
"$_gm/encode-alpha-jpeg.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/encode-platform.cpp",
|
2017-01-10 16:28:54 +00:00
|
|
|
"$_gm/encode-srgb.cpp",
|
2019-01-15 18:24:45 +00:00
|
|
|
"$_gm/etc1.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/extractbitmap.cpp",
|
|
|
|
"$_gm/fadefilter.cpp",
|
|
|
|
"$_gm/fatpathfill.cpp",
|
|
|
|
"$_gm/filltypes.cpp",
|
|
|
|
"$_gm/filltypespersp.cpp",
|
|
|
|
"$_gm/filterbitmap.cpp",
|
2016-12-16 16:47:46 +00:00
|
|
|
"$_gm/filterbug.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/filterfastbounds.cpp",
|
|
|
|
"$_gm/filterindiabox.cpp",
|
2017-10-31 16:26:35 +00:00
|
|
|
"$_gm/flippity.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/fontcache.cpp",
|
|
|
|
"$_gm/fontmgr.cpp",
|
2018-12-18 16:04:37 +00:00
|
|
|
"$_gm/fontregen.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/fontscaler.cpp",
|
|
|
|
"$_gm/fontscalerdistortable.cpp",
|
2018-11-13 20:07:24 +00:00
|
|
|
"$_gm/fwidth_squircle.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/gamma.cpp",
|
|
|
|
"$_gm/gammatext.cpp",
|
|
|
|
"$_gm/getpostextpath.cpp",
|
|
|
|
"$_gm/giantbitmap.cpp",
|
|
|
|
"$_gm/glyph_pos.cpp",
|
|
|
|
"$_gm/gm.cpp",
|
|
|
|
"$_gm/gradient_matrix.cpp",
|
|
|
|
"$_gm/gradientDirtyLaundry.cpp",
|
|
|
|
"$_gm/gradients.cpp",
|
Reland "Improve degenerate 2pt conical gradient cases"
This reverts commit 95af4726bf91669e51250ebd3baa2925b6975e8e.
Reason for revert: I think this may not have been the reason the Android roll was failing. We've rolled, so it's a good time to try again.
Original change's description:
> Revert "Improve degenerate 2pt conical gradient cases"
>
> This reverts commit 879dab87ab78613458f9d36f843bc3c6ffdafc74.
>
> Reason for revert: Android roll failed.
> https://sponge.corp.google.com/target?id=93bc6b8d-9b42-4805-b204-46ae62f1b005&target=x86+CtsGraphicsTestCases&searchFor=&show=FAILED&sortBy=STATUS
> A test VectorDrawableTest.testVectorDrawableGradient fails.
>
> Original change's description:
> > Improve degenerate 2pt conical gradient cases
> >
> > This was originally a reland of "Fix div-by-zero loophole in gradient factory func", c34dd6c5263490b94ef9af7a14dee1b4bc872b58, but:
> >
> > The change caused blink layout tests when encountering very small or zero radii. The original patch switched the order of checking if the radii are equal and if the start radius was 0. In the case where both radii are 0, the original code created an actual radial gradient of radius 0 and the new code rejected the shader. A radial gradient with radius of 0 properly renders the last border color as a fill.
> >
> > This made me realize that the case when the center positions and the radii are the same can be handled more correctly than just always returning an empty shader, so the fix now applies simplifications to the gradient definition depending on the tile mode and should not trigger any blink tests. I added a row to the gradient edge cases GM to make sure it degrades gracefully.
> >
> > Original change's description:
> > > Fix div-by-zero loophole in gradient factory func
> > >
> > > Bug: oss-fuzz:10373
> > > Change-Id: I4277fb63e3186ee34feaf09ecf6aeddeb532f9c1
> > > Reviewed-on: https://skia-review.googlesource.com/c/168269
> > > Reviewed-by: Kevin Lubick <kjlubick@google.com>
> > > Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> >
> > Docs-Preview: https://skia.org/?cl=168487
> > Bug: oss-fuzz:10373
> > Change-Id: Ib0a6e7f807560a5dcf24d1c8e0146817af2d9606
> > Reviewed-on: https://skia-review.googlesource.com/c/168487
> > Reviewed-by: Mike Reed <reed@google.com>
> > Reviewed-by: Florin Malita <fmalita@chromium.org>
> > Commit-Queue: Michael Ludwig <michaelludwig@google.com>
>
> TBR=caryclark@google.com,fmalita@chromium.org,fmalita@google.com,reed@google.com,michaelludwig@google.com
>
> Change-Id: I91b896c4a438c02206679b327a01b47f40993965
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: oss-fuzz:10373
> Reviewed-on: https://skia-review.googlesource.com/c/170272
> Reviewed-by: Stan Iliev <stani@google.com>
> Commit-Queue: Stan Iliev <stani@google.com>
TBR=caryclark@google.com,fmalita@chromium.org,fmalita@google.com,reed@google.com,stani@google.com,michaelludwig@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: oss-fuzz:10373
Change-Id: I7577fcea9eb8a875e94723ab2cca2fcc990b82b2
Reviewed-on: https://skia-review.googlesource.com/c/170279
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2018-11-11 00:26:30 +00:00
|
|
|
"$_gm/gradients_degenerate.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/gradients_2pt_conical.cpp",
|
|
|
|
"$_gm/gradients_no_texture.cpp",
|
|
|
|
"$_gm/gradtext.cpp",
|
|
|
|
"$_gm/grayscalejpg.cpp",
|
|
|
|
"$_gm/hairlines.cpp",
|
|
|
|
"$_gm/hairmodes.cpp",
|
|
|
|
"$_gm/hardstop_gradients.cpp",
|
2017-02-14 19:15:31 +00:00
|
|
|
"$_gm/highcontrastfilter.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/hittestpath.cpp",
|
2018-01-10 19:31:18 +00:00
|
|
|
"$_gm/hugepath.cpp",
|
2017-05-05 17:49:00 +00:00
|
|
|
"$_gm/hsl.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/image.cpp",
|
|
|
|
"$_gm/image_pict.cpp",
|
|
|
|
"$_gm/image_shader.cpp",
|
|
|
|
"$_gm/imagealphathreshold.cpp",
|
|
|
|
"$_gm/imageblur.cpp",
|
|
|
|
"$_gm/imageblur2.cpp",
|
2017-06-26 22:03:55 +00:00
|
|
|
"$_gm/imageblurclampmode.cpp",
|
2017-06-30 17:44:45 +00:00
|
|
|
"$_gm/imageblurrepeatmode.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/imageblurtiled.cpp",
|
|
|
|
"$_gm/imagefilters.cpp",
|
|
|
|
"$_gm/imagefiltersbase.cpp",
|
|
|
|
"$_gm/imagefiltersclipped.cpp",
|
|
|
|
"$_gm/imagefilterscropexpand.cpp",
|
|
|
|
"$_gm/imagefilterscropped.cpp",
|
|
|
|
"$_gm/imagefiltersgraph.cpp",
|
|
|
|
"$_gm/imagefiltersscaled.cpp",
|
|
|
|
"$_gm/imagefiltersstroked.cpp",
|
|
|
|
"$_gm/imagefilterstransformed.cpp",
|
|
|
|
"$_gm/imagefromyuvtextures.cpp",
|
|
|
|
"$_gm/imagemagnifier.cpp",
|
|
|
|
"$_gm/imagemakewithfilter.cpp",
|
|
|
|
"$_gm/imagemasksubset.cpp",
|
|
|
|
"$_gm/imageresizetiled.cpp",
|
|
|
|
"$_gm/imagescalealigned.cpp",
|
|
|
|
"$_gm/imagesource.cpp",
|
|
|
|
"$_gm/imagesource2.cpp",
|
|
|
|
"$_gm/internal_links.cpp",
|
|
|
|
"$_gm/inversepaths.cpp",
|
Adjust GPU YUV -> RGB (JPG) conversion
All of the published coefficients assume math is being done on bytes, and
that 128 is the encoding of 0 (in the biased Cb and Cr values). When
sampling an A8 texture, though, GPUs typically decode as byte/255. Thus,
128 ends up slightly larger than 0.5. To fix this, just adjust the bias
terms to be scaled by 128/255, rather than 0.5.
I also changed some of the other coefficients to be higher precision,
based on the values in ITU-T T.871.
This originally surfaced as a Chromium bug where an all-black JPG decoded
to (1/255, 0, 1/255) on GPU. I've added a GM that encodes a color cube to
JPG, then draws from the encoded data. GPU and CPU (libjpeg) still
disagree in many cases, but the newer version performs much better
(diffing gl and 8888 configs):
Previously: 95.2% of pixels differ, max diff of 2, avg diff of 1
Now : 65.4% of pixels differ, max diff of 1, avg diff of 0
Bug: skia:7038 chromium:763605
Change-Id: I4801db9f6e2fc4d4109eb5e27c9499f214084d38
Reviewed-on: https://skia-review.googlesource.com/45842
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2017-09-12 20:04:28 +00:00
|
|
|
"$_gm/jpg_color_cube.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/largeglyphblur.cpp",
|
|
|
|
"$_gm/lattice.cpp",
|
|
|
|
"$_gm/lcdblendmodes.cpp",
|
|
|
|
"$_gm/lcdoverlap.cpp",
|
|
|
|
"$_gm/lcdtext.cpp",
|
|
|
|
"$_gm/lighting.cpp",
|
2018-07-17 16:30:40 +00:00
|
|
|
"$_gm/lightingshader.cpp",
|
|
|
|
"$_gm/lightingshader2.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/linepaths.cpp",
|
|
|
|
"$_gm/localmatriximagefilter.cpp",
|
2017-04-12 15:52:47 +00:00
|
|
|
"$_gm/localmatriximageshader.cpp",
|
2018-04-04 18:17:30 +00:00
|
|
|
"$_gm/localmatrixshader.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/lumafilter.cpp",
|
2019-02-21 14:00:34 +00:00
|
|
|
"$_gm/mac_aa_explorer.cpp",
|
2017-05-04 12:53:32 +00:00
|
|
|
"$_gm/makecolorspace.cpp",
|
2018-01-12 15:59:53 +00:00
|
|
|
"$_gm/makeRasterImage.cpp",
|
2018-04-24 03:14:42 +00:00
|
|
|
"$_gm/mandoline.cpp",
|
2017-02-21 22:55:13 +00:00
|
|
|
"$_gm/manypaths.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/matrixconvolution.cpp",
|
|
|
|
"$_gm/matriximagefilter.cpp",
|
|
|
|
"$_gm/megalooper.cpp",
|
|
|
|
"$_gm/mipmap.cpp",
|
|
|
|
"$_gm/mixedtextblobs.cpp",
|
2019-02-17 03:12:59 +00:00
|
|
|
"$_gm/mixercolorfilter.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/modecolorfilters.cpp",
|
|
|
|
"$_gm/morphology.cpp",
|
|
|
|
"$_gm/multipicturedraw.cpp",
|
|
|
|
"$_gm/nested.cpp",
|
|
|
|
"$_gm/ninepatchstretch.cpp",
|
|
|
|
"$_gm/nonclosedpaths.cpp",
|
|
|
|
"$_gm/offsetimagefilter.cpp",
|
2018-01-17 02:10:29 +00:00
|
|
|
"$_gm/orientation.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/ovals.cpp",
|
2016-11-22 20:48:50 +00:00
|
|
|
"$_gm/overdrawcolorfilter.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/OverStroke.cpp",
|
2018-09-11 16:11:46 +00:00
|
|
|
"$_gm/p3.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/patch.cpp",
|
|
|
|
"$_gm/path_stroke_with_zero_length.cpp",
|
|
|
|
"$_gm/pathcontourstart.cpp",
|
|
|
|
"$_gm/patheffects.cpp",
|
|
|
|
"$_gm/pathfill.cpp",
|
|
|
|
"$_gm/pathinterior.cpp",
|
|
|
|
"$_gm/pathmaskcache.cpp",
|
2018-03-22 15:32:09 +00:00
|
|
|
"$_gm/pathmeasure.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/pathopsinverse.cpp",
|
|
|
|
"$_gm/pathopsskpclip.cpp",
|
|
|
|
"$_gm/pathreverse.cpp",
|
|
|
|
"$_gm/pdf_never_embed.cpp",
|
|
|
|
"$_gm/perlinnoise.cpp",
|
2018-05-21 16:54:39 +00:00
|
|
|
"$_gm/perspimages.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/perspshaders.cpp",
|
|
|
|
"$_gm/picture.cpp",
|
|
|
|
"$_gm/pictureimagefilter.cpp",
|
|
|
|
"$_gm/pictureimagegenerator.cpp",
|
|
|
|
"$_gm/pictureshader.cpp",
|
2017-04-21 19:06:51 +00:00
|
|
|
"$_gm/pictureshadercache.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/pictureshadertile.cpp",
|
|
|
|
"$_gm/pixelsnap.cpp",
|
|
|
|
"$_gm/plus.cpp",
|
|
|
|
"$_gm/points.cpp",
|
|
|
|
"$_gm/poly2poly.cpp",
|
|
|
|
"$_gm/polygons.cpp",
|
2018-04-03 14:00:37 +00:00
|
|
|
"$_gm/polygonoffset.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/quadpaths.cpp",
|
2017-05-15 19:55:54 +00:00
|
|
|
"$_gm/radial_gradient_precision.cpp",
|
2016-12-22 15:52:25 +00:00
|
|
|
"$_gm/readpixels.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/recordopts.cpp",
|
|
|
|
"$_gm/rectangletexture.cpp",
|
|
|
|
"$_gm/rects.cpp",
|
|
|
|
"$_gm/repeated_bitmap.cpp",
|
|
|
|
"$_gm/resizeimagefilter.cpp",
|
|
|
|
"$_gm/roundrects.cpp",
|
|
|
|
"$_gm/rrect.cpp",
|
|
|
|
"$_gm/rrectclipdrawpaint.cpp",
|
|
|
|
"$_gm/rrects.cpp",
|
2019-03-04 18:07:36 +00:00
|
|
|
"$_gm/runtimecolorfilter.cpp",
|
2019-03-07 21:17:03 +00:00
|
|
|
"$_gm/samplelocations.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/samplerstress.cpp",
|
2017-01-14 18:45:02 +00:00
|
|
|
"$_gm/savelayer.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/scaledstrokes.cpp",
|
2018-02-13 20:21:34 +00:00
|
|
|
"$_gm/scaledemoji.cpp",
|
2018-07-18 19:32:08 +00:00
|
|
|
"$_gm/scaledemoji_rendering.cpp",
|
2018-01-18 21:06:54 +00:00
|
|
|
"$_gm/shadermaskfilter.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/shadertext3.cpp",
|
|
|
|
"$_gm/shadows.cpp",
|
2017-02-01 17:23:25 +00:00
|
|
|
"$_gm/shadowutils.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/shallowgradient.cpp",
|
|
|
|
"$_gm/shapes.cpp",
|
Add GM to verify that drawX == (path.addX, drawPath)
This demonstrates a new kind of hybrid unit test/GM.
It creates a grid of cells. In each cell, we do two
renders that are expected to produce the same result.
For each cell, we render the two results overlaid,
and highlight any differing pixels in red. Assuming
there is a diff, the area around the largest diff
is drawn zoomed in from both images.
Matching cells are outlined in green, failing cells
are outlined in red. Triaging this GM just involves
answering the question: "Are there any red boxes?"
"Good" example: https://screenshot.googleplex.com/909P3tvS55f.png
"Bad" example: https://screenshot.googleplex.com/oXBWbEKw5ur.png
To get more tests to pass, (and fix an assert
in Ganesh), I've gone ahead and enforced that user
supplied rects (in drawRect and drawOval) are
always sorted once they hit the canvas virtuals.
Currently, drawArc rejects empty ovals, but I added
the same assert to onDrawArc, if we decide to change
the strategy there.
Re-land of: https://skia-review.googlesource.com/c/16983/
Bug: skia:
Change-Id: I48f85de5f2bcb7fdc9558c2fd80cb1f20800b244
Reviewed-on: https://skia-review.googlesource.com/17270
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2017-05-17 19:10:18 +00:00
|
|
|
"$_gm/shapes_as_paths.cpp",
|
2018-03-14 08:04:09 +00:00
|
|
|
"$_gm/sharedcorners.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/showmiplevels.cpp",
|
|
|
|
"$_gm/simpleaaclip.cpp",
|
2017-02-06 17:32:55 +00:00
|
|
|
"$_gm/simple_magnification.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/simplerect.cpp",
|
|
|
|
"$_gm/skbug_257.cpp",
|
|
|
|
"$_gm/skbug_4868.cpp",
|
|
|
|
"$_gm/skbug_5321.cpp",
|
2019-01-15 17:09:25 +00:00
|
|
|
"$_gm/skbug_8664.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/skbug1719.cpp",
|
2018-07-17 14:19:38 +00:00
|
|
|
"$_gm/skinning.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/smallarc.cpp",
|
|
|
|
"$_gm/smallpaths.cpp",
|
|
|
|
"$_gm/spritebitmap.cpp",
|
|
|
|
"$_gm/srcmode.cpp",
|
2017-07-06 02:40:23 +00:00
|
|
|
"$_gm/srgb.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/stlouisarch.cpp",
|
|
|
|
"$_gm/stringart.cpp",
|
|
|
|
"$_gm/stroke_rect_shader.cpp",
|
|
|
|
"$_gm/strokedlines.cpp",
|
|
|
|
"$_gm/strokefill.cpp",
|
|
|
|
"$_gm/strokerect.cpp",
|
|
|
|
"$_gm/strokerects.cpp",
|
|
|
|
"$_gm/strokes.cpp",
|
|
|
|
"$_gm/stroketext.cpp",
|
|
|
|
"$_gm/subsetshader.cpp",
|
|
|
|
"$_gm/surface.cpp",
|
|
|
|
"$_gm/tablecolorfilter.cpp",
|
|
|
|
"$_gm/tallstretchedbitmaps.cpp",
|
2017-02-10 01:45:46 +00:00
|
|
|
"$_gm/testgradient.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/textblob.cpp",
|
|
|
|
"$_gm/textblobblockreordering.cpp",
|
|
|
|
"$_gm/textblobcolortrans.cpp",
|
|
|
|
"$_gm/textblobgeometrychange.cpp",
|
|
|
|
"$_gm/textbloblooper.cpp",
|
|
|
|
"$_gm/textblobmixedsizes.cpp",
|
|
|
|
"$_gm/textblobrandomfont.cpp",
|
|
|
|
"$_gm/textblobshader.cpp",
|
|
|
|
"$_gm/textblobtransforms.cpp",
|
|
|
|
"$_gm/textblobuseaftergpufree.cpp",
|
|
|
|
"$_gm/texteffects.cpp",
|
2017-11-28 20:10:13 +00:00
|
|
|
"$_gm/text_scale_skew.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/texturedomaineffect.cpp",
|
2017-01-11 21:19:26 +00:00
|
|
|
"$_gm/thinconcavepaths.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/thinrects.cpp",
|
|
|
|
"$_gm/thinstrokedrects.cpp",
|
|
|
|
"$_gm/tiledscaledbitmap.cpp",
|
|
|
|
"$_gm/tileimagefilter.cpp",
|
|
|
|
"$_gm/tilemodes.cpp",
|
|
|
|
"$_gm/tilemodes_scaled.cpp",
|
|
|
|
"$_gm/tinybitmap.cpp",
|
|
|
|
"$_gm/transparency.cpp",
|
2018-08-31 11:53:15 +00:00
|
|
|
"$_gm/trickycubicstrokes.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/typeface.cpp",
|
2018-10-31 14:49:38 +00:00
|
|
|
"$_gm/unpremul.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/variedtext.cpp",
|
|
|
|
"$_gm/vertices.cpp",
|
|
|
|
"$_gm/verylargebitmap.cpp",
|
2018-10-03 16:12:26 +00:00
|
|
|
"$_gm/wacky_yuv_formats.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/windowrectangles.cpp",
|
|
|
|
"$_gm/xfermodeimagefilter.cpp",
|
|
|
|
"$_gm/xfermodes.cpp",
|
|
|
|
"$_gm/xfermodes2.cpp",
|
|
|
|
"$_gm/xfermodes3.cpp",
|
|
|
|
"$_gm/yuvtorgbeffect.cpp",
|
|
|
|
]
|