Commit Graph

52961 Commits

Author SHA1 Message Date
Chris Dalton
e465205938 Remove the offthread triangulation from GrPathTessellateOp
Rather than copying these triangles twice, we can run "pathToPolys"
during onPrePrepare and "polysToTriangles" during onPrepare.

Also adds a benchmark for normal and inner-fan triangulation.

Bug: skia:10419
Change-Id: Id301afde5de11d93ae026e75e42ac03a50867687
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355177
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2021-01-22 03:59:29 +00:00
Jorge Betancourt
c09761f576 [SkottieView] handle calls to setSource after first animation initialization
Change-Id: I8fdb9142e1dd67f9418f8a5fc13518a2c2c11566
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355662
Reviewed-by: Tyler Freeman <fuego@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
2021-01-21 23:41:28 +00:00
Brian Osman
e89d8ea20b Update particle system to use skvm, rather than ByteCode
This was the last remaining user of ByteCode. The skvm solution
is faster, and lets us delete the ByteCode system.

Testing on 15 instances of sinusoidal_emitter (90k particles):
  - ByteCode                     ~9   ms
  - ByteCode (older, optimized): ~5.5 ms
  - skvm                         ~2.1 ms

Change-Id: Ia2e5c9ab2d36c97e59af28a6f989bf212889e439
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356919
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2021-01-21 23:07:29 +00:00
John Stiles
f7410bd413 Remove unnecessary _out pointer in Metal.
Like _globals, it's not actually necessary to indirect through a
separate pointer at all. The output struct is now passed by reference
and the additional pointer variable is removed.

(Additionally, renamed _skGlobals back to _globals.)

Change-Id: Id089a20cb751cdaedc48462a52da78ee43783611
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355632
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2021-01-21 22:30:39 +00:00
Chris Dalton
37d16f1352 Remove GrTriangulator::fIsLinear
I think it makes sense for the class functions to not have internal side
effects. Meaning, you can call pathToPolys and polysToTriangles all you
want without worrying about internal state.

Bug: skia:10419
Change-Id: I5e2136719bbf65a6a8e4c032c1c1326f0a9a98c3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356496
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2021-01-21 21:55:19 +00:00
Chris Dalton
d5384791a9 GrTriangulator cleanups
Replace "pathToTriangles" with "pathToPolys, polysToTriangles". This
will allow the tessellator to do pathToPolys in onPrePrepare and
polysToTriangles in onPrepare.

Don't make countPoints and polysToTriangles virtual. This is a step
toward moving the outer mesh of GrAATriangulator back out of the
class, which seems to match the style better.

Bug: skia:10419
Change-Id: Id6d22dcc2da0af84b9cb46fb36ead4c2e30d5c32
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355176
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2021-01-21 21:54:11 +00:00
Robert Phillips
94e67916e6 Add new lazytiling GM and update GrTextureEffect
This GM tests out the GrTextureEffect with non-normalizable textures.

Change-Id: I5b0ffc43241a29d64516d07a4388668f224ffefe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355676
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2021-01-21 20:57:20 +00:00
Nathaniel Nifong
110367dcfc Fix most remaining wasm gm unit tests by correctly providing gl context
The basic problem was that WasmContextInfo shadowed non-virtual members
of ContextInfo. the tests, which work with that type, end up calling the
super class's methods which return null for directContext()

The context created and stored in WasmContextInfo would have worked if it
could be returned, but I've opted to go with what looks like a more
canonical way to test a new backend, that is to create a platform-
specific subclass of GLTestContext, and let GrContextFactory create the
GL context.

Bug:skia:10869

Change-Id: Ie9e1142cf2e7268242ff9aab70f76151714850a3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355116
Commit-Queue: Nathaniel Nifong <nifong@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2021-01-21 20:46:19 +00:00
Tyler Denniston
8a37fb2c60 [svg] Implement SourceAlpha input for filter effects
https://www.w3.org/TR/SVG11/filters.html#SourceAlpha

