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 = [
|
2020-01-10 22:21:40 +00:00
|
|
|
"$_gm/3d.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",
|
2018-08-03 15:15:24 +00:00
|
|
|
"$_gm/androidblendmodes.cpp",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/animated_gif.cpp",
|
Handle EXIF orientation in SkAnimatedImage
Bug: skia:10914
Bug: b/163595585
In a WebP image, it is possible to combine animation with an EXIF
orientation. While SkAndroidCodec attempts to handle orientation itself
by decoding into temporary memory and then drawing through a matrix,
this doesn't work directly when compositing a P-frame into a prior
frame. SkAnimatedImage already uses an SkMatrix to handle cropping and
scaling, so update that matrix to include the orientation.
Make SkAnimatedImage a friend of SkAndroidCodec. This allows the former
to have the same ExifOrientationBehavior specified by the latter, and to
recreate the latter so it does not try to handle the orientation itself.
Clip SkAnimatedImage to its bounds. Android's AnimatedImageDrawable
performs its own clip, but this makes a crop rect work for other
clients.
Update getCurrentFrame to take cropping, scaling, and orientation into
account. This method is used by CanvasKit, which does not use cropping
or scaling, but will now properly orient an animation with an EXIF
orientation.
Add a GM that exercises the various combinations of ways SkAnimatedImage
can be used:
- via newPictureSnapshot (as in Android) versus getCurrentFrame
- scaling down to a dimension that can be output from the
SkAndroidCodec, versus up, which SkAnimatedImage scales
- with a crop rect
- with a post processor
Change-Id: If1854e9aea23fc4afddf75d39132b38e3fbc6071
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333223
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2020-11-06 22:05:36 +00:00
|
|
|
"$_gm/animated_image_orientation.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",
|
2019-05-17 16:05:44 +00:00
|
|
|
"$_gm/asyncrescaleandread.cpp",
|
2021-12-16 21:14:56 +00:00
|
|
|
"$_gm/attributes.cpp",
|
2018-12-14 21:03:38 +00:00
|
|
|
"$_gm/b_119394958.cpp",
|
2019-02-22 21:58:22 +00:00
|
|
|
"$_gm/backdrop.cpp",
|
2019-05-03 21:09:47 +00:00
|
|
|
"$_gm/backdrop_imagefilter_croprect.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/badpaint.cpp",
|
2021-11-11 18:32:12 +00:00
|
|
|
"$_gm/batchedconvexpaths.cpp",
|
2020-02-03 21:12:51 +00:00
|
|
|
"$_gm/bc1_transparency.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/beziers.cpp",
|
2020-01-08 16:07:57 +00:00
|
|
|
"$_gm/bicubic.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_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/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",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/blurpositioning.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-08-14 18:58:14 +00:00
|
|
|
"$_gm/blurtextsmallradii.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/bmpfilterqualityrepeat.cpp",
|
2022-01-26 18:14:56 +00:00
|
|
|
"$_gm/bug12866.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/bug5252.cpp",
|
|
|
|
"$_gm/bug530095.cpp",
|
|
|
|
"$_gm/bug615686.cpp",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/bug6643.cpp",
|
|
|
|
"$_gm/bug6783.cpp",
|
2019-08-12 17:11:26 +00:00
|
|
|
"$_gm/bug9331.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_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/circulararcs.cpp",
|
|
|
|
"$_gm/circularclips.cpp",
|
2021-07-26 17:23:10 +00:00
|
|
|
"$_gm/clear_swizzle.cpp",
|
2016-11-16 15:15:23 +00:00
|
|
|
"$_gm/clip_error.cpp",
|
2019-12-13 15:48:33 +00:00
|
|
|
"$_gm/clip_sierpinski_region.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/clip_strokerect.cpp",
|
|
|
|
"$_gm/clipdrawdraw.cpp",
|
|
|
|
"$_gm/clippedbitmapshaders.cpp",
|
GrTessellator: improved straight skeleton implementation.
This patch improves the straight skeleton implementation used by
GrTessellator to collapse overlap regions in the alpha gradient border.
The resulting quality improvement can be seen in the
"thinconcavepaths" GM, for example, where the coverage values of
the "thin right angle", "thin rect and triangle" and "skinny snake"
are now lower and match the raster backend more closely. It also improves
correctness, such as on the linked Chromium bugs below.
Previously, the straight skeleton was performed using the same Vertex
and Edge classes used for tessellation, but this led to fragility in
maintaining the connectivity and ordering required by those classes.
Instead, that functionality has been moved to new SSEdge and SSVertex
classes. Their construction results in alternating SSVertex and
SSEdges around the boundary of the each overlap region, shrunk by one
SSEdge as the boundary collapses.
Applying events may now also create further events (chained events),
as intersections between newly-adjacent bisectors change the structure
of the skeleton. This is always calculated from the bisectors of
original boundary, not the shrunk boundary of the straight skeleton,
which is why each SSEdge points at its originating Edge. If the edges
are parallel or near-parallel, the bisector may be infinite. This is
handled by a new flavour of create_event(), which does a Line/Line
intersection (rather than an Edge/Edge intersection) to find the
intersection between the infinite bisector and an adjacent bisector.
Several ancillary bugs were fixed: the priority queue used to represent
edge events was sorting the inner edges incorrectly. These need to be
sorted in descending not ascending order of coverage. Its implementation
was moved from Skia's TDPQueue to std::priority_queue(), which is more
flexible in specifying a comparator.
check_for_intersection()'s partner synthesis code was moved into a new
function, compute_bisector(), also used by the chained skeleton events
code.
Degenerate edges are now removed during the simplify_boundary() pass.
They were previously detected but ignored, causing incorrect inner and
outer tangents to be computed in stroke_boundary().
An fSynthetic flag was added to Vertex, in order to detect vertices
which cannot be moved by an edge collapse event (e.g., intersections
with non-boundary edges, merged vertices, straight skeleton vertices).
More raw implementation notes:
Connect straight skeleton vertices as we find them, so we don't
have to use partnering (ss_connect()).
Only disconnect edges which are still alive after event application.
Add a check for near-parallel lines in compute_bisector().
Don't use edge type to determine direction to offset for bisectors.
The winding should already include this information.
Move Event ownership to SSEdge.
If we're down to the last two edges in a skeleton, don't check for events.
Add concave_arc_and_circle GM.
Add a collapsepaths GM.
Bug: 941429, 913349, 929915, 945853
Change-Id: Ib89e231d0e8611f8735fd3592db6391da096369d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/215094
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-05-22 14:50:14 +00:00
|
|
|
"$_gm/collapsepaths.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",
|
2021-01-07 16:50:01 +00:00
|
|
|
"$_gm/colorspace.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/colorwheel.cpp",
|
Support COLRv1 color fonts
Implement support for COLRv1 color gradient vector forms. COLR v1 is an
extension to the OpenType COLR tables that introduces support for
gradients, transforms and compositing. [1]
COLRv1 fonts contain an OpenType COLR table with format v1. In a COLR v1
table, glyphs are defined by a directed, acyclic graph of Paint
operations. The task for the Skia implementation is to extract the COLR
v1 information from the font using FreeType's COLRv1 API, then traverse
the glyph graph and translate information from the font into Skia
operations on SkCanvas.
Care needs to be taken for transformations to work correctly. FreeType
sends a top level transform that includes the scaling from font units to
actual glyph size, as well as optional transforms configured on FreeType
using FT_Set_Transform. This is set up as the starting transform at the
beginning of drawing a COLRv1 glyph. At the stage of setting a clip for
a PaintGlyph operation, the glyph outline is retrieved from FreeType
unscaled and untransformed. Since the starting transformation is applied
to the SkCanvas, the unscaled glyph is properly scaled and positioned.
Similarly, computing the initial bounding box for the COLRv1 glyph needs
to consider transformations. COLRv1 glyphs have a base glyph entry in
the glyf table which can use a minimum of two points for defining a
bounding box. This bounding box is an imaged rectangle enclosing those
two points at the identity transform. We need to compute the bounding
box scaled, but at identity transform, then make a rectangle from it,
that we then transform so that we get a large enough area to paint
in. If those two points from the glyf table would be transformed first,
then we would compute the bounding box, the resulting bounding box ends
up too small.
As a test font, add a version of the samples-glyf_colr_1.ttf from [2]
with one glyph added for testing PaintColrGlyph functionality and
compositions.
Add a basic GM test that produces color glyphs untransformed, with
skew and with rotation and combinations of those.
[1] https://github.com/googlefonts/colr-gradients-spec/
[2] https://github.com/googlefonts/color-fonts
Bug: skia:11264
Change-Id: I8357cd0c7ac0039bb2eac18f21fa343bf61871eb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300558
Commit-Queue: Dominik Röttsches <drott@chromium.org>
Commit-Queue: Ben Wagner <bungeman@google.com>
Auto-Submit: Dominik Röttsches <drott@chromium.org>
Reviewed-by: Ben Wagner <bungeman@google.com>
2021-02-11 19:08:44 +00:00
|
|
|
"$_gm/colrv1.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/complexclip.cpp",
|
|
|
|
"$_gm/complexclip2.cpp",
|
|
|
|
"$_gm/complexclip3.cpp",
|
2016-12-12 22:39:55 +00:00
|
|
|
"$_gm/complexclip4.cpp",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/complexclip_blur_tiled.cpp",
|
Reland "Better first-class shader & color filter support in runtime effects"
This is a reland of adadb95a9f1ef21ccc5264c7d0bdc83b56cf91e9
... adds a temporary workaround for some Android framework code.
Original change's description:
> Better first-class shader & color filter support in runtime effects
>
> 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>
Bug: skia:11813 skia:11942
Change-Id: I2c31b147ed86fa8c4dddefb7066bc1d07fe0d285
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404637
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-04-21 13:57:19 +00:00
|
|
|
"$_gm/composecolorfilter.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/composeshader.cpp",
|
2019-02-15 21:03:53 +00:00
|
|
|
"$_gm/compositor_quads.cpp",
|
2020-01-14 21:54:17 +00:00
|
|
|
"$_gm/compressed_textures.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/concavepaths.cpp",
|
|
|
|
"$_gm/conicpaths.cpp",
|
|
|
|
"$_gm/convex_all_line_paths.cpp",
|
|
|
|
"$_gm/convexpaths.cpp",
|
|
|
|
"$_gm/convexpolyclip.cpp",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/copy_to_4444.cpp",
|
2020-04-03 15:59:37 +00:00
|
|
|
"$_gm/crbug_1041204.cpp",
|
2020-04-24 16:10:43 +00:00
|
|
|
"$_gm/crbug_1073670.cpp",
|
2020-08-11 18:40:41 +00:00
|
|
|
"$_gm/crbug_1086705.cpp",
|
2020-08-11 21:26:09 +00:00
|
|
|
"$_gm/crbug_1113794.cpp",
|
2020-10-28 14:49:56 +00:00
|
|
|
"$_gm/crbug_1139750.cpp",
|
2020-12-11 17:36:01 +00:00
|
|
|
"$_gm/crbug_1156804.cpp",
|
2021-01-19 15:28:15 +00:00
|
|
|
"$_gm/crbug_1162942.cpp",
|
2021-01-20 20:56:04 +00:00
|
|
|
"$_gm/crbug_1167277.cpp",
|
2021-02-10 01:44:09 +00:00
|
|
|
"$_gm/crbug_1174186.cpp",
|
2021-03-02 19:28:21 +00:00
|
|
|
"$_gm/crbug_1174354.cpp",
|
2021-02-24 15:09:02 +00:00
|
|
|
"$_gm/crbug_1177833.cpp",
|
Fix winding when splitting edges at out-of-bounds vertices
Add GM repros and up triangulation verb count to match chromium's define
The GMs draw incorrectly in (base->p2) with the updated verb count, but
would draw fine w/o the increased verb count because a different path
renderer would be chosen.
This fixes a latent bug that was in the edge splitting code of the
triangulator that was exposed by https://skia-review.googlesource.com/c/skia/+/432196
Before that CL, intersections of two lines would be clamped to one of the
4 vertices of the 2 segments. In the CL linked, the clamping was adjusted
to clamp X and Y axes separately, so it increased the chance that a
clamped intersection would have its X or Y coord equal to line's vertex
but differ along the other coord (when they both equaled, they were
considered coincident and splitting that edge did nothing).
Splitting an edge at its intersection was intended to split (p0 to p1)
into new lines (p0 to v) and (v to p1) where p0 < v < p1 according to the
vertical or horizontal sorting that was imposed on the mesh. For a given
line segment and a clamped vertex, there are 8 ways the intersection
could be clamped (4 edges and 4 corners). If the edge has a positive
non-zero slope, a zero slope, or an infinite slope, in all cases the
clamped intersection will be sorted correctly and satisfy p0 < v < p1.
However, if the edge has negative slope
vertical: p0.y<p1.y and p0.x>p1.x,
horizontal: p0.x<p1.x and p0.y<p1.y
then intersections snapped to the primary sorting axis will be out of
order and produce a split such that v < p0 < p1 or p0 < p1 < v. This
was already detected, but it didn't update the winding of the new edge
to preserve the original winding from p0 to p1.
In these out-of-order cases, the intersection point is the top of both
the new and old edge, or the bottom of both the new and old edge. This
means that winding "top to bottom" on the new edge would go in the
opposite direction as the original winding from p0 to p1. Flipping the
winding on the new edge preserves the intended winding of the contour
while still allowing the edges/vertices to be sorted consistently.
This showed up as large gradients in the AA triangulator because w/o the
winding adjustment, the winding flip at the new edge would confuse the
border extractor that was used to compute insets and outsets for the 1px
coverage ramp. It would then use edges that were normally unrelated to
each and declare their line intersections as the "interior" with full
coverage. Obviously these could be anywhere so the 1px coverage ramp
would get smeared across that shape.
Bug: chromium:1257515
Change-Id: I015d6b4767db352e3eecfc53047958e74320268d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/458057
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2021-10-11 20:41:32 +00:00
|
|
|
"$_gm/crbug_1257515.cpp",
|
2022-04-11 15:48:19 +00:00
|
|
|
"$_gm/crbug_1313579.cpp",
|
2020-01-22 19:32:11 +00:00
|
|
|
"$_gm/crbug_224618.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-06-13 17:13:13 +00:00
|
|
|
"$_gm/crbug_908646.cpp",
|
GrTessellator: improved straight skeleton implementation.
This patch improves the straight skeleton implementation used by
GrTessellator to collapse overlap regions in the alpha gradient border.
The resulting quality improvement can be seen in the
"thinconcavepaths" GM, for example, where the coverage values of
the "thin right angle", "thin rect and triangle" and "skinny snake"
are now lower and match the raster backend more closely. It also improves
correctness, such as on the linked Chromium bugs below.
Previously, the straight skeleton was performed using the same Vertex
and Edge classes used for tessellation, but this led to fragility in
maintaining the connectivity and ordering required by those classes.
Instead, that functionality has been moved to new SSEdge and SSVertex
classes. Their construction results in alternating SSVertex and
SSEdges around the boundary of the each overlap region, shrunk by one
SSEdge as the boundary collapses.
Applying events may now also create further events (chained events),
as intersections between newly-adjacent bisectors change the structure
of the skeleton. This is always calculated from the bisectors of
original boundary, not the shrunk boundary of the straight skeleton,
which is why each SSEdge points at its originating Edge. If the edges
are parallel or near-parallel, the bisector may be infinite. This is
handled by a new flavour of create_event(), which does a Line/Line
intersection (rather than an Edge/Edge intersection) to find the
intersection between the infinite bisector and an adjacent bisector.
Several ancillary bugs were fixed: the priority queue used to represent
edge events was sorting the inner edges incorrectly. These need to be
sorted in descending not ascending order of coverage. Its implementation
was moved from Skia's TDPQueue to std::priority_queue(), which is more
flexible in specifying a comparator.
check_for_intersection()'s partner synthesis code was moved into a new
function, compute_bisector(), also used by the chained skeleton events
code.
Degenerate edges are now removed during the simplify_boundary() pass.
They were previously detected but ignored, causing incorrect inner and
outer tangents to be computed in stroke_boundary().
An fSynthetic flag was added to Vertex, in order to detect vertices
which cannot be moved by an edge collapse event (e.g., intersections
with non-boundary edges, merged vertices, straight skeleton vertices).
More raw implementation notes:
Connect straight skeleton vertices as we find them, so we don't
have to use partnering (ss_connect()).
Only disconnect edges which are still alive after event application.
Add a check for near-parallel lines in compute_bisector().
Don't use edge type to determine direction to offset for bisectors.
The winding should already include this information.
Move Event ownership to SSEdge.
If we're down to the last two edges in a skeleton, don't check for events.
Add concave_arc_and_circle GM.
Add a collapsepaths GM.
Bug: 941429, 913349, 929915, 945853
Change-Id: Ib89e231d0e8611f8735fd3592db6391da096369d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/215094
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-05-22 14:50:14 +00:00
|
|
|
"$_gm/crbug_913349.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",
|
2019-04-18 18:07:27 +00:00
|
|
|
"$_gm/crbug_946965.cpp",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/crbug_947055.cpp",
|
2019-08-30 14:03:15 +00:00
|
|
|
"$_gm/crbug_996140.cpp",
|
2021-09-24 18:45:35 +00:00
|
|
|
"$_gm/crop_imagefilter.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",
|
2021-12-21 15:36:58 +00:00
|
|
|
"$_gm/custommesh.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/draw_bitmap_rect_skbug4374.cpp",
|
|
|
|
"$_gm/drawable.cpp",
|
|
|
|
"$_gm/drawatlas.cpp",
|
|
|
|
"$_gm/drawatlascolor.cpp",
|
|
|
|
"$_gm/drawbitmaprect.cpp",
|
2021-04-16 15:31:39 +00:00
|
|
|
"$_gm/drawglyphs.cpp",
|
2018-10-12 15:42:02 +00:00
|
|
|
"$_gm/drawimageset.cpp",
|
2022-02-01 19:43:39 +00:00
|
|
|
"$_gm/drawlines_with_local_matrix.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/drawminibitmaprect.cpp",
|
|
|
|
"$_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",
|
2021-02-11 18:19:38 +00:00
|
|
|
"$_gm/dsl_processor_test.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/dstreadshuffle.cpp",
|
2019-11-11 18:47:25 +00:00
|
|
|
"$_gm/ducky_yuv_blend.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/emboss.cpp",
|
|
|
|
"$_gm/emptypath.cpp",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/encode.cpp",
|
2019-05-03 15:48:07 +00:00
|
|
|
"$_gm/encode_alpha_jpeg.cpp",
|
2020-05-28 21:12:59 +00:00
|
|
|
"$_gm/encode_color_types.cpp",
|
2019-05-03 15:48:07 +00:00
|
|
|
"$_gm/encode_platform.cpp",
|
|
|
|
"$_gm/encode_srgb.cpp",
|
2020-01-31 15:15:05 +00:00
|
|
|
"$_gm/exoticformats.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/fadefilter.cpp",
|
|
|
|
"$_gm/fatpathfill.cpp",
|
2021-10-12 00:05:30 +00:00
|
|
|
"$_gm/fillrect_gradient.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/filltypes.cpp",
|
|
|
|
"$_gm/filltypespersp.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",
|
2019-08-29 20:10:13 +00:00
|
|
|
"$_gm/fpcoordinateoverride.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/gammatext.cpp",
|
|
|
|
"$_gm/getpostextpath.cpp",
|
|
|
|
"$_gm/giantbitmap.cpp",
|
|
|
|
"$_gm/glyph_pos.cpp",
|
|
|
|
"$_gm/gm.cpp",
|
2021-02-14 22:25:35 +00:00
|
|
|
"$_gm/gm.h",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/gradient_dirty_laundry.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/gradient_matrix.cpp",
|
|
|
|
"$_gm/gradients.cpp",
|
|
|
|
"$_gm/gradients_2pt_conical.cpp",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/gradients_degenerate.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/gradients_no_texture.cpp",
|
|
|
|
"$_gm/gradtext.cpp",
|
2021-10-29 20:33:54 +00:00
|
|
|
"$_gm/graphitestart.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/grayscalejpg.cpp",
|
|
|
|
"$_gm/hairlines.cpp",
|
|
|
|
"$_gm/hairmodes.cpp",
|
|
|
|
"$_gm/hardstop_gradients.cpp",
|
2021-10-08 21:33:47 +00:00
|
|
|
"$_gm/hardstop_gradients_many.cpp",
|
2017-02-14 19:15:31 +00:00
|
|
|
"$_gm/highcontrastfilter.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/hittestpath.cpp",
|
2017-05-05 17:49:00 +00:00
|
|
|
"$_gm/hsl.cpp",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/hugepath.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",
|
2019-09-24 02:16:03 +00:00
|
|
|
"$_gm/inverseclip.cpp",
|
2020-04-03 15:59:37 +00:00
|
|
|
"$_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",
|
2019-07-29 21:38:40 +00:00
|
|
|
"$_gm/labyrinth.cpp",
|
2021-01-28 00:59:45 +00:00
|
|
|
"$_gm/largeclippedpath.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",
|
|
|
|
"$_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",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/make_raster_image.cpp",
|
2017-05-04 12:53:32 +00:00
|
|
|
"$_gm/makecolorspace.cpp",
|
2018-04-24 03:14:42 +00:00
|
|
|
"$_gm/mandoline.cpp",
|
2021-06-24 00:47:09 +00:00
|
|
|
"$_gm/manypathatlases.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/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/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",
|
2019-04-03 18:04:08 +00:00
|
|
|
"$_gm/overdrawcanvas.cpp",
|
2016-11-22 20:48:50 +00:00
|
|
|
"$_gm/overdrawcolorfilter.cpp",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/overstroke.cpp",
|
2018-09-11 16:11:46 +00:00
|
|
|
"$_gm/p3.cpp",
|
2022-02-17 10:37:49 +00:00
|
|
|
"$_gm/palette.cpp",
|
2021-01-29 21:35:45 +00:00
|
|
|
"$_gm/particles.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/patch.cpp",
|
|
|
|
"$_gm/path_stroke_with_zero_length.cpp",
|
2019-07-12 15:00:41 +00:00
|
|
|
"$_gm/patharcto.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_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/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",
|
2018-04-03 14:00:37 +00:00
|
|
|
"$_gm/polygonoffset.cpp",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/polygons.cpp",
|
2019-04-30 17:28:26 +00:00
|
|
|
"$_gm/postercircle.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",
|
2019-06-06 18:39:52 +00:00
|
|
|
"$_gm/rasterhandleallocator.cpp",
|
2016-12-22 15:52:25 +00:00
|
|
|
"$_gm/readpixels.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/recordopts.cpp",
|
|
|
|
"$_gm/repeated_bitmap.cpp",
|
|
|
|
"$_gm/resizeimagefilter.cpp",
|
|
|
|
"$_gm/roundrects.cpp",
|
|
|
|
"$_gm/rrect.cpp",
|
|
|
|
"$_gm/rrectclipdrawpaint.cpp",
|
2020-12-23 16:58:16 +00:00
|
|
|
"$_gm/rsxtext.cpp",
|
2019-03-04 18:07:36 +00:00
|
|
|
"$_gm/runtimecolorfilter.cpp",
|
2019-09-20 16:19:11 +00:00
|
|
|
"$_gm/runtimefunctions.cpp",
|
2021-05-26 20:51:08 +00:00
|
|
|
"$_gm/runtimeimagefilter.cpp",
|
2020-11-09 20:14:49 +00:00
|
|
|
"$_gm/runtimeintrinsics.cpp",
|
2019-06-20 16:40:30 +00:00
|
|
|
"$_gm/runtimeshader.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/samplerstress.cpp",
|
2017-01-14 18:45:02 +00:00
|
|
|
"$_gm/savelayer.cpp",
|
2018-02-13 20:21:34 +00:00
|
|
|
"$_gm/scaledemoji.cpp",
|
2018-07-18 19:32:08 +00:00
|
|
|
"$_gm/scaledemoji_rendering.cpp",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/scaledstrokes.cpp",
|
2018-01-18 21:06:54 +00:00
|
|
|
"$_gm/shadermaskfilter.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/shadertext3.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",
|
2018-03-14 08:04:09 +00:00
|
|
|
"$_gm/sharedcorners.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/showmiplevels.cpp",
|
2017-02-06 17:32:55 +00:00
|
|
|
"$_gm/simple_magnification.cpp",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/simpleaaclip.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/simplerect.cpp",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/skbug1719.cpp",
|
2021-07-16 19:41:56 +00:00
|
|
|
"$_gm/skbug_12212.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/skbug_257.cpp",
|
|
|
|
"$_gm/skbug_4868.cpp",
|
|
|
|
"$_gm/skbug_5321.cpp",
|
2019-01-15 17:09:25 +00:00
|
|
|
"$_gm/skbug_8664.cpp",
|
2019-04-05 15:54:37 +00:00
|
|
|
"$_gm/skbug_8955.cpp",
|
2019-08-14 00:05:04 +00:00
|
|
|
"$_gm/skbug_9319.cpp",
|
2020-01-28 19:12:50 +00:00
|
|
|
"$_gm/skbug_9819.cpp",
|
2021-11-10 13:34:51 +00:00
|
|
|
"$_gm/slug.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",
|
2020-01-08 21:27:59 +00:00
|
|
|
"$_gm/strokerect_anisotropic.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/strokerects.cpp",
|
|
|
|
"$_gm/strokes.cpp",
|
|
|
|
"$_gm/stroketext.cpp",
|
|
|
|
"$_gm/subsetshader.cpp",
|
|
|
|
"$_gm/surface.cpp",
|
2020-06-04 17:30:51 +00:00
|
|
|
"$_gm/swizzle.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/tablecolorfilter.cpp",
|
|
|
|
"$_gm/tallstretchedbitmaps.cpp",
|
2017-02-10 01:45:46 +00:00
|
|
|
"$_gm/testgradient.cpp",
|
2019-05-02 16:58:29 +00:00
|
|
|
"$_gm/text_scale_skew.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/textblob.cpp",
|
|
|
|
"$_gm/textblobblockreordering.cpp",
|
|
|
|
"$_gm/textblobcolortrans.cpp",
|
|
|
|
"$_gm/textblobgeometrychange.cpp",
|
|
|
|
"$_gm/textblobmixedsizes.cpp",
|
|
|
|
"$_gm/textblobrandomfont.cpp",
|
|
|
|
"$_gm/textblobshader.cpp",
|
|
|
|
"$_gm/textblobtransforms.cpp",
|
|
|
|
"$_gm/textblobuseaftergpufree.cpp",
|
|
|
|
"$_gm/texteffects.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",
|
2019-05-02 14:47:46 +00:00
|
|
|
"$_gm/tilemodes_alpha.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_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",
|
2020-05-07 20:58:40 +00:00
|
|
|
"$_gm/userfont.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_gm/variedtext.cpp",
|
2020-04-03 15:59:37 +00:00
|
|
|
"$_gm/verifiers/gmverifier.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
"$_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",
|
2020-06-11 16:34:03 +00:00
|
|
|
"$_gm/ycbcrimage.cpp",
|
2019-12-04 16:05:35 +00:00
|
|
|
"$_gm/yuv420_odd_dim.cpp",
|
2016-10-27 16:21:40 +00:00
|
|
|
]
|
2019-09-25 21:14:35 +00:00
|
|
|
|
2020-06-03 16:14:55 +00:00
|
|
|
gl_gm_sources = [ "$_gm/rectangletexture.cpp" ]
|
2021-06-16 16:05:54 +00:00
|
|
|
|
2021-07-01 16:12:52 +00:00
|
|
|
skgpu_v1_gm_sources = [
|
2021-07-06 17:43:56 +00:00
|
|
|
"$_gm/aarecteffect.cpp",
|
|
|
|
"$_gm/beziereffects.cpp",
|
2021-07-21 19:39:51 +00:00
|
|
|
"$_gm/bigrrectaaeffect.cpp",
|
2021-07-06 17:43:56 +00:00
|
|
|
"$_gm/clockwise.cpp",
|
|
|
|
"$_gm/constcolorprocessor.cpp",
|
|
|
|
"$_gm/convexpolyeffect.cpp",
|
2021-07-21 19:39:51 +00:00
|
|
|
"$_gm/destcolor.cpp",
|
2021-07-06 17:43:56 +00:00
|
|
|
"$_gm/drawquadset.cpp",
|
2021-07-21 19:39:51 +00:00
|
|
|
"$_gm/fp_sample_chaining.cpp",
|
2021-07-06 17:43:56 +00:00
|
|
|
"$_gm/fwidth_squircle.cpp",
|
2021-06-21 13:25:11 +00:00
|
|
|
"$_gm/gpu_blur_utils.cpp",
|
2021-07-21 19:39:51 +00:00
|
|
|
"$_gm/lazytiling.cpp",
|
2021-06-16 16:05:54 +00:00
|
|
|
"$_gm/preservefillrule.cpp",
|
2021-07-22 19:11:03 +00:00
|
|
|
"$_gm/rrects.cpp",
|
2021-07-06 17:43:56 +00:00
|
|
|
"$_gm/texelsubset.cpp",
|
2021-06-16 16:05:54 +00:00
|
|
|
"$_gm/widebuttcaps.cpp",
|
2021-07-21 19:39:51 +00:00
|
|
|
"$_gm/yuvtorgbsubset.cpp",
|
2021-06-16 16:05:54 +00:00
|
|
|
]
|
|
|
|
|
2021-07-01 16:12:52 +00:00
|
|
|
gm_sources += skgpu_v1_gm_sources
|