Commit Graph

42351 Commits

Author SHA1 Message Date
Robert Phillips
f83c4684a6 Revert "Add Ganesh support for RGBA_16161616 and RG_half"
This reverts commit 156622513f.

Reason for revert: valgrind

Original change's description:
> Add Ganesh support for RGBA_16161616 and RG_half
> 
> Change-Id: Ia424ff719c5fb8d1842a909ade09ad6f5f78f21f
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219998
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>

TBR=egdaniel@google.com,robertphillips@google.com

Change-Id: I7a8e99e70f575fb301ce289d9a04ebbec25b934b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220739
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-06-13 16:49:31 +00:00
Brian Osman
569f12f0e5 Interpreter: Vectorized interpreter
This converts the SkSL interpreter to operate in SIMT fashion. It handles
all the same features as the previous scalar implementation, but operates
on N lanes at a time. (Currently 8).

It's modeled after GPU and other parallel architectures, using execution
masks to handle control flow, including divergent control-flow.

Change-Id: Ieb38ffe2f55a10f72bdab844c297126fe9bedb6c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/217122
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-13 15:50:55 +00:00
Brian Salomon
d608e224b2 Add load/store to SkRasterPipeline for 16161616 unsigned normalized.
Bug: skia:8962

Change-Id: I0ab208063b6b7eca010f86d4d851ade23df5f849
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220529
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-13 14:48:35 +00:00
Greg Daniel
2e52ad1096 Prefer top left origin in write pixels when doing copy as draw.
Bug: chromium:972587
Change-Id: I05ab4393d4df20a8f55c4352d09f92f275cedf5d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220736
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-06-13 14:32:23 +00:00
Florin Malita
084fa1b52f [skottie] Use metrics for Shaper vertical alignment
Relying on visual bounds yields incorrect results in some cases (e.g.
leading/trailing empty lines).

Update the vertical alignment logic to use metrics instead:

  - track the first line ascent and last line descent
  - compute content height as

      first_ascent + last_descent + line_height * (line_count - 1)

  - relocate Result::computeBounds() to the unit test (only user)

Empirically, this causes top-alignment to be less snug (likely due to
ascent slack in the tested fonts).

Bug: skia:9098
Change-Id: Ib92bf907af8889d6b0d0fda22ef41a2cc8b50901
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220656
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-06-13 13:04:53 +00:00
skia-autoroll
187e8f3123 Roll third_party/externals/angle2 2589cdcc88ec..85fef1bc62f8 (6 commits)
2589cdcc88..85fef1bc62


git log 2589cdcc88ec..85fef1bc62f8 --date=short --no-merges --format='%ad %ae %s'
2019-06-13 spang@chromium.org Vulkan: Build validation layers with asserts only
2019-06-12 clemendeng@google.com implement core egl image entry points
2019-06-12 jmadill@chromium.org Vulkan: Fix build with custom secondaries disabled.
2019-06-12 jmadill@chromium.org Roll SPIR-V headers and Tools.
2019-06-12 dongja@google.com Vulkan: add support for shadow samplers.
2019-06-12 jonahr@google.com Extend eglGetPlatformDisplay to allow feature overrides.


Created with:
  gclient setdep -r third_party/externals/angle2@85fef1bc62f8

The AutoRoll server is located here: https://autoroll.skia.org/r/angle-skia-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=skia.primary:Build-Debian9-Clang-x86_64-Release-ANGLE;skia.primary:Perf-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE
TBR=herb@google.com

Change-Id: I86cb59bef2fe3db96ded65c507a95134b717baf8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220680
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2019-06-13 06:02:33 +00:00
skia-autoroll
47c7e80e95 Roll ../src 5dc4d131fb35..f6ed31446fb7 (418 commits)
5dc4d131fb..f6ed31446f


Created with:
  gclient setdep -r ../src@f6ed31446f

The AutoRoll server is located here: https://autoroll.skia.org/r/chromium-skia-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=skia.primary:Perf-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-CommandBuffer;skia.primary:Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-CommandBuffer
TBR=herb@google.com