This is the last "trivial" filter input type.

Bug: skia:10841
Change-Id: I96a7c9ccd318dec3b2b3ddd656be714b6b8fc59e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356838
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Tyler Denniston <tdenniston@google.com>
2021-01-21 19:34:39 +00:00
Kevin Lubick
cff854282d [canvaskit] Include types in docker build
Change-Id: I8ed83eb2bc71d9de7d0a4ac2092b06d9271551a0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356917
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
2021-01-21 19:27:29 +00:00
Tyler Denniston
c7e482441e [svg] Several filter helper tweaks
- Allow resolving inputs without modifying their colorspace
- Add helper to get the colorspace of a particular input
- Make resolveColorspace() virtual and add filter context to its
  signature

Bug: skia:10841
Change-Id: I2e226ec26205f527c2d171140072f106ec35fbe0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356416
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Tyler Denniston <tdenniston@google.com>
2021-01-21 19:23:39 +00:00
John Stiles
b5db4825b8 Improve consistency of SPIR-V code generation.
The SPIR-V code generator would sometimes invoke helper functions in an
unsequenced way, causing the output to vary across different compilers
or optimization settings. This CL explicitly sequences these operations,
which should make the output consistent across platforms.

Change-Id: Iaaf75b80e7495768d73dd6afa5b6d03f9cf3f262
Bug: skia:11175
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356844
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-01-21 19:01:49 +00:00
Mike Reed
bc4d88a07e Update legacy shader context to take sampling
Just more internal cleanup/reorg, including passing around the (few)
fields we use from paint, rather than an entire paint, in the legacy
shader context. This was motivated (partly) to ensure that we don't
accidentally refer to getFilterQuality() downstream.

Bug: skia:7650
Change-Id: I69031dcb74e02c77bc4d6166fdb377262ae77046
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356842
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2021-01-21 18:58:59 +00:00
Kevin Lubick
6de1e52d0b [canvaskit] Properly downsample 4x4 matrices.
Also address feedback from Tuesday.

Change-Id: I4497e4112c758a071c834045d20a009397184254
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356837
Reviewed-by: Nathaniel Nifong <nifong@google.com>
2021-01-21 18:14:04 +00:00
Brian Salomon
982127b7d5 Make render task targets be just a proxy.
Change-Id: I09548cc22b13bc0b9b5f77cf1f20c1505a529c51
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356760
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Adlai Holler <adlai@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2021-01-21 17:16:06 +00:00
Mike Klein
25788c3179 three small fixes for w-parameter
I wrote this looking for places where we treat w differently from z.
None of these are an urgent problem today, but 2) could become one, and
all good to fix if only for consistency.

1) Recycle w's register when it dies in the interpreter.
   If we don't recycle w's register slot when w dies, we'll keep
   thinking w's alive and keep that slot around in case it's used.
   This is only an inefficiency, but nice to avoid when we can.

2) Don't allow spilling w when looking for an unused register.
   This is a JIT bug fix, avoiding the possibility of clobbering w with
   dst(),x,y,z or a temporary when we need to use it.  Doesn't look like
   it's happening today, but could sneak in.

3) Allow aliasing w and dst().
   This is for completeness, moot today... store128 is the only op using
   w and doesn't use dst(), let alone try to alias them.

Change-Id: I1f22e67f8793be018282bc3e793412e1d1abd7a5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356797
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2021-01-21 17:02:29 +00:00
Mike Klein
1ed173438d baby's first use of st2/4
This isn't really how I intended to use these, but we might as well
check if the registers happen to already be lined up how we'd like them.
And it happens quite often... I didn't gather detailed numbers, but both
sides of the "are we lined up?" conditions are being hit lots and lots
of times, in both store64 and store128.

Also rewrote the scalar flow of store128 to mirror store64.  The old
code was just fine, but this makes it easier to follow the conditions of
when we can use st4.  (This does remind me that we could also use
single-lane st2/st4/ld2/ld4 instructions to handle the scalar paths.)

