BUG=skia:7624
Change-Id: Id2b7449048591892ff802484d5e3745a7e1402bb
Reviewed-on: https://skia-review.googlesource.com/109521
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
No other code can be using an SkImageFilter() while it's being
destroyed, so there's not a chance of a race per-se here. But, because
we have not acquired fMutex, there is technically a possibility that the
destructor sees an outdated version of fCacheKeys, not necessarily
reflecting the last change(s) made while another core held the mutex.
This is an unlikely case, but it's worth fixing by locking in the
destructor. This will always be uncontended, and so very cheap.
Bug: skia:7666
Change-Id: I9f705bc6e8e99162b90d59b30b8dd51c4f238970
Reviewed-on: https://skia-review.googlesource.com/115929
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
The Chrome perf regressions (817942, 819185) are
caused by the bad choices to use DAA instead of
AAA for stroking simple curves. (BTW, in my tests,
DAA is still faster than SAA so it's not too much
of a regression.)
We previously only considered the number of line segments,
but not the length of each segment. That leads to our
wrong judgement of the path complexity (the number of
intersections per scan line) when there are many short
line segments.
The change will bring the following performance change
to our nanobench:
8.45% slower in clip_strategy_path_10
8.39% slower in draw_stroke_bezier_quad_square_bevel_10
3.91% slower in chart_aa
3.76% faster in lines
6.29% faster in path_stroke_big_oval
22.81% faster in path_stroke_big_circle
24.44% faster in giantdashline_vert_2
The two slower cases, clip_strategy_path_10
and draw_stroke_bezier_quad_square_bevel_10 are caused by
choosing AAA over DAA. Those two tests do seem to be simple
strokes. I'll later investigate why AAA is slower than DAA
for those two cases.
For now, I think that this change is sufficient to address
those chromium perf regresssions.
Bug: chromium:817942 chromium:819185
Change-Id: I1d13c968b17f257b4ede4c70e552db5016baf1ab
Reviewed-on: https://skia-review.googlesource.com/115583
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Cary Clark <caryclark@google.com>
The only tangible effect this CL should have is to use __vectorcall on
all Windows builds, including scalar ones. The code generation is a
little better there with __vectorcall than not, so might as well. This
is a baby step towards vector stages with MSVC, but a very baby step
indeed.
Mostly this refactors and regroups a bunch of logic to reflect my
current thoughts. The BUILD.gn changes are essentially no-ops, but they
simplify things and make our flags more similar to how those targets are
built in Chromium.
(And I cleaned up other /arch: uses so this works.)
Change-Id: I73dd39d15cdc7b3d268231a707952bbbfd91496e
Reviewed-on: https://skia-review.googlesource.com/115644
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
The 3x3 inverse grew unstable on small curves with large coordinates,
not to mention being inefficient. This fixes many bad pixels on the
chalkboard.
Also begins scaling curve gradients by the AA bloat, in order to match
triangle edges more closely and visualize curve AA in the ccpr sample.
Bug: skia:
Change-Id: I0f7da2e7599d4d5c458b3dd307185679dc78bb50
Reviewed-on: https://skia-review.googlesource.com/115527
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
This reflects the long-standing restrictions in our clients (webview) and the reality of the gpu target which just uses scissors.
It also removes one of the few callers of canvas::clipRegion, which we'd like to remove.
Bug: skia:
Change-Id: Ie3b3c6e8752f82cddef256f753000f9da4bdbdee
Reviewed-on: https://skia-review.googlesource.com/113260
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Mike Reed <reed@google.com>
For DDLs, Ganesh needs to know about External & Rectangle textures prior to instantiation (or PromiseImage fulfillment). These new flags allow the client to provide this information when the lazyProxy is created.
The new texture flags work analogously to the render target flags:
GrSurface and GrSurfaceProxy get a new set of accessors for the new flags
The new flags are set appropriately on a GrGLTexture when it is created
For wrapped texture proxies the flags are just copied off of the GrSurface
For lazy-proxies/promise-images the flags are computed up front and passed to the proxy
The GrSurfaceProxy/GrSurface flags equivalence is verified in GrSurfaceProxy::assign
Change-Id: Ia8e1998aa0a36ce4481bfd9e56be21f990e83148
Reviewed-on: https://skia-review.googlesource.com/114985
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
As per comment in change 114371.
Change-Id: I9724d5df205bb1430ebd3371677cce344372decc
Reviewed-on: https://skia-review.googlesource.com/115610
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Change-Id: I438bfb1a43857aa9e7e29b19e53dd921ec6eab1a
Reviewed-on: https://skia-review.googlesource.com/115604
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Make searching indices unsigned so intermediate middle
doesn't overflow. Verified fix runs test in skia:7675
successfully.
R=reed@google.com
Bug: skia:7675
Change-Id: I76be1d3fee8875ae9eb2b18eb070ef66c8006c03
Reviewed-on: https://skia-review.googlesource.com/114798
Reviewed-by: Cary Clark <caryclark@skia.org>
Commit-Queue: Cary Clark <caryclark@skia.org>
After this change it is only tests that are using the old API.
Bug: skia:
Change-Id: I421ab5efbc604769d2356609d61670c289574f3d
Reviewed-on: https://skia-review.googlesource.com/115300
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Change-Id: Id7b67bc1e4e994f96037266adf7dc159980e4169
Reviewed-on: https://skia-review.googlesource.com/115244
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This allows no need for downcasting for specialized use
of SkScalerContext for the remote case. This allows
cache priming to be used in a single process.
BUG=skia:7515
Change-Id: I963a50e36af9deef5a3414fc8a4c94ccfc38deaf
Reviewed-on: https://skia-review.googlesource.com/115121
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Working on the last constructor.
Change-Id: Iad80c3fd13be47ac46d9037af522b3b3337426fd
Reviewed-on: https://skia-review.googlesource.com/115243
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This reverts commit 2ac541e66c.
Reason for revert: try a new fix; the old one doesn't work
because the deltas are not sorted. We use masks specifically
because we don't want to sort deltas.
Original change's description:
> Revert "Check the boundary while cumulating deltas in a mask"
>
> This reverts commit d9779bcf93.
>
> Reason for revert: breaks gold
>
> Original change's description:
> > Check the boundary while cumulating deltas in a mask
> >
> > Without the fix,
> >
> > ./out/Debug/dm --config t8888 -m complexclip_bw
> >
> > will trigger the assert.
> >
> > Note that this boundary check is already in place when deltas are
> > cumulated without using a mask.
> >
> > Bug: skia:
> > Change-Id: I68bfe2b7196d440743d3a7535d097bb8ec7689c3
> > Reviewed-on: https://skia-review.googlesource.com/113210
> > Commit-Queue: Yuqian Li <liyuqian@google.com>
> > Reviewed-by: Cary Clark <caryclark@skia.org>
>
> TBR=liyuqian@google.com,reed@google.com,caryclark@skia.org
>
> Change-Id: Ice0e3618b02ef48b0f2a9f0662a12f76078e984a
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:
> Reviewed-on: https://skia-review.googlesource.com/113170
> Reviewed-by: Yuqian Li <liyuqian@google.com>
> Commit-Queue: Yuqian Li <liyuqian@google.com>
TBR=liyuqian@google.com,reed@google.com,caryclark@skia.org
Change-Id: Ia7a3608a54bed23827ed014213dcd6248adb271d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:7731
Reviewed-on: https://skia-review.googlesource.com/113520
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Yuqian Li <liyuqian@google.com>
This should not affect anything for now. But it may prevent some future
problems where someone accidentally changed isRadiusIncreasing implementation,
and getting confused by the unexpected shading behavior.
Bug: skia:
Change-Id: I45e83f4bc9eefbdc1ad1c196a43444e24c782711
Reviewed-on: https://skia-review.googlesource.com/115162
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
If SkImageInfo flatten and unflatten aren't referenced outside
of one test, perhaps they can be removed altogether.
R=reed@google.com
Bug: skia:6898
Change-Id: Ia6f82b66d4496a628ad95c386d1865793f3e31a9
Reviewed-on: https://skia-review.googlesource.com/115074
Commit-Queue: Cary Clark <caryclark@skia.org>
Reviewed-by: Mike Reed <reed@google.com>
This reverts commit be5947c2f3.
Bug: skia:
Change-Id: I06dc15b31042d7827511d0ac2a7f4262c3f09622
Reviewed-on: https://skia-review.googlesource.com/115079
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Allow SkTraceMemoryDump to exclude wrapped objects from dumps. This
helps avoid duplicate dumping when Skia is wrapping an external object
which is already dumped externally.
Bug: 795358
Change-Id: Icbda96b564c81b958d40f74693280ac7d5ba7332
Reviewed-on: https://skia-review.googlesource.com/114681
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Eric Karl <ericrk@chromium.org>
This reverts commit c9a642edf2.
Reason for revert: 1010102 gms broke
Original change's description:
> New read pixels implementation that is simpler but does all conversions on CPU.
>
> Change-Id: Ia548cd24a8544b35a233311706faf48de353b7cf
> Reviewed-on: https://skia-review.googlesource.com/109902
> Commit-Queue: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
TBR=bsalomon@google.com,robertphillips@google.com,brianosman@google.com
Change-Id: I7724a6eef79885ba2a32c1ac871e5b2a9a3c0c12
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/115140
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>