Change-Id: I155b13c1864cf0a9d10ed884342bcf455c6b49af
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220681
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2019-06-13 04:51:33 +00:00
skia-autoroll
34116c3fc0 Roll third_party/externals/swiftshader b8260a8e915d..df84b9466cfd (8 commits)
https://swiftshader.googlesource.com/SwiftShader.git/+log/b8260a8e915d..df84b9466cfd


git log b8260a8e915d..df84b9466cfd --date=short --no-merges --format='%ad %ae %s'
2019-06-12 chrisforbes@google.com Fix edge cases of various enumeration functions
2019-06-12 srisser@google.com Prevent integer-overflow on scissor test
2019-06-12 capn@google.com Fix GCC inline assembly syntax
2019-06-12 sugoi@google.com Fixed writing to a2b10g10r10
2019-06-12 thomasanderson@chromium.org Move libvk_swiftshader.lds from sources to inputs
2019-06-12 capn@google.com Use VK_TRUE/VK_FALSE consistently
2019-06-12 srisser@google.com Don't let shaders negate samplers
2019-06-12 chrisforbes@google.com Fix Android build


Created with:
  gclient setdep -r third_party/externals/swiftshader@df84b9466cfd

The AutoRoll server is located here: https://autoroll.skia.org/r/swiftshader-skia-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Debian9-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader
TBR=herb@google.com

Change-Id: I1d858f47756049f7184e5b336badc5ad56115769
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220679
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2019-06-13 04:33:03 +00:00
Brian Osman
b9416caa36 SkSL: Fix parsing of array types
This invoked operator bool(), so all arrays were parsed as having 1 column.

Change-Id: Iccd2a4fc80c905d8a5912f5639b0efbad050cbcf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220530
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-12 21:45:45 +00:00
Mike Klein
64a5b671b9 tighten up loop test
This trims one instruction of loop overhead, from

   sub(N, K)    // N -= 8
   cmp(N, K-1)  // if (N >= 8)
   jg loop      //     goto loop;

to

   sub(N, K)    // N -= 8
   ...          // if (N != 0)
   jne loop     //     goto loop;

To make this work we pass only multiples of K into the
JIT'd code, so it always hits exactly N = 0 to exit.

Change-Id: I81c7a2f8d5927971059a68c5bce2e3d6fb0b8ff2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220576
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-12 19:45:27 +00:00
Greg Daniel
662e2af351 Fix setting of pipeline barrier in creating backend VkImage.
Change-Id: I43847609bfbdc769487cab5bf19f754615cc8ddd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220528
Commit-Queue: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Auto-Submit: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-06-12 19:41:06 +00:00
Robert Phillips
156622513f Add Ganesh support for RGBA_16161616 and RG_half
Change-Id: Ia424ff719c5fb8d1842a909ade09ad6f5f78f21f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219998
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-06-12 19:20:36 +00:00
Ravi Mistry
4ba62b5ff3 Add tip on patching to G3 bot
NoTry: true
Change-Id: Iafb020592e22cacbbf6a79f8e8dab2fb4c4546f5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220520
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
2019-06-12 19:01:36 +00:00
Mike Klein
3f593799da expand unit tests, fix extract
The mask-only special case for extract is wrong...
it never looked it its input!

This not only makes things correct-er, but oddly it also
makes them faster by breaking inter-loop data dependencies.

Disable tests for _I32... they're actually still broken
because of a much more systemic flaw in how I've evaluated
programs.  The _F32 and _I32_SWAR JIT code and all interpreted
code is just getting lucky.  o_O

While here, update the I32_SWAR code to use the same math as I32,
(x*y+x)/256 for unorm8 mul.  This just helps keep me sane.

Change-Id: I1acc09adb84c426fca4b2be5ca8c2d46d9678dd8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220577
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-12 18:58:56 +00:00
Mike Klein
81756e4cae test and fix that we cover the right inputs
At head we're redoing any n<8 tail from the start,
not continuing from (n/8)*8 like we'd want.

Change-Id: I1a3d24cdffc843bbe6f3e01a163b6e3a20fdd0ca
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220556
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-12 18:44:58 +00:00
Mike Klein
d3cc16c8bb eliminate the need for a tmp ymm register
Like any other Instruction the store*s are assigned
a destination register d, which doesn't really make
sense, but works perfectly as a temporary register.

