I noticed Viewer lagging significantly when interacting with certain
sliders (such as transform state). It turns out that the UI tracking
would trigger calling Window::setRequestedDisplayParams and that in
turn can trigger a full context recreation, depending on backend.
I'd recently changed GPUs in my machine and apparently its context
creation is substantially slower than my previous one. Historically
I noticed minor jank when interacting, but it was never a deal
breaker.
This splits the parameter tracking into two categories so that lighter
weight widgets can still trigger window invalidation / re-rendering,
without triggering the context creation.
Change-Id: I3eb4c15b802f8b8ea8d8eca386de5dcee22ba9ec
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437685
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Bug: skia:10205
Change-Id: I7c5a0db5018cdc1b25283175d7607947749cfe8e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/435016
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
After the discussion in [1] which was filed also in response to feedback
from Ben, the COLRv1 spec moved to not using a bounding box derived from
the `glyf` glyph for a give glyph id, but instead either use a ClipBox
found for a particular glyph id range from a ClipList array in the
COLRv1 table. If such a ClipBox is not found, perform a traversal of the
COLRv1 graph to compute the union of rectangles to compute a bounding
box.
[1] https://github.com/googlefonts/colr-gradients-spec/issues/251
Includes FreeType roll:
47b1a541cb..2c853b38a7
Fixed: skia:12297
Cq-Include-Trybots: luci.skia.skia.primary:Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Release-All-Android_NativeFonts
Change-Id: Iac3677cb1207b953876b106a1e0d754760612955
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/435116
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Dominik Röttsches <drott@google.com>
Insert/Delete/Backspace
Status line
Change-Id: I38727ddb86bf20cdd6c64363c33ffda03ab3c2c7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/431179
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
When Type names were converted to string_views, Type::clone wasn't
fully updated to clone the typenames in every case.
Change-Id: I1de8a0ad4b5a367178cd0082aa8ccebafbd93c75
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437338
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
7f38e2892c..4686da27b3
2021-08-09 jmadill@chromium.org Add GetImage test with RGB.
2021-08-09 jmadill@chromium.org EGLWindow: Add option to force robust init.
2021-08-09 jmadill@chromium.org EGLWindow: Add option to enable capture limits.
2021-08-09 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 29702b8b93b0 to bfd7c5a55cd0 (62 revisions)
2021-08-09 gert.wollny@collabora.com Capture/Replay: Add option to override test disabling
2021-08-09 gert.wollny@collabora.com Capture/Replay: rework test runner to use expectations
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/angle-skia-autoroll
Please CC robertphillips@google.com on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Tbr: robertphillips@google.com
Change-Id: Ibcccb067d71a7cf25a8d7fd98796f13e54965d69
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437696
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
This makes pool handling easier and less error-prone.
Change-Id: I63a6b63a9ff45431921bfbbc56d537a25e2770c8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437337
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
This reverts commit 717ef9472b.
Reason for revert: Blocking the G3 roll
Original change's description:
> Clean up unflattening paints
>
> Just removing legacy cruft for fonts, and also change to return by
> value (cleaner).
>
> Change-Id: If120931119c32542e06801da2b6d60ba84ba2186
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437676
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Commit-Queue: Mike Reed <reed@google.com>
TBR=bungeman@google.com,fmalita@chromium.org,reed@google.com,skcq-be@skia-corp.google.com.iam.gserviceaccount.com
Change-Id: If735d0212412c0262a6ccb52e7dd224a255906cf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437678
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Bug: skia:11358
Change-Id: Ie70e45b18c12126c8e86700ad1040bc319be385a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436998
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Just removing legacy cruft for fonts, and also change to return by
value (cleaner).
Change-Id: If120931119c32542e06801da2b6d60ba84ba2186
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437676
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
This reverts commit 0de475e29e.
Reason for revert: likely blocking chrome roll with layout test diffs
Original change's description:
> Use a table for dither effect rather than math.
>
> We used to use integer math on sk_FragCoord, when supported, and a
> fallback using floating point (on a 4x4 rather than 8x8 grid). Now we
> precompute a 8x8 table in a texture because it was shown to be
> significantly faster on several devices. Test was done with the following
> running in viewer with the stats layer enabled and looking at total
> frame time:
> SkRandom r;
> for (int i = 0; i < N; ++i) {
> SkColor c[2] = {r.nextU(), c[1] = r.nextU()};
> SkPoint pts[2] = {{r.nextRangeScalar(0, 500), r.nextRangeScalar(0, 500)},
> {r.nextRangeScalar(0, 500), r.nextRangeScalar(0, 500)}};
> SkPaint p;
> p.setDither(true);
> p.setShader(SkGradientShader::MakeLinear(pts, c, nullptr, 2, SkTileMode::kRepeat));
> canvas->drawPaint(p);
> }
>
> Device GPU N no dither int math dither table dither
> Linux desktop QuadroP1000 5000 304ms 400ms (1.31x) 383ms (1.26x)
> TecnoSpark3Pro PowerVRGE8320 200 299ms 820ms (2.74x) 592ms (1.98x)
> Pixel 4 Adreno640 500 110ms 221ms (2.01x) 214ms (1.95x)
> Galaxy S20 FE Mali-G77 MP11 600 165ms 360ms (2.18x) 260ms (1.58x)
>
>
> Bug: b/195281495
> Change-Id: I200a2be8e450ab66f7c8ae340a5c83ec6780db09
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437239
> Commit-Queue: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
TBR=bsalomon@google.com,michaelludwig@google.com,skcq-be@skia-corp.google.com.iam.gserviceaccount.com
Change-Id: If2ba6bb354ba9cc2933ef516a6d80e1dd809aac2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: b/195281495
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437456
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
The last flag that was pushed down was removed here:
https://skia-review.googlesource.com/c/skia/+/435018
Bug: skia:12198
Change-Id: Ia184d6a03fe4078e00dd92d9d3cd87596d0c0fcd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436999
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Accidentally left these behind in previous change.
Change-Id: I77620d27561ce1c73b9509388cd9253c405a95b6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436997
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Bug: skia:10209
Change-Id: I72639b7e768742dcdec810a5a714ce21ff0f6e0a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436565
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
We used to use integer math on sk_FragCoord, when supported, and a
fallback using floating point (on a 4x4 rather than 8x8 grid). Now we
precompute a 8x8 table in a texture because it was shown to be
significantly faster on several devices. Test was done with the following
running in viewer with the stats layer enabled and looking at total
frame time:
SkRandom r;
for (int i = 0; i < N; ++i) {
SkColor c[2] = {r.nextU(), c[1] = r.nextU()};
SkPoint pts[2] = {{r.nextRangeScalar(0, 500), r.nextRangeScalar(0, 500)},
{r.nextRangeScalar(0, 500), r.nextRangeScalar(0, 500)}};
SkPaint p;
p.setDither(true);
p.setShader(SkGradientShader::MakeLinear(pts, c, nullptr, 2, SkTileMode::kRepeat));
canvas->drawPaint(p);
}
Device GPU N no dither int math dither table dither
Linux desktop QuadroP1000 5000 304ms 400ms (1.31x) 383ms (1.26x)
TecnoSpark3Pro PowerVRGE8320 200 299ms 820ms (2.74x) 592ms (1.98x)
Pixel 4 Adreno640 500 110ms 221ms (2.01x) 214ms (1.95x)
Galaxy S20 FE Mali-G77 MP11 600 165ms 360ms (2.18x) 260ms (1.58x)
Bug: b/195281495
Change-Id: I200a2be8e450ab66f7c8ae340a5c83ec6780db09
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437239
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
We were previously using a mix of pass-by-value and pass-by-pointer (to
allow for explicitly null PositionInfo). Being able to pass a null
PositionInfo didn't really add much, since we can just use a nullary-
constructor PositionInfo instead, so these have all been migrated to
by-value.
Change-Id: Ia31e252cac94f64c4b38c29a54e6e7f752e70672
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437276
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Skia has been using the not entirely public HarfBuzz subsetting API.
This API is changing for public release. In order to make the transition
from old to new build flags were added, which would require build
changes as HarfBuzz is updated downstream. Instead detect the existence
of the old or new API and use whichever is present automatically.
Change-Id: I0727f97ad7d394dfb24553076d4b383570cf0002
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437121
Reviewed-by: Garret Rieger <grieger@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
This reverts commit b942d4b436.
Reason for revert: dependent cl no longer blocking android roll, so
this can be relanded.
Original change's description:
> Revert "Avoid expanding clip ops in tests that will remain after feature removal"
>
> This reverts commit d1c51b2572.
>
> Reason for revert: blocking revert that might be breaking android
>
> Original change's description:
> > Avoid expanding clip ops in tests that will remain after feature removal
> >
> > Bug: skia:10208
> > Change-Id: I4fb2c8181bfb8cac3c8ab95c833094c98f8ee6fc
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436159
> > Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> > Reviewed-by: Robert Phillips <robertphillips@google.com>
>
> TBR=robertphillips@google.com,reed@google.com,michaelludwig@google.com,skcq-be@skia-corp.google.com.iam.gserviceaccount.com
>
> Change-Id: Ib62cc03f99793f8f1cb0180145b7557101a23ead
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:10208
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436957
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
# Not skipping CQ checks because this is a reland.
Bug: skia:10208
Change-Id: Iff6e5b2b245426a76b92e895434613fe16ba717c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437277
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
After adding framebuffer support in Metal, the validator is failing
because we're hitting cases where we're trying to use a pipelinestate
that assumes a stencil attachment to render to a framebuffer
without a stencil attachment. This CL addresses this issue.
Change-Id: I6e95f321aa5820a64a8084c457159f917c37a7c7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437119
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
CMake is the only build system which ensures all the referenced headers
actually exist. In the last HarfBuzz roll a few header files were
removed but the headers were not removed from the BUILD.gn file. Remove
the files from the build since they no longer exists.
Apparently CMake bails as fast as possible and only reports one
non-existent file at a time, so this time kept going until it actually
built.
Change-Id: Ib85ef8427a751b507986473ab586a0e7d0261563
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437336
Reviewed-by: Ben Wagner <bungeman@google.com>
To get the Flutter license checks to pass
Bug: skia:12317
Change-Id: I73a1f618276d32a1c737015b5d231daecd8c63ca
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437236
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
This reverts commit 8ba1e71a1f.
Reason for revert: had missed a few places where GrReducedClip needed to
use the equivalent region op, not skClipOp + replace bool.
TBR=robertphillips@google.com,brianosman@google.com,csmartdalton@google.com
Original change's description:
> Revert "Add SkClipStack::replaceClip() separate from deprecated clip op"
>
> This reverts commit 68587ae274.
>
> Reason for revert: breaking path clipping tests in Android?
>
> Original change's description:
> > Add SkClipStack::replaceClip() separate from deprecated clip op
> >
> > The replaceClip functionality was added to allow Android to move off of
> > generalized expanding clips. At the time, SkClipStack simply used the
> > kReplace_SkClipOp to handle it. In order to remove those expanding ops,
> > SkClipStack will need a proper implementation of replaceClip().
> >
> > The clip elements have an additional field to mark if
> > it's a replace (and it's op will be kIntersect). Adds a temporary
> > getRegionOp() function to unify elements that use this field vs.
> > elements that use the deprecated clip op (i.e. if they were deserialized
> > from an SKP that recorded an expanding op).
> >
> > Clients of SkClipOp that checked for replace ops use the new function
> > instead of referring to the enum value directly.
> >
> > Bug: skia:10209
> > Change-Id: I1c16c87fadb2becfe181db717c05e240ac87fd34
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436158
> > Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> > Reviewed-by: Robert Phillips <robertphillips@google.com>
> > Reviewed-by: Chris Dalton <csmartdalton@google.com>
>
> TBR=robertphillips@google.com,brianosman@google.com,csmartdalton@google.com,michaelludwig@google.com,skcq-be@skia-corp.google.com.iam.gserviceaccount.com
>
> Change-Id: If3f99a7d2f2df99c2b99d431d494ca28da66b1d8
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:10209
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436956
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
# Not skipping CQ checks because this is a reland.
Bug: skia:10209
Change-Id: I9feb0f3571ec26580bcdf0fe541f43f2ee8cf8d2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436959
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
The object type is treated like "any", which is not good.
We can be more descriptive of those types.
Change-Id: I39f3dba635c196ea06163deb358a56c9e4f82f6d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437316
Reviewed-by: Florin Malita <fmalita@chromium.org>
This is a "legacy" field in SkPath, and only needed for editing the
path (in funny cases, such as a relative verb or missing moveto).
When we finally make SkPath immutable, we won't need this field at all.
Note: this CL "fixes" the last 2 columns in path_append_extend gm.
They should appear the same as the previous 2 columns.
Change-Id: Ia5f2e8ec586b5f5189fc3ac2cd513fe89d31cd22
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436958
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: William Hesse <whesse@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
DSLParser had been broken by https://skia-review.googlesource.com/c/skia/+/436156,
but it was not caught due to being #ifdef'ed out. This restores it to working
order.
Change-Id: Ic30ed6bc1950aeed08f7ae32f8060ec29cdc3cd9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437019
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Most of the code generated by the fuzzer is nonsense, but there is a
method to its madness. The crash is only triggered under specific
conditions:
- The runtime effect has enough helper functions to mostly fill up the
call graph hash-map. It won't rehash until it gets close to capacity.
- There must be several calls to built-in functions, in order to add
elements to the call graph to force a rehash.
The fuzzer-generated code manages to satisfy both these requirements.
Change-Id: I9a1d7535557fedd4e9bfece3930ac86ede291ffe
Bug: oss-fuzz:36655
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437118
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
We assumed that any time a function call was emitted, we could look up
the mangled function name in our function-name map and it would exist.
This was not true for self-recursive calls, as the function name is
only added to the map after the function is emitted.
We now use the `functionName()` accessor to retrieve the function name,
which will synthesize a mangled name and add it to the map if it is
missing.
(It looks like recursive calls will not actually work properly, though,
because `writeFunctionPrototype` doesn't emit any code, and the SkVM
compiler can't handle recursion at all.)
Change-Id: I021f5009709d9eed8306eb71cb7f42cbc4c29ae9
Bug: oss-fuzz:36655
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437117
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
GLSL allows an array of `lowp float` to be compared against `highp
float` seamlessly because the types are considered to be the same. SkSL,
however, treats these as different types, so we need to coerce the types
to allow this comparison to work.
In other words, these comparisons can cause an array to be implicitly
casted. The expression `myHalf2Array == float[2](a, b)` should be
allowed when narrowing conversions are enabled. To allow this to work,
we need a dedicated IR node representing this type coercion.
We now allow implicit coercion of array types when the array's component
types would be implicitly coercible, and have a new IR node representing
that implicit conversion.
This CL fixes array comparisons, but array assignment needs additional
fixes. It currently results in:
"type mismatch: '=' cannot operate on (types)".
Bug: skia:12248
Change-Id: I99062486c081f748f65be4b36a3a52e95b559812
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436571
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
CMake is the only build system which ensures all the referenced headers
actually exist. In the last HarfBuzz roll a header file was removed
because support for an old table was dropped but the header was not
removed from the BUILD.gn file. Remove the file from the build since it
no longer exists.
Change-Id: I3093e215cfa001534247208787a365db73629f2a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437196
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
3a74ee5282..368e957887
Additionally adds a build option that switches to the new
harfbuzz subsetting api which is coming in the next version
of harfbuzz.
Change-Id: I924a7b4978412d636d4c8d19f5c6021ea3c73d21
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/433737
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
The implementation of skgpu::v2::Device::surfaceFillContext() was
recently removed, also remove its declaration to revent link time
errors.
Change-Id: I2c2d7673e9bb824d79c47c4e00423c63228c9161
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437120
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
GPURenderPipelineDescriptor2 is a typedef of GPURenderPipelineDescriptor
in Dawn, so this change does not affect functionality. It will allow
Dawn to remove the deprecated type.
Bug: dawn:751
Change-Id: Id345f7feb92b4b4ec9d558acbca0d37e76b4c81f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437076
Reviewed-by: John Stiles <johnstiles@google.com>
Auto-Submit: Brandon Jones <bajones@chromium.org>
Commit-Queue: John Stiles <johnstiles@google.com>
A path effect is allowed to modify the stroke, which may affect whether
or not the final path is hairline or not. Handle this similarly to
SkPaint::getFillPath by taking an out parameter which states if the path
is hairline (should be zero stroked) or is an actual fill path.
This simplifies the internal handling of hairlines in SkScalerContext as
well as making the result more in line with the way hairlines are
handled elsewhere. It should also make the removal of
SkPaint::kStrokeAndFill_Style simpler.
Change-Id: I8ae8e3d6ee8a9f686f983cbcf723925b11c4a707
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437020
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
We were performing lookups in fCallGraph using `operator[]` while
looping through fCallGraph via range-based for. `operator[]` will add
entries to the map if the key is not found. This happens if built-in
functions are called, such as `sin`, `cos`, `tan`, etc; this mutates
the call graph mid-loop, which causes unpredictable behavior. In
practice, this can occasionally cause a rehash, which reorders the hash
map and causes items to be skipped over or checked twice.
This flaw meant that over many repeated runs, recursion was occasionally
not detected, and compiling a program with recursion would succeed a
small percentage of the time. The PipelineStageCodeGenerator asserts and
then crashes when presented with such a program.
The fCallGraph is now held as a const pointer, which makes it
impossible to mutate, and lookups are done via .find() which are
non-mutating. Compiling the fuzzer-generated program 10,000 times now
succeeds.
Change-Id: I6915fcfa4a0b1e9f86e5eb4ffd053bc718aed9fb
Bug: oss-fuzz:36655
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437096
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
The optimization logic for swizzling a constructor assumed that every
argument to the constructor was a scalar or vector. When it was written,
this assumption was true. However, we recently added support for casting
mat2x2 to float4 which violates the assumption.
We now check every argument and do not attempt to optimize if a
non-scalar, non-vector arg is found.
Change-Id: Ia2b297bd62dfdf4af56712164fbc80c29c9611eb
Bug: oss-fuzz:36852
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437017
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Update Wuffs to match the version currently used by Chromium
(updated in http://crrev.com/c/3041153)
Change-Id: Id8d74dacef69d27bce48e470b5de42ea277b61d1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436717
Auto-Submit: Nigel Tao <nigeltao@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Bug: skia:11837
Change-Id: Id7aa117af3e026d71caeed3ee6489394e869eed1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/436568
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>