Change-Id: Id2c94f68e5ea14031f7a23bdc76583dff4a7b65f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356436
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2021-01-21 16:52:09 +00:00
Mike Klein
230cd50238 close out simple assembler TODO
This should be the same amount of work in Assembler::bytes()
with one fewer field to track... might as well!

Change-Id: I54ca919983f11d218255817dbc4db292e7972409
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356796
Auto-Submit: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2021-01-21 16:49:29 +00:00
John Stiles
e0d023562b Remove obsolete reference to Flex lexer.
We use our own custom lexer now.

Change-Id: I6a2a408094ba37c2eef7092f5a5caa107938613b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356476
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-01-21 13:45:35 +00:00
skia-autoroll
87a055b020 Roll ANGLE from 382f016dd3b6 to f0286e636456 (15 revisions)
382f016dd3..f0286e6364

2021-01-21 syoussefi@chromium.org Translator: Stop allocating TIntermSequence
2021-01-21 sunnyps@chromium.org Support specifying array slice for D3D11 texture EGLImage
2021-01-20 syoussefi@chromium.org Rename ShaderVariable::structName to structOrBlockName
2021-01-20 geofflang@google.com EGL: Respect eglMakeCurrent with a null context.
2021-01-20 penghuang@chromium.org Support switch surfaces for external context.
2021-01-20 jmadill@chromium.org Capture/Replay tests: Use failure exit code.
2021-01-20 syoussefi@chromium.org Vulkan: Emulate R32F images with R32UI
2021-01-20 jmadill@chromium.org Capture/Replay: Don't serialize compile resources string.
2021-01-20 mpichlinski@opera.com Make metal_shader_cache_file_hooking a data_deps
2021-01-20 syoussefi@chromium.org Vulkan: Simplify RewriteCubeMapSamplersAs2DArray
2021-01-20 angle-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from dd50a3bce3ca to 3180f85f9bcd (11 revisions)
2021-01-20 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from 8da0f82baf35 to 22be66d40712 (2 revisions)
2021-01-20 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from f3626a1bfa8f to 132575638f37 (396 revisions)
2021-01-20 syoussefi@chromium.org Vulkan: Redo RewriteAtomicCounters
2021-01-20 syoussefi@chromium.org Suppress incomplete texture tests on mac/arm

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 scroggo@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/+doc/master/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Debian10-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
Tbr: scroggo@google.com
Test: Test: D3DTextureTest.TextureArrayImage*
Change-Id: I6fd3e711e587cdf89d43a2b695b57cd1a3770a64
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356598
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-01-21 05:30:56 +00:00
skia-autoroll
0775ed1a70 Roll Chromium from 78d95924cc6a to dac687f4cbf2 (517 revisions)
78d95924cc..dac687f4cb

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/chromium-skia-autoroll
Please CC scroggo@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/+doc/master/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Perf-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-CommandBuffer;skia/skia.primary:Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-CommandBuffer
Tbr: scroggo@google.com
Change-Id: I13e60502fd9789a02d62ba86a597ef9653163fe3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356599
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-01-21 05:30:55 +00:00
skia-autoroll
3c142940b9 Roll Dawn from 311a17a8feae to 762814bd9229 (7 revisions)
https://dawn.googlesource.com/dawn.git/+log/311a17a8feae..762814bd9229

2021-01-20 cwallez@chromium.org ityp_array: Allow using a T whose underlying type is signed.
2021-01-20 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll Tint from ed14524b1e81 to afb8cfb2544b (1 revision)
2021-01-20 cwallez@chromium.org Vulkan: Fix texture barriers for readonly storage.
2021-01-20 cwallez@chromium.org Vulkan: Fix buffer barriers for readonly storage.
2021-01-20 cwallez@chromium.org Vulkan: use VK_EXT_debug_utils instead of deprecated extensions.
2021-01-20 senorblanco@chromium.org Implement a glCopyImageSubData() workaround for OpenGL ES 3.1
2021-01-20 jiawei.shao@intel.com Implement WaitableEvent and WorkerTaskPool for multi-threaded tasks