This means store8 doesn't need to reserve xmm/ymm15
as a temporary... it already has one naturally.   As
you might expect, the examples we have so far assign
the consumed input x register as the d register, so
things that used to look like

    vpackusdw %ymm6 ,%ymm6 ,%ymm15
    vpermq    $0xd8 ,%ymm15,%ymm15
    vpackuswb %ymm15,%ymm15,%ymm15
    vmoq      %xmm15,(%rdx)

now look more like

    vpackusdw %ymm6,%ymm6,%ymm6
    vpermq    $0xd8,%ymm6,%ymm6
    vpackuswb %ymm6,%ymm6,%ymm6
    vmoq      %xmm6,(%rdx)

Should be no perf difference, just simplified register bookkeeping.

This may suggest splitting load8/store8 into finer instructions,
two to do the physical loads and stores, and two for the 8->32
and 32->8 widen and narrow?  On the other hand load8 really is
just one vpmovzxbd instruction, so it'd be a shame to split it.
I suspect this will become more clear as I add 16-bit support.

Change-Id: I7c2b4d6b1689d40b50382f65fc00c01c54529c8a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220543
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-12 17:34:38 +00:00
Brian Osman
072e6fc374 Remove version string from Viewer's "highlight" SkSL shader
Change-Id: Id61b7b9d9bc7611727a27be0172fcabc2ef4345a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220522
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2019-06-12 16:03:36 +00:00
Mike Klein
b464002fb2 remove moot comment
Change-Id: I0263b4ea8c60695c890f31d45198a7bd45ff3db8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220536
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-12 15:13:36 +00:00
Nathaniel Nifong
208363e959 Minor optimization to serialization of SkPictures with many subpictures.
During the dummy serialize step that dedupes typefaces, all work not relevant to typefaces is skipped.
For a picture that is approx 100% subpictures, serialization time is reduced by about 50%

Change-Id: I00a2579e935a15c5ccabc065b8326c0cad74244b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/215121
Commit-Queue: Nathaniel Nifong <nifong@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-12 14:50:56 +00:00
Mike Reed
d62d406aa2 Revert "Revert "try resolver pattern""
This reverts commit 2bafb64ed3.

Change-Id: I46f29284546a8978fd0005a0937e28410e5ac0da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220518
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-06-12 14:46:56 +00:00
skia-autoroll
698fa78b3c Roll third_party/externals/angle2 1b5ad312c57a..2589cdcc88ec (5 commits)
1b5ad312c5..2589cdcc88


git log 1b5ad312c57a..2589cdcc88ec --date=short --no-merges --format='%ad %ae %s'
2019-06-11 clemendeng@google.com GLSLTest stack overflow bug fix
2019-06-11 clemendeng@google.com removed msvs_projects from devsetup
2019-06-11 jmadill@chromium.org Vulkan: Add missing command pool reset.
2019-06-11 dongja@google.com Vulkan: Add support for gl_VertexID/gl_InstanceID
2019-06-11 kbr@chromium.org Reland "Temporarily disable creating D3D debug device."


Created with:
  gclient setdep -r third_party/externals/angle2@2589cdcc88ec

The AutoRoll server is located here: https://autoroll.skia.org/r/angle-skia-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=skia.primary:Build-Debian9-Clang-x86_64-Release-ANGLE;skia.primary:Perf-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE
TBR=herb@google.com

Change-Id: Ie90cfa83f262b5a5c5bc053a6d1d90d4dda69c1d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220478
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2019-06-12 05:57:12 +00:00
skia-autoroll
ed7966f179 Roll ../src 3032e0d81bfa..5dc4d131fb35 (409 commits)
3032e0d81b..5dc4d131fb


Created with:
  gclient setdep -r ../src@5dc4d131fb

The AutoRoll server is located here: https://autoroll.skia.org/r/chromium-skia-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=skia.primary:Perf-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-CommandBuffer;skia.primary:Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-CommandBuffer
TBR=herb@google.com

