swap_rb is a big limiting factor on Windows and Linux.
set_rgb just happened to be nearby and easy.
Change-Id: Ic529c7578eeb278476821090127fa8fb1f70c04f
Reviewed-on: https://skia-review.googlesource.com/8859
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
It is renamed to FragmentProcessorAnalysis since it represents the outputs of the final FPs.
It now stores the analysis results that are subsequently needed rather than exposing GrProcOptInfo.
GrProcOptInfo is now only used on color FPs (not coverage).
Miscellaneous related renamings.
Change-Id: I95c518a7a76df6dc294a9fa67c611f8f653247bc
Reviewed-on: https://skia-review.googlesource.com/8534
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Going to start filling these in in biggest-bang-for-the-buck order.
lerp_u8 (i.e. text drawing) is number 1 right now.
Change-Id: If58eaf8ddbb93a6b954c3700fa1a476dca94a809
Reviewed-on: https://skia-review.googlesource.com/8856
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Change-Id: I0ed15ab102fa1e0a364d5f3a953bedd8afbda3c3
Reviewed-on: https://skia-review.googlesource.com/8853
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
***Will allow for simplified Android framework code, they typically
want a color correct transform followed by a gamma encoded premul.
***Chrome does the same, so this will make it easier to replace their
codecs.
***Will decrease code size. Both types of premuls are moved off the
fast path here - one is essentially unused in production and the
other is not "encouraged".
***Will actually make the common case faster: sRGB->sRGB means no
color xform, just premul in SkSwizzler.
BUG=skia:
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD
Change-Id: Ia4ec1d273b6f137151f951d37c0ebf975f6b9a3e
Reviewed-on: https://skia-review.googlesource.com/8848
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>
No interesting change, just getting on std APIs.
Change-Id: I0f42cbb6854b49a6ae8266e5b92f977d27f4e032
Reviewed-on: https://skia-review.googlesource.com/8860
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
This was meant to stay -1 (num_cores() threads) not to become 1 (1 thread).
Change-Id: Ib9b8e1963c0cd16d4c0aba02ccf7a65890a5ef78
Reviewed-on: https://skia-review.googlesource.com/8851
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Change-Id: I060419bc39484b379329a1691e199d9d3db9c808
Reviewed-on: https://skia-review.googlesource.com/8807
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Also: update some of SkPDF to use these rather than the RasterClip.
Change-Id: I5a2564d2269c145135df6a8eda65ab05e4aeaf14
Reviewed-on: https://skia-review.googlesource.com/8159
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
Refactoring to refamiliarize myself with SkTaskGroup and SkThreadPool.
This adds an SkExecutor interface to describe how we use SkThreadPool,
with a global setter and getter for a default instance. Then I rewrote
SkTaskGroup to work with any executor, the global default by default.
I also think I've made the SkTaskGroup::wait() borrow logic clearer
with the addition of SkSemaphore::try_wait(). This lets me keep the
semaphore count and actual count of work in perfect sync.
Change-Id: I6bbdfaeb0e2c3a43daff6192d34bc4a3f7210178
Reviewed-on: https://skia-review.googlesource.com/8836
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
This is preparation for removing skia_enable_jumper, making it true.
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN
Change-Id: I21763ea5ebafaaddda7056176796307f1a81d722
Reviewed-on: https://skia-review.googlesource.com/8830
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
This reverts commit 02241e976b.
Reason for revert: cq proto has been rolled to depot_tools.
Original change's description:
> Revert "CQ config: add gerrit CQAbility verifier."
>
> This reverts commit 0462822132.
>
> Reason for revert: Lets revert until the proto is rolled into Skia.
>
> Original change's description:
> > CQ config: add gerrit CQAbility verifier.
> >
> > Goal is to ensure that unreviewed and untrusted code isn't sent through
> > CQ to try bots, by accident or through malicious intent.
> >
> > R=rmistry@google.com
> > BUG=chromium:692613
> > NOTRY=True
> >
> > Change-Id: I750be91895f5b77229b8f4a22216f00eaa75f7a0
> > Reviewed-on: https://skia-review.googlesource.com/8620
> > Reviewed-by: Ravi Mistry <rmistry@google.com>
> > Commit-Queue: Ravi Mistry <rmistry@google.com>
> >
>
> TBR=rmistry@google.com,reviews@skia.org,tandrii@google.com
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=chromium:692613
>
> Change-Id: I6d4b821b2a02ef3e097cf68cd8ebfb2b51d4d165
> Reviewed-on: https://skia-review.googlesource.com/8663
> Reviewed-by: Ravi Mistry <rmistry@google.com>
> Commit-Queue: Ravi Mistry <rmistry@google.com>
>
R=rmistry@google.com,reviews@skia.org,tandrii@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
BUG=chromium:692613
Change-Id: Icefcd69b4608e5294f358de66a9ce014c9950ede
Reviewed-on: https://skia-review.googlesource.com/8740
Reviewed-by: Ravi Mistry <rmistry@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
Invert some math to remove a negation.
Don't keep a persistent count in EdgeList; we'll test for degenerate
boundaries in boundary_to_aa_mesh().
Make connect() use the top/bottom ordering that new_edge has already
done for us.
Don't add the an edge to the same poly twice when it's easily detectable.
Remove some superfluous variables and intialization.
BUG=skia:
Change-Id: I0efd9ec385d6dfec8950b7acfc6dd25572f667b5
Reviewed-on: https://skia-review.googlesource.com/8784
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
Valgrind uses the unmodified binary. See skia:6267.
BUG=skia:6267
Change-Id: I3fcecf9ffce67ebec88d4005e464c66d25c6aa21
Reviewed-on: https://skia-review.googlesource.com/8833
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
Starting with uninitialized vectors is only minorly faster (<0.5%).
I'd rather keep the zeroes and feel warm and fuzzy.
Change-Id: Ib28aef9c9a75f53e2ab645bfb094582e30b7df07
Reviewed-on: https://skia-review.googlesource.com/8825
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Change-Id: Ia160d3b17abebf0075f8ce2b608653e496f46d58
Reviewed-on: https://skia-review.googlesource.com/8805
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
BUG=skia:
Change-Id: Id532233537d18e6185a83681188aa73527b212a1
Reviewed-on: https://skia-review.googlesource.com/8842
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
BUG=skia:
Change-Id: I153978a92420eb2c39024213ebcdf95d1b8bde30
Reviewed-on: https://skia-review.googlesource.com/8839
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Mostly plumbing, plus some minimal testing to make sure that
the platform APIs don't explode. I plan to add testing of
SkCrossContextImageData using this, which should verify that
textures are actually shared.
Also found a factory and some related code in the
CommandBuffer test context that was totally unused.
BUG=skia:
Change-Id: I05bbc22c4d1ef946b702a5cc7f67788785219c62
Reviewed-on: https://skia-review.googlesource.com/8808
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
BUG:692936
Change-Id: I8394554764b1f46bd8eaabb0194d52f361d477c1
Reviewed-on: https://skia-review.googlesource.com/8826
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
This reverts commit bc9cd524d8.
Reason for revert: Unable to find Valgrind binary.
Original change's description:
> Split Valgrind jobs -- one DM/NB run per task.
>
> Remove special build for Valgrind -- Valgrind uses the unmodified binary. See skia:6267.
>
> BUG=skia:2789,skia:6267
>
> Change-Id: Id56c460abf36eb2be633ac3a309e0dbc7a278f41
> Reviewed-on: https://skia-review.googlesource.com/8723
> Commit-Queue: Ben Wagner <benjaminwagner@google.com>
> Reviewed-by: Eric Boren <borenet@google.com>
> Reviewed-by: Mike Klein <mtklein@chromium.org>
>
TBR=mtklein@chromium.org,borenet@google.com,mtklein@google.com,benjaminwagner@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:2789,skia:6267
Change-Id: I16876a8528c441805931ed21e9aa8688ab2e0b4c
Reviewed-on: https://skia-review.googlesource.com/8831
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
Change-Id: I723ae1ecaebf43e84bf47163e44e7899faf31c8a
Reviewed-on: https://skia-review.googlesource.com/8824
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Remove special build for Valgrind -- Valgrind uses the unmodified binary. See skia:6267.
BUG=skia:2789,skia:6267
Change-Id: Id56c460abf36eb2be633ac3a309e0dbc7a278f41
Reviewed-on: https://skia-review.googlesource.com/8723
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
This should be a big win on Windows, but I haven't timed there yet.
On my Mac, it's a solid 2% speedup.
PS1 was insufficiently ambitious, but was this for posterity:
No need to vzeroupper twice on Windows.
On Windows start_pipeline() will vzeroupper,
so no need to do it in just_return().
Change-Id: I099320b95da85900a60ce96fdb7a216a36db1858
Reviewed-on: https://skia-review.googlesource.com/8821
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
Also changes the behavior of these flags to only override their
corresponding context options when set, and to leave them unchanged
when not set.
BUG=skia:
Change-Id: I09f6be09997594fa888d9045dd4901354ef3f880
Reviewed-on: https://skia-review.googlesource.com/8780
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
It should only be advertised if the child also advertises it.
Change-Id: I698213c9562d710dff45f0622d50eacc41e29af5
Reviewed-on: https://skia-review.googlesource.com/8811
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Fuzzing can produce inconsistant data, such as flags or bounds.
Also, use std::unique_ptr to reduce the need for calling `delete`.
BUG=skia:6262
BUG=skia:6263
Change-Id: I1de6b5f764cda346bb3cd5cd4698816b6b68f395
Reviewed-on: https://skia-review.googlesource.com/8812
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Cary Clark <caryclark@google.com>
This matches what is done in the LUT texture case.
Change-Id: I95ab8c9ac761a3315a55a7f81bfe2e4077070542
Reviewed-on: https://skia-review.googlesource.com/8813
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
- Compile stages with -DWIN to pick up MS-specific start_pipeline().
- Add SkJumper_generated_win.S with MS-specific assembly.
- Add a minimal asm tool to our GN Windows toolchain.
The SkRasterPipeline_f16 benchmark run ~4x faster on my desktop.
Change-Id: Ia45afb4ecb6a055e2c0e43f0f54f59e081c23b7f
Reviewed-on: https://skia-review.googlesource.com/8778
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Instead of using a full tessellate() pass, which allocates Polys,
MonotonePolys, etc. It's faster to simply accumulate the winding number
in the left-adjacent edge, and use that to remove non-boundary edges
(edges for which apply_fill_type() returns the same value on either
side of the edge).
This gives ~4-5% boost on MotionMark Fill Shapes.
Change-Id: I66bd4248ace01a8c35abd99519f4c455f936e5e5
Reviewed-on: https://skia-review.googlesource.com/8782
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
clipstack is always available, canvas checks for empty clips up-front
Next step is to clarify if PDF wants to use Regions or Clipstack for its clipping (but not both)
Change-Id: Iaf1fa35160291e08c33ff61114557deff72304b3
Reviewed-on: https://skia-review.googlesource.com/8692
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Previously, operator& for enum class bitfields was reserved only to
return a bool. e.g:
if (flags & Flags::kFlag)
This change adds a new template class GrTFlagsMask<> that gets
instantiated by operator~ and allows us to write expressions like:
flags &= ~Flags::kFlag
(flags & ~Flags::kFlag1) | Flags::kFlag2
BUG=skia:
Change-Id: I21e5eb9304135e82cdda459e8a833a3489f6beaf
Reviewed-on: https://skia-review.googlesource.com/8563
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>