Also rolling transitive DEPS:
  https://dawn.googlesource.com/tint from ed14524b1e81 to afb8cfb2544b

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dawn-skia-autoroll
Please CC sarahmashay@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/+doc/master/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Debug-Dawn
Bug: None
Tbr: sarahmashay@google.com
Change-Id: I1b0a9babb9a83cedf53868b78e77c20e85b40ee0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356597
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-01-21 05:03:55 +00:00
skia-autoroll
bf18fa2ec7 Roll SwiftShader from 89fd1480b47e to b3e5c440d239 (5 revisions)
https://swiftshader.googlesource.com/SwiftShader.git/+log/89fd1480b47e..b3e5c440d239

2021-01-21 nicolascapens@google.com Enable and require C++17 compilation
2021-01-20 srisser@google.com Implement VK_KHR_depth_stencil_resolve
2021-01-20 amaiorano@google.com Move reusable Vulkan code from VulkanBenchmarks to new VulkanWrapper library
2021-01-20 amaiorano@google.com VulkanBenchmarks: factor out code into separate files
2021-01-20 capn@google.com Fix always performing early depth test when requested

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/swiftshader-skia-autoroll
Please CC scroggo@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/+doc/master/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Test-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader
Bug: None
Tbr: scroggo@google.com
Change-Id: Ia0d0924d1765633285b7b1e279b04306073f9dae
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356596
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-01-21 05:01:25 +00:00
Mike Reed
821a84558b remove dead code from old drawimage virtuals
Bug: skia:7650
Change-Id: Ie6bce2130519655645b7c5602d364cd0e1d6fdf3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356358
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2021-01-21 01:26:15 +00:00
Adlai Holler
08f5311ae1 Detemplatize render task clustering
This simplifies our world and opens the door for more optimization.

Bug: skia:10877
Change-Id: I3c721f12a23bfa73dbdf1e02d9c77d7c6a889aa0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356309
Commit-Queue: Adlai Holler <adlai@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2021-01-21 00:00:16 +00:00
Brian Osman
14d336eeb7 Remove "death" functions from particle system
Without the "spawn another effect" binding (that was recently removed),
these serve no purpose.

Change-Id: Ica8cc3f444c6b749c634c41453501edfff9d9a23
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356417
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-01-20 23:27:03 +00:00
Chris Dalton
5501b59f16 Reland "Disable the MSAA atlas mode for CCPR"
This is a reland of 97c476ecb7

Original change's description:
> Disable the MSAA atlas mode for CCPR
>
> We have a long term path rendering plan that uses dynamic MSAA instead.
> This CL is a test to see if we can drop support for CCPR now.
>
> Change-Id: I1bff3ca3143a6b453b65a7932a1805c195922805
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/354036
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>

Change-Id: Ied3390d7df0b01d5e9d565247f5aed0addb5ab8f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356336
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2021-01-20 23:16:23 +00:00
Brian Salomon
6d717d401a GrQuadUtils: Handle degenerate persp quads where edges intersect outside quad
We were replacing points with the intersection of opposite edges.
Because of the distance tolerance we're using that may fall outside
of the original quad. Detect those cases and use averages of
intersection points instead.

Bug: chromium:1167277
Change-Id: I36b172f19339839bb21c060ddfe8109c184e9327
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356311
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2021-01-20 23:01:23 +00:00
Mike Reed
c8f44ca25c Enable new virtuals in flutter
Bug: skia:7650
Change-Id: I6a58e525e8ecf26d70290f6ad03689fe9e6e7db5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356359
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2021-01-20 22:40:43 +00:00
Mike Klein
dd069a9188 add interleaved load and store instructions
store64 and store128 will use the st?.4s instructions,
and load64/load128 the ld?.4s.  The tricky bit for both
of course is that they load and store more than a single
register, and that those registers need to be adjacent.