Change-Id: Iceecfccb3167dbe0f50ada31fa844610a882fdf5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220479
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2019-06-12 04:40:21 +00:00
skia-autoroll
6a9e2827fe Roll third_party/externals/swiftshader 0a9f0179ddef..b8260a8e915d (9 commits)
https://swiftshader.googlesource.com/SwiftShader.git/+log/0a9f0179ddef..b8260a8e915d


git log 0a9f0179ddef..b8260a8e915d --date=short --no-merges --format='%ad %ae %s'
2019-06-12 stevensd@google.com [fuchsia] Remove deprecated non-resizable vmo flag
2019-06-12 hliatis@google.com Allow default construction of BackingMemory on Android
2019-06-11 sugoi@google.com Ripped out SwiftConfig
2019-06-11 bclayton@google.com CMake build: Only export explicit symbols on macOS
2019-06-11 bclayton@google.com LLVM CoroSplit: Add pass dependency on CallGraphWrapperPass
2019-06-11 bclayton@google.com CMakeLists: Add missing LLVM aarch64 source files.
2019-06-11 bclayton@google.com Build: Sort LLVM source files lexographically.
2019-06-11 bclayton@google.com Fix 'control reaches end of non-void function' warnings treated as errors
2019-06-11 swiftshader.regress@gmail.com Regres: Update test lists @ 0a9f0179


Created with:
  gclient setdep -r third_party/externals/swiftshader@b8260a8e915d

The AutoRoll server is located here: https://autoroll.skia.org/r/swiftshader-skia-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Debian9-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader
TBR=herb@google.com

Change-Id: Iac41d3ce67826ce83109ce0f8116d88045f593af
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220477
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2019-06-12 04:34:01 +00:00
recipe-roller
d82ca0bf2c Roll recipe dependencies (trivial).
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/bdc5cd8872c898ccb123cf7ea29d7a7975f28364 cq: use gerrit_changes from buildbucket, which are ordered by CQ daemon. (tandrii@chromium.org)


TBR=borenet@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: Iad52667b14b95c0cf5e3e62dd7f768b7e731ab27
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220416
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>
2019-06-12 00:51:04 +00:00
Greg Daniel
a47ab49146 A few fixes to recent gpu Copy Op changes.
Make sure we make the dst be visited so that the allocator knows
it can reuse the dst copy texture.

Don't flip the copy rect for origin until after setting the bounds on
the copy op

Bug: chromium:972587
Change-Id: Ibb37e41b45e773e5df2c79c2e0e3ec79a871632f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220219
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-06-11 22:45:49 +00:00
Brian Salomon
cd5caa34fb Allow async read back GM to YUV to fail. Skip on DDL.
Currently fails on GrContext's that don't support transfer buffers.
TODO: fallback to synchronous read pixels.

Bug: skia:8962
Change-Id: I464ea00519013a371ba29912a0220fa42b252243
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220299
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-06-11 21:50:29 +00:00
Julia Lavrova
f39124b076 Baseline for empty text
Change-Id: I7c172bfb8f35f684030489f75cd997acdbbe3a75
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220298
Commit-Queue: Julia Lavrova <jlavrova@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-11 21:49:49 +00:00
Mike Reed
daf1945321 expose xform to google3
Change-Id: Ic4a238b615c428fe6d1e9d6dd9fb56b39bc9c8f5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220300
Reviewed-by: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-06-11 21:21:38 +00:00
Mike Klein
0b5ffce7c9 refine perf dumps a little
We can use our hash to identify each CodeLoad entry, and that will mean
`perf inject -j` will dump out an .so for each function named
jitted-<pid>-<hash>.so, obviating the need for our own .bin dumps.

The .so's are nicer anyway because you can just `objdump -d` them;
they know what format, architecture, etc. they hold.

Change-Id: I701bda6bf55ac7716a2210b09373aa02e806c6ff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220317
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-11 20:55:52 +00:00
Brian Salomon
217522c40d Add SkRasterPipeline support for more load/store formats and GrSwizzle.
Adds loads/stores (but not dst loads/gathers) for:
*fp16 single and two channel
*fp32 two channel
*normalized unsigned 8 bit two channel
*normalized unsigned 16 bit single and two channel

TODO: 4 channel unsigned normalized 16 bit.

