The 'dont_clip_to_layer' GM does not balance its layers. It calls
saveLayer() 3x but restore() only 2x. This may be a bug in the GM
itself, but I'm not sure so I haven't changed it here.
If ok is writing .pngs, the surface passes ownership of its buffer to an
image snapshot, simply marking it as immutable. Then, when the surface
is destroyed later, it destroys its inner canvas, which restores its
save stack to zero, actually doing some drawing in the case of
unbalanced saveLayer()s. We then call notifyPixelsChanged() and hit an
assert saying "you just wrote some pixels but this buffer was marked
immutable."
DM doesn't show this problem because it's doesn't really use surfaces
and images, just bitmaps. There's no ownership handoff and nothing is
ever immutable, so the condition triggering the assert never comes up.
I'm not really sure where we want to say is the bug:
- SkCanvas can draw in its destructor?
- SkSurface doesn't restore to zero before snapping an image?
- that dont_clip_to_layer should call restore three times?
In any case, this guards against it in ok.
I was using this as a convenient crash to help figure out how to best
save and print stack traces, but now that I've got that worked out we
might as well fix this.
Change-Id: Id6d397f534dd1b50219e0d3078c989a4910883a6
Reviewed-on: https://skia-review.googlesource.com/10140
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
This seems to work pretty nicely for each engine in the expected case of
few crashes. The serial and thread engines just dump the first crash
stack to stderr before dying, while the fork engine saves all crashes to
a temporary file, then prints that to stderr once everything's finished.
I'm not sold on this TLS solution as being the best way to know what
was running when we crashed, but it's better than printing nothing.
Change-Id: I0aca66529301b1ad9bd51ec728848817586c606d
Reviewed-on: https://skia-review.googlesource.com/10102
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
This is a step towards removing the non-linear blending flag from
SkColorSpace. The flag on SkColorSpace used to control the premul
behavior - now it is controlled by this option.
BUG=skia:
Change-Id: Ia29bd8c2b0596a93c6aa14332dcd9bd39e388a90
Reviewed-on: https://skia-review.googlesource.com/10008
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
This reverts commit fde9bff19c.
Reason for revert: RenderNodeDrawableTests.cpp fix has landed in Android
Original change's description:
> Revert "Remove Android-specific SK_SUPPORT_LEGACY_IMG_SNAPSHOT flag"
>
> This reverts commit c3efe67856.
>
> Reason for revert: RenderNodeDrawableTests.cpp
>
> Original change's description:
> > Remove Android-specific SK_SUPPORT_LEGACY_IMG_SNAPSHOT flag
> >
> > Android has been updated to use the new signature so this should no longer be needed
> >
> > Change-Id: Id745191e815381d032aba6a49bf4baf9c53b2385
> > Reviewed-on: https://skia-review.googlesource.com/9985
> > Reviewed-by: Derek Sollenberger <djsollen@google.com>
> > Commit-Queue: Robert Phillips <robertphillips@google.com>
> >
>
> TBR=djsollen@google.com,robertphillips@google.com,reviews@skia.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
>
> Change-Id: I0211342b237373fe40d205bb18bbef5efce56bf3
> Reviewed-on: https://skia-review.googlesource.com/9946
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>
>
TBR=djsollen@google.com,robertphillips@google.com,reviews@skia.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Change-Id: Ia517aafc7c9c589d18c0e94699cad3f5acc0e941
Reviewed-on: https://skia-review.googlesource.com/10103
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
- Updates GrPathUtils to computes the KLM functionals directly instead
of deriving them from their explicit values at the control points.
- Updates the utility to return these functionals as a matrix
rather than an array of scalar values.
- Adds a benchmark for chopCubicAtLoopIntersection.
BUG=skia:
Change-Id: I97a9b5cf610d33e15c9af96b9d9a8eb4a94b1ca7
Reviewed-on: https://skia-review.googlesource.com/9951
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Android is the only user of this looper. They never pass any flags.
BUG=skia:
Change-Id: I87b02ef7bc0ed94bca82637d60adddf34575a3e6
Reviewed-on: https://skia-review.googlesource.com/10057
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Mike Reed <reed@google.com>
This runs much faster. Very good idea.
Change-Id: I088aa9588c069a17e4745be55c2397114ee8a2bc
Reviewed-on: https://skia-review.googlesource.com/10053
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
From recent changes these should now all pass.
BUG=skia:6396
Change-Id: I4423de1a192017794a732e5bb6eeef7ccc87407c
Reviewed-on: https://skia-review.googlesource.com/10048
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
The FontMetricsFlags::kUnderlineThinknessIsValid_Flag has a typo in it.
Fortunately no user currently uses this enumeration value by name but
instead uses the getter so the name can be updated.
BUG=skia:6174
Change-Id: I810260d826482de1da8876cd9739d24b3bfb0f95
Reviewed-on: https://skia-review.googlesource.com/10050
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
This reverts commit 3bc9bfea5e.
Reason for revert: I broke something subtle.
Original change's description:
> Remove texture sampling from GrConfigConversionEffect
>
> BUG=skia:
>
> Change-Id: If5df087d3fe11098f468deab5f2fc8beb782cc83
> Reviewed-on: https://skia-review.googlesource.com/10026
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>
>
TBR=bsalomon@google.com,robertphillips@google.com,brianosman@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Change-Id: Icca2f435b30512305f3e483689320a5930dc1467
Reviewed-on: https://skia-review.googlesource.com/10052
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change-Id: I9d01656a9d9b7aa3ab352dd4c168b26da620a903
Reviewed-on: https://skia-review.googlesource.com/9978
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Minor cleanup.
Change-Id: Ide69516c686450e6441368382c86444da6a74937
Reviewed-on: https://skia-review.googlesource.com/9950
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
BUG=skia:
Change-Id: If99ba2797dfca547ce98cd9c1a1f1c234cf8791e
Reviewed-on: https://skia-review.googlesource.com/10027
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Fixes the gamut gm in gbr modes and maybe others.
BUG=skia:
Change-Id: I341f8fe795860862158a823c99efddaa4478a3a7
Reviewed-on: https://skia-review.googlesource.com/10040
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
BUG=skia:
Change-Id: If5df087d3fe11098f468deab5f2fc8beb782cc83
Reviewed-on: https://skia-review.googlesource.com/10026
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change-Id: If524a02e916d711057d6f2102efb0404b1c0b988
Reviewed-on: https://skia-review.googlesource.com/10036
Commit-Queue: Ravi Mistry <rmistry@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
If SkRefCnt_SafeAssign is erroneously invoked simultaneously by two
threads on the same destination, a likely outcome is that the
reference count of an object other than the replaced dst will
be decremented. This results in an extra reference count decrement,
which usually means that the final reference count decrement will
be applied to a random location in an object that has already been
reallocated. This is exceedingly hard to debug.
We add a hack to detect such data races with sufficiently high
probability, so that such a data race bug should sometimes actually
generate bug reports that lend themselves to diagnosis.
We detect changes within a relatively larger range that normally
includes several (typically slow) memory fences. Not all such changes
would provoke a crash. Even if we decrement the wrong reference count,
there's a chance we would decrement a dead location. Thus, to
avoid potentially adding instability, we currently only log.
This change tries to minimize additional runtime overhead.
The macro is only expanded a few dozen times, so we do not worry too
much about code size.
Bug: b/31227650
Change-Id: Ia40c9ed2c4d0fa578ea682fbec4b71a2ef22a5d1
Reviewed-on: https://skia-review.googlesource.com/9994
Commit-Queue: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
The zlib source we DEPS in for testing has been patched with x86
optimizations, some requring SSE2, some SSE4.2, and some PCLMULQDQ
(between SSE4.2 and AVX).
Might as well turn them on?
zlib actually boils everything down into one do-we-have-everything bit.
That's a little weird... I don't see any real reason not to use
fill_window_sse() on a machine with SSE2 but not SSE4.2. Whatever.
While tweaking libpng settings is really where it's at to make PNG
encoding faster, this is kind of a nice little cherry on top. Won't
help people who are using their own zlib, of course.
BUG=skia:6409
Change-Id: I459689069f7559365a66d0d29b33664907704d8e
Reviewed-on: https://skia-review.googlesource.com/10033
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
It appears we were not setting the CPU for our Build
Tasks, which confused our capacity metrics.
BUG=skia:
Change-Id: I60cbe3b99b9de6865141f124df5618975bf65a05
Reviewed-on: https://skia-review.googlesource.com/10020
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
BUG=skia:6405
Change-Id: I63b60135f1562a4ce1f1a37b719aa01fc62d8790
Reviewed-on: https://skia-review.googlesource.com/9984
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
whenever we change the VkPipeline. All these secondary CBs are still
submitted within one render pass.
This works around the amd bug linked in the bug below. It will probably
cause a slight performance hit, so I will track it on perf and revert if
the hit is significant.
BUG=skia:6406
Change-Id: I48ff39ab36cfa96a67397f745ff65fe8b199f02b
Reviewed-on: https://skia-review.googlesource.com/9987
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Trying to decompose read/writePixels into some reusable chunks.
BUG=skia:5853
Change-Id: If08b004b008e8ca7d464d9dc47068e487bae850a
Reviewed-on: https://skia-review.googlesource.com/10015
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This reverts commit 4ef0148202.
Reason for revert: This breaks the android autoroller.
Original change's description:
> Add support for writing icc profiles to the jpeg encoder
>
> Also, share the impl for skjpeg_error_mgr between the
> jpeg decoder and encoder. They are already identical
> anyway.
>
> BUG=skia:
>
> Change-Id: I4d67f28126388fef3057d62b6e0b203e21ed4afb
> Reviewed-on: https://skia-review.googlesource.com/10011
> Reviewed-by: Leon Scroggins <scroggo@google.com>
> Commit-Queue: Matt Sarett <msarett@google.com>
>
TBR=msarett@google.com,scroggo@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Change-Id: Idbb9918370e8384e39d6b7d1c3bcd9545ce4cfd1
Reviewed-on: https://skia-review.googlesource.com/10017
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Derek Sollenberger <djsollen@google.com>
When the first thing we do in a GrGpuCommandBuffer is do an inlineUpload,
we need to make sure we've initialized the command buffer in Vulkan.
BUG=skia:
Change-Id: Iabee770864a61697c55fb1df18b31862d8df3cdc
Reviewed-on: https://skia-review.googlesource.com/9970
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
gm.h includes sk_tool_utils.h but does not use it.
The bulk of this CL makes each gm that uses sk_tool_utils include it.
sk_tool_utils.h also provided SkRandom and SkTDArray,
so a couple GMs add those headers too.
Change-Id: Ieb2a7c542f0ca89c3223f744fc11b0ff37af36c1
Reviewed-on: https://skia-review.googlesource.com/10014
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
Also, share the impl for skjpeg_error_mgr between the
jpeg decoder and encoder. They are already identical
anyway.
BUG=skia:
Change-Id: I4d67f28126388fef3057d62b6e0b203e21ed4afb
Reviewed-on: https://skia-review.googlesource.com/10011
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
In release, path hangs because buffers overflow.
Debug shows that the clipped cubic generates 34 points although
a maximum of 32 are expected.
The path has very small numbers that fool MaxCurvature into
thinking that there are more places to break the cubic than
are necessary.
To make this bullet-proof, increase the verbs and points.
Allow (1 line + 1 cubic) * (3 x-pieces) * (3 y-pieces) == 18 verbs.
Allow (6 points for line + cubic + line) * 9 pieces == 54 points.
R=reed@google.com,liyuqian@google.com
BUG=698714
Change-Id: I04fad10c151c79d0c53465a2b658aa4dd59f1c98
Reviewed-on: https://skia-review.googlesource.com/9983
Reviewed-by: Yuqian Li <liyuqian@google.com>
Commit-Queue: Cary Clark <caryclark@google.com>
Added PremulOutput and UnpremulOutput FP helpers. These are used
(rather than GrConfigConversionEffect) when working with FP16
textures (and will also be used for other configs that can't be
round-tripped via rounding).
BUG=skia:5853
Change-Id: I101592c26c4f0b379d5e5a8678ef7b2f08e6ad56
Reviewed-on: https://skia-review.googlesource.com/9980
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Add in all Windows and Mac bots
BUG=skia:6395
Change-Id: Ib0d2b36330a44c7cb04833fad6d55b3aa884aafe
Reviewed-on: https://skia-review.googlesource.com/10007
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This reverts commit e3b95ce468.
Reason for revert: This is breaking the Android auto roller.
Original change's description:
> Add support for writing icc profiles to the jpeg encoder
>
> Also, share the impl for skjpeg_error_mgr between the
> jpeg decoder and encoder. They are already identical
> anyway.
>
> BUG=skia:
>
> Change-Id: I029312406dee8734744cc3058acd1f153aefcd83
> Reviewed-on: https://skia-review.googlesource.com/9971
> Reviewed-by: Leon Scroggins <scroggo@google.com>
> Commit-Queue: Matt Sarett <msarett@google.com>
>
TBR=msarett@google.com,scroggo@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Change-Id: I05fb02610dbf4d9475f158d876d6495b0f7e9db4
Reviewed-on: https://skia-review.googlesource.com/10009
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Derek Sollenberger <djsollen@google.com>
This silences a new warning in clang 5.0
Change-Id: Ieb5b75a6ffed60107c3fd16075d2ecfd515b55e8
Reviewed-on: https://skia-review.googlesource.com/10006
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Minor consolidation/clean-up
Change-Id: I9f8ba794cfb95b33dd60ada0e734ddd2f5f21710
Reviewed-on: https://skia-review.googlesource.com/9947
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Color space xforms with Alpha8 images are no-ops.
Other xforms should use 8888 as dst color type.
BUG=skia:
Change-Id: Iede3d94d23c8f4c3dabdaa5450af7b5bfff8d24f
Reviewed-on: https://skia-review.googlesource.com/9996
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>