Change-Id: I613d06cbcc6e00bfc16b1a2c88412dbbbb1c55ed
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356344
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2021-01-20 20:49:03 +00:00
John Stiles
8a9da73687 Fix overzealous optimization of short-circuits.
The previous implementation assumed that SkSL expressions do not have
side effects and so treated either side of a Boolean expression as
short-circuitable. That is, `foo() && false` and `false && foo()` would
both be optimized to `false`, eliminating the `foo()` call.

We now check for side effects first. An expression like `expr && false`
can only be optimized to `false` if `expr` has no side effects. (If
`expr` does have side effects, the expression is left as-is.)

Change-Id: I473cf026a8afe35d6a8d9518498f2b26d8996e60
Bug: skia:11162
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356357
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2021-01-20 20:24:27 +00:00
Florin Malita
cdeabcaf57 [svg] Fix handling of root element position attributes
Per https://www.w3.org/TR/SVG11/struct.html#SVGElementXAttribute,
x/y have "no meaning or effect on outermost svg elements".

Change-Id: I028e3a4a1d91735d849e32874ae99d609fae4aaf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356308
Commit-Queue: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Tyler Denniston <tdenniston@google.com>
2021-01-20 19:13:17 +00:00
John Stiles
81bfabeb18 Optimize (boolExpr == true) and (boolExpr != false) into boolExpr.
Additionally, restructure the unit test to return a color (green for
pass, red for fail).

Change-Id: Ib1bb6bd8771c72cc751d8d2c65cc14a693166d4c
Bug: skia:11112
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356301
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-01-20 18:08:26 +00:00
Brian Osman
dd50b0c406 Add ExternalFunction support to SkSL-to-SkVM
Change-Id: I81c9a6ddcd65d40ebced18c7cfb1cad51066ba7b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356297
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-01-20 18:03:26 +00:00
Ben Wagner
1b1c73ad50 Remove deprecated SkBase64 interface.
No longer used and troublesome to use, so remove.

Change-Id: Idad9dd3325443f7e546465abf551de9784d9f829
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/352512
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2021-01-20 17:47:16 +00:00
Ethan Nicholas
489e55252e Refactored SkSL convertVarDeclaration to make it more accessible from
external callers

This should not result in any functional changes.

Change-Id: I5ef0301cf63bee561871c0110fda2692849b53d8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356102
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2021-01-20 17:12:46 +00:00
Tyler Denniston
4c89481be4 [svg] Implement feMorphology filter
https://www.w3.org/TR/SVG11/filters.html#feMorphologyElement

Bug: skia:10841
Change-Id: I0b0028fb815c490670f9f1e888770efb194a8f3b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356107
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Tyler Denniston <tdenniston@google.com>
2021-01-20 16:13:56 +00:00
John Stiles
24c4d209ba Generate simpler code for ClampFragmentProcessor.
The inliner can generate slightly tighter code if we avoid creating
helper variables inside a scoped block. This saves one temp variable
copy.

Change-Id: Iea9ecda24fa296eb489166887fd8ab50ec7176e6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355982
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2021-01-20 15:52:15 +00:00
Ethan Nicholas
2ed0d94887 Refactored SkSL convertDo & convertFor
No functionality changes, but the new variants of the methods make them
more accessible from upcoming DSL code.

Change-Id: Iaa9f1fab31cb7db00007b00d7d3b88ff5b9696b6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356103
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2021-01-20 15:42:16 +00:00
John Stiles
abef5efa2a Update glsltype_string and type_to_grsltype to a complete set.
This exposed a preexisting error: GrGrSLTypesAreSupported.fp used non-
square matrices, which are not actually present in GrSLType. The test
has been updated to use square matrices.