MISSING: fp32 single channel. No matching current or future GrColorType
planned AFAIK.

Intent is to support all (noncompressed) GrColorType load/stores in
order to implement fallbacks for 3D API limitations on texture uploads
and render target readbacks (some of which require swizzling).

Also, can be used to support YUV<->RGB planar
splitters/joiners on CPU.

Bug: skia:8962
Change-Id: I258d5682a1f4025b31639a97b1a1a02077a2453f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219999
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-11 20:31:02 +00:00
Herb Derby
e713a3c7b4 Make fAdvance{X|Y} private.
Clients of glyphs now use the accessors to get advance information.
Scalers still have full access to the fAdvance{X|Y} fields.

Change-Id: I4e83621811ca65627356caaad7efe2327a45f8b1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220217
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-06-11 19:34:00 +00:00
Mike Klein
7760112e01 better perf support for JIT code
References:

   https://lwn.net/Articles/638566/
   https://v8.dev/docs/linux-perf
   https://cs.chromium.org/chromium/src/v8/src/diagnostics/perf-jit.cc
   https://lore.kernel.org/patchwork/patch/622240/

Usage:

    ninja -C out dm nanobench
    perf record -k 1 out/nanobench -m SkVM_4096_I32\$
    perf inject -j -i perf.data -o perf.data.jit
    perf report -i perf.data.jit

Percent│
       │
       │
       │    Disassembly of section .text:
       │
       │    0000000000000040 <skvm-jit-8e8f2c67>:
       │    skvm-jit-8e8f2c67():
       │      vbroadcastss 0xd3(%rip),%ymm0        # 11c <skvm-jit-8e8f2c67+0xdc>
  0.35 │ 9:   vmovups (%rsi),%ymm1
  1.54 │      vandps %ymm0,%ymm2,%ymm2
  3.41 │      vpsrld $0x8,%ymm1,%ymm3
  0.26 │      vandps %ymm0,%ymm3,%ymm3
  0.55 │      vpsrld $0x10,%ymm1,%ymm4
  1.63 │      vandps %ymm0,%ymm4,%ymm4
  2.84 │      vpsrld $0x18,%ymm1,%ymm1
  0.46 │      vandps %ymm0,%ymm1,%ymm1
  0.17 │      vmovups (%rdx),%ymm5
  1.51 │      vandps %ymm0,%ymm6,%ymm6
  3.31 │      vpsrld $0x8,%ymm5,%ymm7
  0.38 │      vandps %ymm0,%ymm7,%ymm7
  0.28 │      vpsrld $0x10,%ymm5,%ymm8
  2.30 │      vandps %ymm0,%ymm8,%ymm8
  3.32 │      vpsrld $0x18,%ymm5,%ymm5
  0.47 │      vandps %ymm0,%ymm5,%ymm5
  0.64 │      vpsubd %ymm1,%ymm0,%ymm9
 12.49 │      vpmulld %ymm9,%ymm6,%ymm6
  1.19 │      vpaddd %ymm6,%ymm6,%ymm6
  8.75 │      vpsrad $0x8,%ymm6,%ymm6
  1.40 │      vpaddd %ymm2,%ymm6,%ymm6
  1.42 │      vpmulld %ymm9,%ymm7,%ymm7
  4.06 │      vpaddd %ymm7,%ymm7,%ymm7
  2.55 │      vpsrad $0x8,%ymm7,%ymm7
  2.14 │      vpaddd %ymm3,%ymm7,%ymm7
  2.57 │      vpmulld %ymm9,%ymm8,%ymm8
  1.28 │      vpaddd %ymm8,%ymm8,%ymm8
  2.85 │      vpsrad $0x8,%ymm8,%ymm8
  0.41 │      vpaddd %ymm4,%ymm8,%ymm8
  2.52 │      vpmulld %ymm9,%ymm5,%ymm9
  3.88 │      vpaddd %ymm5,%ymm9,%ymm9
  1.90 │      vpsrad $0x8,%ymm9,%ymm9
  2.83 │      vpaddd %ymm1,%ymm9,%ymm9
  1.43 │      vpslld $0x8,%ymm7,%ymm7
  4.35 │      vorps  %ymm6,%ymm7,%ymm7
  3.08 │      vpslld $0x8,%ymm9,%ymm9
  1.71 │      vorps  %ymm8,%ymm9,%ymm9
  3.58 │      vpslld $0x10,%ymm9,%ymm9
  3.37 │      vorps  %ymm7,%ymm9,%ymm9
  1.01 │      vmovups %ymm9,(%rdx)
  0.37 │      sub    $0x8,%rdi
  1.73 │      add    $0x20,%rsi
  3.27 │      add    $0x20,%rdx
       │      cmp    $0x7,%rdi
  0.40 │    ↑ jg     9
       │      vzeroupper
  0.05 │    ← retq
       │      xchg   %ax,%ax
       │      incl   (%rax)
       │            ...

