By making uniforms() just append to the uniform vector, there's no more
need for two passes, no need for the blitter to ever even know how many
uniforms the effects use, and the effects now never need to deal with a
nullptr uniform buffer. Much simpler all around.
While we're refactoring, convert the uniform buffer de jure to
std::vector<uint32_t>, which is what we'd been treating the old
std::vector<uint8_t> as by convention, and switch the program() offset
parameter type to size_t as a reminder that it's measured in bytes.
Cq-Include-Trybots: skia.primary:Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SK_USE_SKVM_BLITTER
Change-Id: I81d2c92aae37a650104f384f815df78c8a186270
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252776
Reviewed-by: Mike Klein <mtklein@google.com>
We can unify these similar functions to reduce the amount of work we do
and guarantee SkShaderBase::program() is never called with a null
skvm::Builder*. We now only call program() to do real work: one call to
get a shader key, and if no program is found in the cache, one more call
to build the blitter program. No null checks are needed any longer.
Cq-Include-Trybots: skia.primary:Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SK_USE_SKVM_BLITTER
Change-Id: I6e73d9d264690f04ddcc92e6f7b3c42654f8a41c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252759
Reviewed-by: Mike Klein <mtklein@google.com>
Change-Id: Iea0f804b1b2fed9e663e45c33fb54a91b10fd07b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252652
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This should work, though I need to do a little more work to get programs
that use x to JIT. It shouldn't be bad, probably done tomorrow.
I've added a demo y-gradient to the SkVMBlitter GM.
We may not need an explicit CTM parameter, just effects that chain into
each other changing (x,y) as they go? I guess that depends on whether
we want to specialize blitters on the matrix type any more than how we
get the shader coordinates.
Cq-Include-Trybots: skia.primary:Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SK_USE_SKVM_BLITTER
Change-Id: Iae28d169f611605ca6fbb8bcbcca6b67b103171c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252620
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This is an automated CL created by the recipe roller. This CL rolls recipe
changes from upstream projects (e.g. depot_tools) into downstream projects
(e.g. tools/build).
More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
depot_tools:
https://crrev.com/94d6f48ba1b73f4b0fc008385565eecea2a714ee gsutil: Decode output from subprocess. (ehmaldonado@google.com)
TBR=borenet@google.com
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I82e8c48ae04cd4bc72f63570be6a9cc0371ee409
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252635
Reviewed-by: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Remove the SkMatrix44 getter entirely.
Change-Id: I25bfe68a7a9b21d8a8696415b517cb79fc2d7a94
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252596
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Change-Id: Ie704f0f83b1034ff8ee1a5d3cd194e555cae20a3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252600
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
This initializes more formats correctly with solid colors and relies
less on GrPixelConfig.
It also includes the changes to get gray8 read pixels working
and almost everything to initialize GL_RGB8 textures with data. Minor
stuff to follow to get RGB8 fully working and update test expectations.
Bug: skia:8962
Bug: skia:6718
Bug: skia:9358
Change-Id: Ic044b4c4badc37f14fb46c898cd3b3c21a6fc7fd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251199
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Forgot to add code to drain the Autorelease pool, so objects created
with autorelease just built up over time.
Bug: skia:8243
Change-Id: I373c6820df8ee102b110386377378858c235b2fa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252601
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Propagating usage of these helpers will, hopefully, improve code reuse and centralize future changes.
This is pulled out of https://skia-review.googlesource.com/c/skia/+/252161/ (Add GrPrimitiveType to GrProgramInfo)
Bug: skia:9455
Change-Id: I9b46e42db8561d98fb724a41a1f7a3bec4bf97b0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252484
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
isValid read memory beyond the buffer that was uninitialized.
BUG=oss-fuzz:18555
Change-Id: I5576add2cd7bfbe146d495239b96210fe15fe562
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252538
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
This means we don't need to cache the coverage value calculated while
insetting.
Change-Id: Icf8b81f6fac04106ee4cd7d727e363ba0703474e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251766
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
We're calling updateUniforms() much more often than necessary.
I think we need to only call it once, as we construct our Blitter.
The shader doesn't know about coverage formats, so the uniforms
will not change from blit??() to blit??() call.
Change-Id: Icd59b4a14101245fec9ad91b7dee2b3156675716
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252514
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Change-Id: I7902e4355999f31bf92aa8294a2c1a32840249c2
Bug: chromium:960620
Change-Id: I7902e4355999f31bf92aa8294a2c1a32840249c2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252479
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change-Id: If73951f8e183101b80f729d9533cc3c8395b1879
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252481
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This reverts commit 491eba5f1d.
Reason for revert: Should be fixed
Original change's description:
> Revert "[recipes] Assert that Git is obtained from CIPD"
>
> This reverts commit 6751f171c6.
>
> Reason for revert: Missed at least one
>
> Original change's description:
> > [recipes] Assert that Git is obtained from CIPD
> >
> > Bug: skia:9538
> > Change-Id: I0e2bed991e099646c89fd87895851caf5d0734b8
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251658
> > Reviewed-by: Kevin Lubick <kjlubick@google.com>
> > Commit-Queue: Eric Boren <borenet@google.com>
>
> TBR=borenet@google.com,kjlubick@google.com
>
> Change-Id: Ic90ae5672ce605f1667d7f961026303905824032
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:9538
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252190
> Reviewed-by: Eric Boren <borenet@google.com>
> Commit-Queue: Eric Boren <borenet@google.com>
TBR=borenet@google.com,kjlubick@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: skia:9538
Change-Id: I2dfbd66c75e6b41a5f63b3f89bf8988827a639d9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252480
Reviewed-by: Eric Boren <borenet@google.com>
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Bug: skia:9588
Change-Id: Ie37eeae3a971d74edee50d87d96d452fad1b38a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252476
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Remove the RGB/YUV helpers (use SkYUVMath instead), along with the
unused get20/set20.
Change-Id: Id83467a1b7f33657869e0a933af75387a4e36a88
Bug: skia:9543
Change-Id: Id83467a1b7f33657869e0a933af75387a4e36a88
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252188
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
e96039218e..6c7208f93d
git log e96039218e9d..6c7208f93d6e --date=short --no-merges --format='%ad %ae %s'
2019-11-03 jmadill@chromium.org Capture/Replay: Implement mid-execution replay.
2019-11-03 jmadill@chromium.org Capture/Replay: Capture GetFloatv params.
2019-11-03 jmadill@chromium.org Capture/Replay: Only convert GLES 2 GLenums to string.
2019-11-02 jmadill@chromium.org Delete stale unused proc table functions.
2019-11-01 jmadill@chromium.org Fix ANGLE_get_image cube map handling.
2019-11-01 shrekshao@google.com Reorder BaseVertexBaseInstance draw calls parameters
2019-11-01 lehoangq@gmail.com Metal backend implementation pt 2
2019-11-01 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/glslang/src b131630e7c74..48233ad3d45b (1 commits)
Created with:
gclient setdep -r third_party/externals/angle2@6c7208f93d6e
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 ethannicholas@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.primary:Build-Debian9-Clang-x86_64-Release-ANGLE;skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Bug: None
TBR=ethannicholas@google.com
Change-Id: I9076a21d3e2cbaf511be651b2bcac4a95fa70573
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252416
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Change-Id: Ie06c763f8677c395fdc4995bf78b9aff95040764
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252192
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This is an automated CL created by the recipe roller. This CL rolls recipe
changes from upstream projects (e.g. depot_tools) into downstream projects
(e.g. tools/build).
More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
recipe_engine:
https://crrev.com/e9ca19a0946a226ba6011bfadcc19a13340268dd Improve docstrings for step module. (gbeaty@chromium.org)
TBR=borenet@google.com
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I217ded339a9a04da4ab6cf5b0e0e33fddf645229
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252278
Reviewed-by: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Recipe Roller <recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Change-Id: I47bd68532a68b7464ef6ed43733fef3d65792cfb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251762
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Like with the non-relative forms, we want to be able to
chain these together, but not leak the SkPaths (which happens
if the C++ side returns this). Thus, we have to add in
the JS glue to return the "JS this".
Change-Id: Ic640b84f6c09c1d931ad44bc403b14bb0d0893a2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251960
Reviewed-by: Hal Canary <halcanary@google.com>
This reverts commit 0a4681d044.
Reason for revert: Maybe the cause of red bots
Original change's description:
> Reduce max # of AA Quads that can be merged or chained into a single GrTextureOp
>
> It is, arguably, not a good metric but the max number of AA Quads that are merged or chained together across all Skia's GMs and SKPs is 276.
>
> This should also reduce the memory consumed from 245,760 bytes to 30,720 bytes.
>
> Bug: b/143572065
> Change-Id: Ia70d3671fa33e0d84b38b4788e8c74ef98a9661e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252176
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>
TBR=robertphillips@google.com,michaelludwig@google.com
Change-Id: Id38a1242327b853b494631d9fbc6f6d3f15d5aec
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: b/143572065
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252193
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This reverts commit 6751f171c6.
Reason for revert: Missed at least one
Original change's description:
> [recipes] Assert that Git is obtained from CIPD
>
> Bug: skia:9538
> Change-Id: I0e2bed991e099646c89fd87895851caf5d0734b8
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251658
> Reviewed-by: Kevin Lubick <kjlubick@google.com>
> Commit-Queue: Eric Boren <borenet@google.com>
TBR=borenet@google.com,kjlubick@google.com
Change-Id: Ic90ae5672ce605f1667d7f961026303905824032
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:9538
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252190
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Change-Id: I8f2b862d5631f4c9a2e2653ebd498f401ed1f949
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252185
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
Bug: skia:9538
Change-Id: I0e2bed991e099646c89fd87895851caf5d0734b8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251658
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Bug: skia:9588
Change-Id: Idb80f1714865c2aa81615b8fc26afd591c3f4b24
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252179
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
Program caching makes whether or not this is safe a little subtle. It
is safe and I've tried to explain the subtlety in comments in the new
non-virtual Shader program() hook that forces all opaque shaders to
opaque, and in comments in SkVMBlitter where we make use of isOpaque().
I think this is the tidiest way to get the optimization and safety,
though it is a little awkward to have to write epic cross-referenced
comments explaining first why it might not generally be safe to use
shader->isOpaque() to make decisions in the blitter, and then how we
actually have made it really quite safe.
Many tiny partial-coverage diffs from how coverage interacts differently
with SrcOver and Src, SrcOver folding coverage into the src color before
blending with dst, Src just lerping with dst.
This all comes together really quite magically, changing a program to
draw a solid opaque color from this,
11 registers, 41 instructions:
r0 = uniform32 arg(0) 0
r1 = splat FF (3.5733111e-43)
r2 = extract r0 8 r1
r3 = splat 80 (1.793662e-43)
r4 = extract r0 24 r1
r5 = sub_i32 r1 r4
r6 = extract r0 16 r1
r0 = extract r0 0 r1
loop:
r7 = load32 arg(1)
r8 = extract r7 8 r1
r8 = mul_i32 r8 r5
r8 = add_i32 r8 r3
r9 = shr_i32 r8 8
r9 = add_i32 r8 r9
r9 = shr_i32 r9 8
r9 = add_i32 r2 r9
r8 = extract r7 0 r1
r8 = mul_i32 r8 r5
r8 = add_i32 r8 r3
r10 = shr_i32 r8 8
r10 = add_i32 r8 r10
r10 = shr_i32 r10 8
r10 = add_i32 r6 r10
r9 = pack r10 r9 8
r10 = extract r7 16 r1
r10 = mul_i32 r10 r5
r10 = add_i32 r10 r3
r8 = shr_i32 r10 8
r8 = add_i32 r10 r8
r8 = shr_i32 r8 8
r8 = add_i32 r0 r8
r7 = extract r7 24 r1
r7 = mul_i32 r7 r5
r7 = add_i32 r7 r3
r10 = shr_i32 r7 8
r10 = add_i32 r7 r10
r10 = shr_i32 r10 8
r10 = add_i32 r4 r10
r10 = pack r8 r10 8
r10 = pack r9 r10 16
store32 arg(1) r10
to this,
4 registers, 9 instructions:
r0 = uniform32 arg(0) 0
r1 = splat FF (3.5733111e-43)
r2 = extract r0 8 r1
r3 = extract r0 16 r1
r2 = pack r3 r2 8
r0 = extract r0 0 r1
r1 = pack r0 r1 8
r1 = pack r2 r1 16
loop:
store32 arg(1) r1
Change-Id: Ic1e2ac1496252970743ef44b17908965bc73e384
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252198
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Now that we've turned paint colors into shaders where appropriate,
SkVMBlitter's Uniforms struct is only really holding one byte of
coverage for when we're in RLE coverage mode.
We can just pass that coverage as its own uniform pointer, much like we
pass a pointer for masks. This means there's no need to think about the
(notional) Uniforms struct any more, and leaves the first, main uniform
parameter holding shader uniforms exclusively.
Change-Id: I1c45d8c3280816836b011e22e07a666952a9df63
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252080
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Change-Id: Iaf1daad359cd7478ed42966bd65231ff108e602c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251661
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
This means we can share programs with color shaders
whether they come through as a paint color or shader.
The GM now only ever JITs one program.
Change-Id: If61f9e7b79aa6b8fd1de7c16ff52f78bfd7dc4ec
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252079
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
I'd like to express each of the special automatic features of the color
pipeline as their own effects in SkVMBlitter where possible. This turns
the modulate-shader-by-paint-alpha feature into an explicit shader
wrapper.
This also sort of shows off how program() and uniforms() can chain
together. This is the same basic form that SkColorFilterShader will
take, since scaling by alpha is basically a color filter. (And indeed,
I may follow up by reformulating this as AlphaColorFilter once I get
color filters and SkColorFilterShader working with SkVMBlitter.)
Other next steps may involve factoring the pipeline's implicit
use-the-paint-color shader into an explicit shader.
Just FYI on the bug, thinking along its lines.
Bug: skia:9572
Cq-Include-Trybots: skia.primary:Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SK_USE_SKVM_BLITTER
Change-Id: Ia9a5a10d685d2ca0a5e15792c7cf39d8b32a20a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252022
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
When rendering to a BottomUp render target, the SRIR-V codegen
needs a uniform to pass the render target height. (This is kind
of hacky, since it depends on being the last uniform, but it's
the same hack that the Vulkan backend uses.)
Change-Id: I520478d5e26504c7884daa72024fafe943a07294
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252182
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
It is, arguably, not a good metric but the max number of AA Quads that are merged or chained together across all Skia's GMs and SKPs is 276.
This should also reduce the memory consumed from 245,760 bytes to 30,720 bytes.
Bug: b/143572065
Change-Id: Ia70d3671fa33e0d84b38b4788e8c74ef98a9661e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252176
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Change variable name to reflect that.
Also, pass '--no-checkout' to git-clone to suppress "warning: remote
HEAD refers to nonexistent ref, unable to checkout" error message.
Also, change '@' to '>' in verbose output if anything changes in the
repositories.
Change-Id: I27d0b026d121c163e378f34ab2bbe81233ddba1a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252177
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
This is handy for cutting irrelevant tool costs from a CPU profile.
Change-Id: Ib1d5a64a01866333e4e83351571dcb7c282ee9dc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252152
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This lets skia_renderer include SkBlendModePriv.h without breaking the
chrome build.
Change-Id: Icb96dbc50199c3a98bc7d5d2b643afda0297cf97
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252178
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
It's not drawing anything earthshattering, but it does act as an easy
way to exercise some interesting code paths in SkVMBlitter, here first
program caching based on shader program and not shader identity.
With today's shader caching patches, this makes 2 calls to
skvm::Builder::done(), JITing the program, while if you patched this in
at head you'd see 3. I'd like it to get down to 1 by converting paint
colors to color shaders.
Change-Id: I042f4d44a792b46e5543794c853e4ef0d95b11ec
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252029
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
1) add a hash() method to skvm::Builder
This is cheap... we're hashing instructions as we go anyway.
Small refactoring to keep all its hashing close and clear.
2) split Key into Key (a small bytey hashy identifier)
and Params (a pointery typey payload struct)
3) dummy call ->program() on shaders as we build our Key,
and then include that dummy Builder's hash() in the key.
This lets us reuse cached programs when effects vary only in their
uniforms. The approach in 3) is meant to be a first draft, a kind of
can-we-get-away-with-this hack. We may need to change this with,
- stronger equality than just a hash of the instructions;
- a new cheaper hook that avoids the cost of skvm::Builder.
Cq-Include-Trybots: skia.primary:Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SK_USE_SKVM_BLITTER
Change-Id: I5f3839d3f7de40043fcb6177b617672c56f0eb70
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252019
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Change-Id: I8ef13b78a5f2f49ff9c59db285b3e0e7ee708c9b
Bug: chromium:960620
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252160
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>