Change-Id: Ib51141cc14a0c3fcd1c3c3abf378f190d457b95f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356077
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2021-01-20 14:35:15 +00:00
John Stiles
26fdcbb38b Implement constant folding for (bool == bool) and (bool != bool).
We already had support for &&, ||, ^^ but somehow the common cases of
== and != were not implemented in the constant-folder.

This CL also updates the test to return a green/red color on success or
failure, instead of assigning arbitrary numbers into sk_FragColor that
don't mean anything. The long-term plan is to signal success or failure
of each test by color code; we can display these colors as swatches in a
GM slide for testing purposes.

Change-Id: I0810108b3c6b656a60cd8aa64ceefd765eff0157
Bug: skia:11112
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355984
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-01-20 14:22:35 +00:00
skia-autoroll
6eb610f75c Roll SwiftShader from 8da0f82baf35 to 89fd1480b47e (1 revision)
https://swiftshader.googlesource.com/SwiftShader.git/+log/8da0f82baf35..89fd1480b47e

2021-01-19 digit@google.com vulkan: Support VK_KHR_external_memory_fd on OS X.

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/swiftshader-skia-autoroll
Please CC scroggo@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/+doc/master/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Test-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader
Bug: None
Tbr: scroggo@google.com
Change-Id: I013b4d8cb232a46f8ead8060e08ab11d53638da8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355990
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-01-20 05:29:56 +00:00
skia-autoroll
8490066e8c Roll Chromium from 00da91bbde3d to 78d95924cc6a (329 revisions)
00da91bbde..78d95924cc

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/chromium-skia-autoroll
Please CC scroggo@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/+doc/master/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Perf-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-CommandBuffer;skia/skia.primary:Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-CommandBuffer
Tbr: scroggo@google.com
Change-Id: I68faf49919e433d123b96ac067ff6119bcf8c2a1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355989
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-01-20 05:19:56 +00:00
skia-autoroll
8dddb0400f Roll ANGLE from 81430e11c81e to 382f016dd3b6 (18 revisions)
81430e11c8..382f016dd3