Change-Id: Ibac83c92748139f7579c198ff09edf5564d2138e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220316
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-11 19:30:49 +00:00
Shachar Langbeheim
db610b3038 third-party.gni: Search includes using -I.
This will ensure that the headers from the dependencies will have
precedent over system headers, thus preventing situations where system
headers will block dependency headers and prevent compilation.

Change-Id: I0d480a6d3898f2da99cf2706c5335aaac05b4e4d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220276
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-11 19:04:29 +00:00
Ravi Mistry
1e81d788eb Increase timeout for G3 framework bot
NoTry: true
Bug: skia:
Change-Id: Ib30cf32f1ae58be69803decd90be548dd069a5b9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220218
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
2019-06-11 18:48:09 +00:00
Mike Klein
613ad38b10 add basic JIT using xbyak
Long term we'll need to spin up our own codegen rather than using xbyak,
since it uses exceptions and does not support ARM.

I really don't like how I've hacked in the caching of the JITted
program, but that'll change anyway when switching away from xbyak.

Performance looks good, better than (lowp) SkRasterPipeline
but not quite as good as hand-tuned code:

  Opts:     0.2 ns/px
  RP:       0.7
  F32:      0.8
  I32:      0.6
  I32_SWAR: 0.5

ninja -C out dm nanobench && out/dm -m SkVM && gobjdump -D -b binary -mi386:x86-64 /tmp/code.bin --insn-width=10

Change-Id: I34ce46e1d3fe5aa75f42709049a92ac79bf48bbd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219341
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-11 18:40:39 +00:00
Herb Derby
cc5dc01824 Make fForceBW private.
It is only used by SkScalerContext_DW to communicate with itself.

Change-Id: I2926a31e285368d1825b13e4ec1d597c6ddc7fe1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220257
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-06-11 18:26:09 +00:00
Jim Van Verth
19e8a7185d Fix ASAN issue with CreateTestingOnlyMtlTextureInfo
Bug: skia:8243
Change-Id: I33ae473a201ed69cbca726556a501c418749ac68
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220256
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-06-11 18:14:59 +00:00
Brian Salomon
df586b7d56 Use float literal with std::fill of floats
Change-Id: Ie96b3d0cb7e9f8d9070c25c90a41641ae3114ec8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220236
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-06-11 17:57:39 +00:00
Jim Van Verth
3e5b01746c Don't use MSAA config if can't resolve
Bug: skia:8243
Change-Id: I538e7181ab9922bbabb06e4acde1d560f2502de1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220216
Auto-Submit: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-06-11 17:48:31 +00:00
Julia Lavrova
a3552c5e6d Reland "SkParagraph"
This is a reland of 10ad0b9b01

Original change's description:
> SkParagraph
>
> Change-Id: I0a4be75fd0c18021c201bcc1edfdfad8556edeff
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/192100
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Julia Lavrova <jlavrova@google.com>

Change-Id: I46cf43eae693edf68e45345acd0eb39e04e02bfc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219863
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
2019-06-11 17:20:36 +00:00
Brian Osman
2d170c35d4 Remove all NexusPlayer bots and driver workarounds
This device is very old and very unsupported. It doesn't officially come
with a browser (Chrome needs to be sideloaded).

