This version has fewer uninitentional sync points.
Turning on stats, looks like roughly 93% of calls
go through the JIT, the rest the interpreter. When
synchronous 100% go through the JIT, of course.
No diffs now that we've made the interpreter and JIT
guarantee consistent math.
Change-Id: Id58c860809970f78773b2ae7f40b3ea091b38440
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/275011
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
This helps guarantee same-machine consistency
between the interpreter and the JIT.
2-3% perf loss on exemplar benches, which we think we can
recover with the following TODO:
TODO(herb): add Op::{fnma,fms,fnms}_f32 for the various ±xy ± z
combinations we can generate in the backends, peephole, etc.
just as we do Op::fma_f32 so we can recover the (tiny) performance
loss here we take from losing those discovered fused instructions.
Change-Id: Id30e1b9178a55e8072a30d2a34e7ed9188543d60
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/275139
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Peephole add(F32,F32) for an argument that is a mul().
As a flourish, only generate Op::fma_f32 on machines we know support
real fused mul-adds. This removes the ambiguity of whether Op::mad_f32
is an FMA or not; the new Op::fma_f32 is always an FMA, and otherwise
you'll just see ordinary mul-add. No more Op::mad_f32.
Change-Id: I38016a2430774583116d8d6a8ada677012c1a8fc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/275138
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
We really only need to_unorm(),
and that's fine with trunc(mad(x, scale, 0.5)).
Change-Id: I1561c678501963a9ae53c22994fc906159fc7199
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/275075
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
I used the wrong data type for encoding the alt text and language of
a node in the PDF structure tree. "Alt" and "Lang" should both be
strings (arbitrary text), not names (which are supposed to be used for
keywords that are defined as part of the text).
Bug: chromium:607777
Change-Id: I1000c177d66a1e4f68afc713fc950369ecf3b408
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/275010
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org>
This fixes a bug where a finish proc from the checkCommandBuffer call could
allow the client to unref an SkImage/SkSurface which may internally cause
us to try to add a command to a commandBuffer (e.g. to switch queues).
Bug: chromium:1049864
Change-Id: I975aa0b17acfdf0df30c48af685f9e6753f095db
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/275042
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
The move constructor and operator= were unfortunate sync points when
trying to do async compilation because fJITEntry was about to move.
We can fix this by making the jit entry target not move even when
Program does, by
- banning Program moves, replacing uses of Program that need that
with std::unique_ptr<Program>,
- or equivalently, doing that internally with a pimpl pattern.
There was enough moving of Programs that I think the pimpl is the
better choice, at least for now.
Change-Id: I014775c473662d9901ba387c48b25fa75ad7a078
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/275006
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Fix for MSAN in tilemode_decal?
Change-Id: I58df5a5e1fdd5a16737d59ad0863df9ca9b15920
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/275040
Auto-Submit: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Bug: skia:9935
Change-Id: I6d9c14ac674dee89a5a8ba726d99b4423c40eb9b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274861
Reviewed-by: Eric Boren <borenet@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Documentation specifies that only the alpha, color filter, image filter
and blend mode are used when restoring the saved layer. The coverage that
would be sent to the mask filter is ill-defined, whereas the explicit
boundary of the separate clip image gets around this.
This also removes the issue of the order in which the mask filter and
image filter would be applied.
Some GMs exercised the save layer with mask filter, but those have
been updated to either expect the MF to be ignored, or modified to
no longer use saveLayer+MF. While Android and Flutter expose a saveLayer
with general Paint API, their documentation matches SkCanvas so hopefully
no one is actually relying on the mask filter in those cases. It does
not appear as if Chrome ever tries to use a saveLayer+MF.
Bug: skia:9561
Change-Id: I67a350fbf565683ea60ea88f83a91270e7dcd187
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274508
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
In support of this add support for border color to GrTextureEffect.
Currently non-zero border colors are always emulated in shader code.
Change-Id: I007e264411d713f8afaf8f160b6cea6d0f35c753
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274282
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
b84969ad69..9e9493f29d
git log b84969ad69c3..9e9493f29dbf --date=short --first-parent --format='%ad %ae %s'
2020-03-04 ynovikov@chromium.org Skip crashing dEQP-GLES3.functional.samplers.*_tex_3d.* on SwANGLE
2020-03-03 cnorthrop@google.com Capture/Replay: Add Query Object support to mid-execution capture
2020-03-03 cnorthrop@google.com Capture/Replay: Update getTexImage for depth/stencil and 3D
2020-03-03 ancheng.qiao@arm.com Vulkan: Add depth to mipmap generation
2020-03-03 xiaoxuan.liu@arm.com Vulkan: Add support for VK_EXT_index_type_uint8
2020-03-03 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/SwiftShader 416d37452275..176f3a3dbbc9 (2 commits)
2020-03-03 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/vulkan-validation-layers/src cb689b0b1d30..f32bf1c930c8 (8 commits)
Created with:
gclient setdep -r third_party/externals/angle2@9e9493f29dbf
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 herb@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/+/master/autoroll/README.md
Cq-Include-Trybots: skia/skia.primary:Build-Debian9-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
Bug: None
Tbr: herb@google.com
Change-Id: I349f021a8ad84dde2afb8fc65de96f41d6100364
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274976
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
This reverts commit a624a534ed.
Reason for revert: Bad perf
Original change's description:
> Use spin lock in SkIDChangeListener
>
> This lock should almost never be contested. This simplifies things and
> also avoid mutex locks when one thread has multiple refs on a path,
> image, ...
>
> Change-Id: I909b490363cb9e81b38ed9edd04272133fb2692b
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274676
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>
TBR=bsalomon@google.com,brianosman@google.com
Change-Id: I45ec3241906429e4d0783b68ebe6398079b73d36
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274956
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
It already makes copies for other reason and is the only generator
relying on the caller.
Change-Id: I5dfdc3bd39040f817c0f953eecf81e8fbdc649a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274862
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
With the addition programInfos being stored on DDLs we need to ensure that the programInfos are deleted before the GrCCPerOpsTaskPaths.
W/o this change we can hit an assert in ~GrCCClipPath.
Change-Id: I02a2b195cae1dfd84a3e9cd2cf6c9b5194c430a8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274860
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Change-Id: I7ae6100a36c1764f40b97f089817b77263544e8a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274857
Auto-Submit: Stephen White <senorblanco@chromium.org>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
As far as I can tell the TLS contexts were an unjustified paranoia.
90%+ of runtime in setupLLVM() is spent under getFunctionAddress()
JITting the function. This change does not affect overhead AFAICT.
Change-Id: I2abe3832ed7b42c0ac67a7605cf7d0bf63e7bd55
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274783
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Add a pimpl struct to hold Program LLVM state,
and have it ref the TLS LLVMContext so we can
manage its lifetime properly instead of leaking.
TODO: try per-program, non-TLS contexts
Change-Id: Iec064678a575f285560a3e9e1e6c0308883dd23a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274781
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Don't try to move listener from one key to another.
Ease up on asserts (they're redundant with other asserts)
Change-Id: I554e5e44b1b2fb027698cf4286b0f5ea206d93af
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274678
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This lock should almost never be contested. This simplifies things and
also avoid mutex locks when one thread has multiple refs on a path,
image, ...
Change-Id: I909b490363cb9e81b38ed9edd04272133fb2692b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274676
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
CFStringCreateWithBytes will return nullptr if the raw string passed is
not valid in the encoding specified. It turns out that in UTF32 the
values between 0xD800 and 0xDFFF and above 0x10FFFF are invalid.
Bug: chromium:1057692
Change-Id: Ic3984d113106cbf8ef393048a97ccc906fb89966
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274679
Auto-Submit: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Make sure getGlyphPositionAtCoordinate works in RTL
Change-Id: I394d868bbbd4a3042e1a2f50901d137c65f1f2b9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274544
Commit-Queue: Julia Lavrova <jlavrova@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Change-Id: Ifc0ab9c5c41cf139a5b6f79e29e6c0112d563667
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274741
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
This makes SkCanvas::drawImage() consistent with the AutoLayerForImageFilter
that applies when the draw isn't a sprite, or if drawImageRect or drawRect
with an image-shader was used instead.
Bug: skia:9561
Change-Id: Ic395f580b06753706ddcaed832535ec4edb3bb5a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274507
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This CL also incidentally adds:
1) a GrMeshDrawOp::Target 'outputView' virtual and switches GrOpFlushState over to overriding it.
2) a createProgramInfo helper to GrSimpleMeshDrawOpHelper
Bug: skia:9455
Change-Id: I88ce51c585b1458ee79a9aaa7024190e9f19198c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274506
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Change-Id: Ie00a12db04350ab0f8c754b3674eaa5a0a556b63
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274596
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
Change-Id: Ia37e0b9cd2f6b6c6e9a728741bec642cdba9f7b1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274555
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
This particular location was chosen because we can rely on it being
present in the recipe bundle. We'll soon run the script to generate
DM flags in gen_tasks, before finally porting the logic to Go inside
gen_tasks itself.
Change-Id: I7e65ec4f354225deafbc03e1b0453ccf4404b041
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274554
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
No behavioral change, just re-organizing the flags.
Change-Id: I49148a92342a8d615a218a85962433d771729959
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274553
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
ff60abaf62..b84969ad69
git log ff60abaf62b4..b84969ad69c3 --date=short --first-parent --format='%ad %ae %s'
2020-03-03 jmadill@chromium.org Vulkan: Use QueryHelper for internal GPU timing.
2020-03-03 jmadill@chromium.org Split up EGLContextCompatibilityTest.
2020-03-03 jmadill@chromium.org Vulkan: Clean up QueryHelper uses.
2020-03-03 jmadill@chromium.org Expose glGetInteger64vEXT.
2020-03-02 lexa.knyazev@gmail.com Add OES_draw_buffers_indexed autogenerated wrappers and validation redirects.
2020-03-02 geofflang@google.com Add scripts for rolling and generating Android.bp for AOSP
Created with:
gclient setdep -r third_party/externals/angle2@b84969ad69c3
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 herb@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/+/master/autoroll/README.md
Cq-Include-Trybots: skia/skia.primary:Build-Debian9-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
Bug: None
Tbr: herb@google.com
Change-Id: I0a322d79c138baf2efe3a91f00d768e113132a7e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274700
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Switch to checking the head of the linked list for the LRU before searching
the hash table.
Change-Id: If28f4759ef609dde11778db8ba91cc9dfdd6a259
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274399
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
I haven't yet seen it slower, and it ought to avoid the most egregious
downclocking from zmm use. Still gets to use all the fancy AVX-512 new
instructions, so it does seem to run faster than just targeting AVX2.
Change-Id: I5738bc28c490619e0303813d69e00c8b6d7bb184
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/274592
Auto-Submit: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>