2021-01-20 syoussefi@chromium.org Vulkan: Retain OpSource in SPIR-V
2021-01-20 enga@chromium.org Revert "Add support for building in Flutter Windows UWP configuration"
2021-01-20 timvp@google.com Tests: Add Klondike Adventures trace
2021-01-20 vantablack@google.com Multithreading in D3D11 minimum viable product
2021-01-19 syoussefi@chromium.org Add a helper ShaderVariable method to facilitate member rename
2021-01-19 jmadill@chromium.org Capture/Replay: Serialize float states properly.
2021-01-19 syoussefi@chromium.org Suppress failing tests on mac ARM
2021-01-19 jmadill@chromium.org Vulkan: Support GL_EXT_tessellation_shader.
2021-01-19 m.maiya@samsung.com Vulkan: Add integer type incomplete texture tests
2021-01-19 cnorthrop@google.com Tests: Add Asphalt 8 trace
2021-01-19 syoussefi@chromium.org Fix image bindings with an image after an image array of array
2021-01-19 jmadill@chromium.org Test Runner: Prevent race by not resetting timeout.
2021-01-19 cnorthrop@google.com Capture/Replay: Use glUniform1iv on samplers, ignore images
2021-01-19 jmadill@chromium.org Implement shader compiler changes for Tessellation.
2021-01-19 cnorthrop@google.com Capture/Replay: Fixes for compressed texture cache
2021-01-19 angle-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 2bb77d70cc64 to dd50a3bce3ca (3 revisions)
2021-01-19 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from 149733cead63 to 8da0f82baf35 (2 revisions)
2021-01-19 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 55486659cf9b to f3626a1bfa8f (232 revisions)

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 scroggo@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/+doc/master/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Debian10-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
Tbr: scroggo@google.com
Test: Test: Aztec Ruins MECTest: Test: Fortnite MECTest: Test: angle_perftests --gtest_filter="*asphalt_8*"Test: Test: angle_perftests --gtest_filter=TracePerfTest.Run/*klondike_adventures*Test: Test: dEQP-GLES31.functional.tessellation.*
Change-Id: I9d9a011ac71916c6bcaf81a7074849b928a42407
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356159
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-01-20 05:15:47 +00:00
skia-autoroll
7aa7f039b9 Roll Dawn from e45593cb0876 to 311a17a8feae (6 revisions)
https://dawn.googlesource.com/dawn.git/+log/e45593cb0876..311a17a8feae

2021-01-19 enrico.galli@intel.com D3D12: Add firstVertex/Instance to vertex/instance_index
2021-01-19 enga@chromium.org dawn_wire: Add Reserve/InjectDevice
2021-01-19 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll Tint from d7335fa97495 to ed14524b1e81 (6 revisions)
2021-01-19 senorblanco@chromium.org Open GL ES: implement a fallback path for glClearTexSubImage().
2021-01-19 rharrison@chromium.org Use Tint to extract local workgroup size
2021-01-19 dsinclair@chromium.org Update Dawn tests to use group instead of set.

Also rolling transitive DEPS:
  https://dawn.googlesource.com/tint from d7335fa97495 to ed14524b1e81

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dawn-skia-autoroll
Please CC sarahmashay@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/+doc/master/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Debug-Dawn
Bug: None
Tbr: sarahmashay@google.com
Change-Id: I6dd233214ed34e06b94ea149ef6e34e17e5460b2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355988
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-01-20 04:50:16 +00:00
Mike Reed
18aeb5731b Hide legacy drawImage methods
Migrate clients to use drawImage(... sampling)
rather than relying on paint's filter-quality.

This CL just gets started, introducing the build-flag.

Bug: skia:7650
Change-Id: I4afdd964c6f805058afee0a8f3a6887d501ad42b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356076
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2021-01-20 00:59:26 +00:00
Mike Klein
e0fe62adaa use fourth arg in store128
store128() has been lowered into SkVM Ops strangely (two interlocking
64-bit stores) only because of SkVM's limit of three arguments per Op.
With four arguments we can lower store128() in a straightforward way.

Perhaps surprisingly, I've left the implementations of store128 fairly
naive, with narrower stores than having all this data together in one
place allows.  I do want to follow up here, but not so much because the
speed of store128 is important, rather more so because getting the tools
in place for idiomatic store128 implementations will lead us down a path
with great knock-on effects for more interesting features.

We'll need four adjacent temporary registers to use the ARM-idiomatic
st2.4s/st4.4s approaches for store64/store128, and the idiomatic x86
implementations need multiple temporary registers too.  Once we're able
to manage multiple adjacent registers as a unit, we'll be able to
stretch the idea to things like load64/load128 returning 2 or 4
registers worth of data from a single Op.  And the ultimate goal is in
Half-is-fp16 mode, where we'll be able to fill one register with 16-bit
float/int/mask data and spread any 32-bit data across a register pair.

Change-Id: Ieb20d8b7d00e9d806cb27fd30ebfd50ae9317da7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355936
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2021-01-20 00:12:06 +00:00
John Stiles
148224e91c Add GrSL enums for uint3 and uint4.
These types are supported by SkSL but were mysteriously absent from
GrSL.

Change-Id: Id3479a23b1ddee0604362ed8c12da0eea7c6fa56
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355981
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2021-01-19 23:30:26 +00:00
Herb Derby
b34d62ba9a pull out clip code that will be shared
This clip code will be shared with direct-to-op text drawing
path.

Change-Id: I6744a93cb75b555e91b3b016d5604d3ba81b02fe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355977
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2021-01-19 22:58:59 +00:00
Julia Lavrova
420a75d685 Include placeholder widths in minIntrinsicWidth
Bug: skia:11179
Change-Id: Ic69c5a54b142584eddb28351c326952f4dd77376
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355976
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
2021-01-19 22:47:56 +00:00