Bug: skia:6531 skia:6670 skia:7286 skia:7921
Change-Id: I720cd3a40981694bf7befa5cafc700717dcd7cdf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219486
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-06-11 17:05:23 +00:00
Ravi Mistry
5fc8912087 Add bin/try-clients to trigger client tryjobs
Will trigger the following:
  skia.primary:
    Build-Debian9-Clang-arm-Release-Flutter_Android
    Build-Debian9-Clang-cf_x86_phone-eng-Android_Framework
    Build-Debian9-Clang-host-sdk-Android_Framework
    Build-Debian9-Clang-TAP-Presubmit-G3_Framework
  luci.chromium.try:
    mac_chromium_compile_dbg_ng

Bug: skia:9154
Change-Id: I88a21865777f7da52e8333920ad9d10da5e788ec
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219482
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
2019-06-11 16:55:53 +00:00
Ethan Nicholas
53bd4c5d4e fixed an skslc crash with uninitialized globals
Bug: oss-fuzz:14372
Change-Id: I9445a36a7d7b04ba63f1e5c9b1d1bd270708a7c0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219481
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-06-11 16:35:03 +00:00
Ethan Nicholas
d188c18835 fixed SkSL handling of negated literal vectors
Bug: oss-fuzz:14409
Change-Id: I837083139489d46f7db2f697ce85a0cabf85fb94
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219997
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-06-11 16:34:04 +00:00
Jim Van Verth
6488077ea3 Support more YUV texture formats for Metal
Bug: skia:8243
Change-Id: Ie8b562f4e8ec6efeff1be7d7e0f3ff89ab3e99a7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219487
Auto-Submit: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-06-11 16:20:53 +00:00
Brian Salomon
024bd0058b Initial implementation of SkSurface::asyncRescaleAndReadPixelsYUV420.
Rescales a pixel rectangle from a SkSurface and then converts to YUV
planes. Currently only implemented on GPU.

Supports the same rescaling options as asyncRescaleAndReadPixels. The
RGB->YUV conversion is specified by a SkYUVColorSpace.

Y, U, and V are always separate planes. The U and V planes are
subsampled in X and Y by a factor of 2.

Currently fails if either the width or height of the rectangle is
not even.

Bug: skia:8962
Change-Id: I33237849a9ccf9b66cab13dc56785496f4ce556a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/217123
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-06-11 16:04:03 +00:00
Herb Derby
2bafb64ed3 Revert "try resolver pattern"
This reverts commit a716809d5a.

Reason for revert: breaks google3

Original change's description:
> try resolver pattern
> 
> Change-Id: I32c5dbf4cacce9112df42a6f29800859625dc4a9
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/218965
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
> Auto-Submit: Mike Reed <reed@google.com>

TBR=robertphillips@google.com,reed@google.com

Change-Id: Ib6facd0fda07762ed394b7b2c84771d7a93edae0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/219488
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-06-11 16:01:14 +00:00
Robert Phillips
3d4cac52f2 Remove IO refs from GrSurfaceProxy only
This CL leaves the Ganesh world in a very odd place. In particular it still:
  has pendingIO refs on GrSurfaces
  forwards the proxy refs on to the backing GrSurface

Removing everything at once only ends in a mess thus, this goofball CL.

Change-Id: If112ff311bcef2e8d65a36c3b53b0ded4041c24e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/210040
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-06-11 15:39:33 +00:00
Brian Osman
5f5680c7d5 Enable gl_FragCoord workaround on NexusPlayer, and re-enable analytic clipping
The analytic clip override was added to work around a fragCoord bug,
before we had the sk_FragCoord workaround. Now that we do, we can enable
that instead. This lets us remove the only use of fMaxClipAnalyticFPs.

Bug: skia:7286
Change-Id: If043bd939fd21088c145536b3133c7090e0984b9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/218538
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-11 14:49:23 +00:00
Heather Miller
1f0a37ac57 fix up relative links and spacing
No-Try: true
Docs-Preview: https://skia.org/?cl=218975
Bug: skia:8365
Change-Id: I290c3185d60c8e8114adda6945e5184232be78aa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/218975
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Heather Miller <hcm@google.com>
Auto-Submit: Heather Miller <hcm@google.com>
2019-06-11 14:29:38 +00:00