Commit Graph

45977 Commits

Author SHA1 Message Date
Brian Osman
504032e575 SkRuntimeEffect: Fix 'in' variables in CPU backend
We were never calling specialize() to bake in the values of ins,
so do that. Add uniformSize() to get the size of just the uniform
values. (The interpreter asserts that the size of the uniforms
being passed in matches the expected size from the ByteCode,
so these need to match up).

Added a unit test that uses both 'in' and 'uniform'.

Change-Id: I595822171211d35a17d5977fa790de0d1bbd6c78
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263519
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2020-01-10 15:46:22 +00:00
Nathaniel Nifong
aac8e44d5c Add vis of android device clip restriction, fix regular clip vis on gpu
Change-Id: I103025f4a9955c46f34b02d4e3ef1626796029e1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263521
Commit-Queue: Nathaniel Nifong <nifong@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-01-10 15:30:41 +00:00
Julia Lavrova
c48687a0cc Ellipsis attached to cluster, not word
Change-Id: I3bcef7e57a8f95a12743325363463a3a4039776e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263206
Commit-Queue: Julia Lavrova <jlavrova@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2020-01-10 14:40:41 +00:00
Mike Reed
a092028439 Revert "new virtuals for canvas ctm"
This reverts commit 2076b04d15.

Reason for revert: speculative: breaking google3 flutter scuba?

Original change's description:
> new virtuals for canvas ctm
> 
> 1. Feature: Clients need to override didConcat44() (new data)
> 2. Perf: Clients need to override didTranslate (and now didScale) so our
>          default impls can be empty.
> 
> Need SK_SUPPORT_LEGACY_CANVAS_MATRIX_VIRTUALS flag to stage this in
> clients (anyone who subclasses SkCanvas)
> 
> Before (with flag)
>     120.87  	canvas_matrix_4x4	8888
>     108.10 ?	canvas_matrix_3x3	8888
>     108.13 ?	canvas_matrix_2x3	8888
>     141.54  	canvas_matrix_scale	8888
>     128.04  	canvas_matrix_trans	8888
> 
> After (without the flag)
>     ...
>      90.79  	canvas_matrix_scale	8888
>      94.51  	canvas_matrix_trans	8888
> 
> bug: skia:9768
> 
> Change-Id: I6f500138dd6b2b24754dc065c650d0bd3c341540
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263349
> Commit-Queue: Mike Reed <reed@google.com>
> Reviewed-by: Florin Malita <fmalita@chromium.org>

TBR=fmalita@chromium.org,reed@google.com

Change-Id: I9c2e39ea0aa2b19d40eb6454c233258ab7f35829
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263564
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2020-01-10 14:26:41 +00:00
Mike Reed
2076b04d15 new virtuals for canvas ctm
1. Feature: Clients need to override didConcat44() (new data)
2. Perf: Clients need to override didTranslate (and now didScale) so our
         default impls can be empty.

Need SK_SUPPORT_LEGACY_CANVAS_MATRIX_VIRTUALS flag to stage this in
clients (anyone who subclasses SkCanvas)

Before (with flag)
    120.87  	canvas_matrix_4x4	8888
    108.10 ?	canvas_matrix_3x3	8888
    108.13 ?	canvas_matrix_2x3	8888
    141.54  	canvas_matrix_scale	8888
    128.04  	canvas_matrix_trans	8888

After (without the flag)
    ...
     90.79  	canvas_matrix_scale	8888
     94.51  	canvas_matrix_trans	8888

bug: skia:9768

Change-Id: I6f500138dd6b2b24754dc065c650d0bd3c341540
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263349
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2020-01-10 13:30:11 +00:00
skia-autoroll
f72e48dd2f Roll ../src 5d178c93fd5b..e8ce929aea0d (425 commits)
5d178c93fd..e8ce929aea


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

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 jvanverth@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

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

Cq-Include-Trybots: skia/skia.primary: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
Bug: None
Tbr: jvanverth@google.com
Change-Id: Ib07a97dc7543e64ae138026745bef00250313e3d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263607
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-01-10 04:45:21 +00:00
skia-autoroll
a634b1a80a Roll third_party/externals/angle2 c431d59626e1..12ce8f687d23 (8 commits)
c431d59626..12ce8f687d

git log c431d59626e1..12ce8f687d23 --date=short --first-parent --format='%ad %ae %s'
2020-01-10 kbr@chromium.org Upstream WebKit's iOS port of ANGLE.
2020-01-09 kbr@chromium.org Work around Intel driver bug with CopyTex{Sub}Image2D/DeleteTextures.
2020-01-09 tobine@google.com Vulkan:Clarify volk license file name
2020-01-09 jdarpinian@chromium.org Optimize disabling ARB_texture_rectangle
2020-01-09 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/spirv-tools/src e70b009b0f1e..fb2e819819ef (14 commits)
2020-01-09 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/SwiftShader 45a4d0f36bd6..77c89ff847b6 (13 commits)
2020-01-09 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/vulkan-validation-layers/src 258b887827ab..ac72777ef763 (1 commits)
2020-01-09 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/glslang/src 1642ca11282a..51813670627c (2 commits)

Created with:
  gclient setdep -r third_party/externals/angle2@12ce8f687d23

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 jvanverth@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

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

Cq-Include-Trybots: skia/skia.primary:Build-Debian9-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Bug: None
Tbr: jvanverth@google.com
Change-Id: I44ea709d46113e30587fd4a28176104185232eec
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263605
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-01-10 04:36:50 +00:00
skia-autoroll
9eb28ddf24 Roll third_party/externals/swiftshader 77c89ff847b6..110236f3ce70 (5 commits)
https://swiftshader.googlesource.com/SwiftShader.git/+log/77c89ff847b6..110236f3ce70

git log 77c89ff847b6..110236f3ce70 --date=short --first-parent --format='%ad %ae %s'
2020-01-09 sugoi@google.com Enable filtering depth+stencil formats
2020-01-09 bclayton@google.com Kokoro: Disable ASAN for debug mac builds
2020-01-09 bclayton@google.com SpirvShader: Move extension list out of for loop.
2020-01-09 bclayton@google.com C++14: Use std::make_unique where possible.
2020-01-09 swiftshader.regress@gmail.com Regres: Update test lists @ 77c89ff8

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

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 jvanverth@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

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

Cq-Include-Trybots: skia/skia.primary:Test-Debian9-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader
Bug: None
Tbr: jvanverth@google.com
Change-Id: I847de3ad3a03e07891b121e2156b41c6a7b9ac3e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263606
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-01-10 04:33:50 +00:00
recipe-roller
1386c58de7 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.
depot_tools:
  https://crrev.com/13928b7e7f1a37e5e70cae53aba089f88bbbccfc Revert "vpython: Specify interpreter to run." (ehmaldonado@chromium.org)


TBR=borenet@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: Ib6d0a4e917351ddf8be667aa9b85d9b7a4cb143b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263593
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>
2020-01-09 23:09:45 +00:00
Mike Reed
6f48542252 remove cruft bools from canvas
Change-Id: Ic035e2ba24a9c1f8b5b9af56471c130c9efc158c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263562
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2020-01-09 22:24:54 +00:00
Jim Van Verth
67d0f3fd72 Revert "Remove GrPaint::addColorTextureProcessor"
This reverts commit a92320d4e6.

Reason for revert: Blocking Chrome roll.

Original change's description:
> Remove GrPaint::addColorTextureProcessor
> 
> Just make the effect and then add it.
> 
> Makes it easier to make changes to GrTextureEffect::Make going forward.
> 
> Also add default param for matrix (identity).
> 
> Change-Id: I52073f11a0a78b971bb512627198ee1724bfdac7
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263518
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

TBR=bsalomon@google.com,michaelludwig@google.com

Change-Id: I2618844f5a8f5f1873dd79142caafd8939384e9e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263560
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2020-01-09 21:33:24 +00:00
Robert Phillips
0cca8a2525 Move GrVkFormatColorTypePairIsValid assert back into GrVkGpu::check_image_info
Apparently Chrome is intentionally setting GrVkYcbcrConversionInfo's fFormat
field to VK_FORMAT_UNDEFINED. If that is correct we should update our tests
to match. For now this will allow the Chrome video tests to be re-enabled.

Bug: 1037949
Change-Id: Ifb985f2bcda48135f312ee7412d2859d9277a1bf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263558
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2020-01-09 21:25:15 +00:00
Ravi Mistry
ab2c14d26d Add retries to Android compile bot for when GS returns 502s
Eg:
https://logs.chromium.org/logs/skia/48c12c1309160011/+/steps/Trigger_and_wait_for_task_on_android_compile_server/0/stdout
and
https://logs.chromium.org/logs/skia/499f3fbf91c98e11/+/steps/Trigger_and_wait_for_task_on_android_compile_server/0/stdout

Bug: skia:9770
Change-Id: I94f1b58440548f0e7f87a8d1d38eea146e5f4e52
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263208
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
2020-01-09 21:08:44 +00:00
Chris Dalton
c71b3d42fb Speed up get_contour_count in GrTessellator.cpp
We used to call GrPathUtils::worstCasePointCount. But this method
spends a lot of time recursing and subdividing curves, which is
irrelevant to counting contours.

Change-Id: Iba47ecc5ae59eb0b17c8441498fc0d47e37efd3e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263096
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2020-01-09 20:49:14 +00:00
Herb Derby
a6026a2794 Make SubRun accessible for GrAtlasTextOp
Change-Id: I1c7444a94a4dea5929eeb7370fae1074cda94c36
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263522
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2020-01-09 20:48:14 +00:00
Jim Van Verth
06184a22c0 Hide MakeFromMTKView behind an availability flag
MTKView is only available on iOS 9.0 and later, so this method can't
be used on earlier OSes.

Change-Id: I3ba8786953c990ded771c856c8c54b9ae1e2b3cd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263520
Auto-Submit: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2020-01-09 20:04:45 +00:00
recipe-roller
8ec63335eb 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/ec5140c30b91e961996b5bd690b8c27f01dd9c56 path: add relpath to the list of filtered methods. (jbudorick@chromium.org)


TBR=borenet@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: If06bbef2d553ff7ba209db6d0050d8aec4f615ac
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263524
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>
2020-01-09 19:45:24 +00:00
Herb Derby
51a95ce30f Combine result calculation from both legs of if statement
The values of result are all functions of fCurrGlyph. Make
that calculation once.

Change-Id: I789be0e9384a2d98672bf111279d1f53b8b0ad77
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263336
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2020-01-09 19:32:44 +00:00
Brian Salomon
a92320d4e6 Remove GrPaint::addColorTextureProcessor
Just make the effect and then add it.

Makes it easier to make changes to GrTextureEffect::Make going forward.

Also add default param for matrix (identity).

Change-Id: I52073f11a0a78b971bb512627198ee1724bfdac7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263518
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2020-01-09 19:28:24 +00:00
recipe-roller
1d334350d0 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.
depot_tools:
  https://crrev.com/797d74a266bb5ffaa3882dd6a19432d586be776c vpython: Specify interpreter to run. (ehmaldonado@google.com)


TBR=borenet@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I56c9e56d02603a88bf8ab1867ef36e73fe87376a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263489
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>
2020-01-09 19:01:26 +00:00
Brian Osman
eadfeb9265 Fix ByteCodeGenerator's handling of specialized programs
Calling specialize does bake in the value of 'in' variables, but the
variable declarations are still present. So move the assert to check
for references to those variables instead.

Change-Id: Ia5a310d66b500b2741ddf0c1f68110f08a5ee937
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263517
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2020-01-09 19:01:25 +00:00
recipe-roller
8d3c0c7a1a 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.
depot_tools:
  https://crrev.com/b92d20526b83edda0ccb9e79d00f916a61e16103 vpython3: Add Python3 bin dir to PATH on Windows (ehmaldonado@chromium.org)


TBR=borenet@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I819f998f6a5ce75155c513cde357d3ae77ebc24b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263482
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>
2020-01-09 17:40:24 +00:00
Brian Salomon
ccb6142956 Allow implicit conversion from GrSamplerState::Filter to GrSamplerState
constexprify GrSamplerState

pass/return GrSamplerState by value (it's 3 bytes).

Remove unused function from GrTexturePriv

Change-Id: Iffecd941500acf5653f01cc88b42ff1d45678b54
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263346
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2020-01-09 17:29:54 +00:00
Brian Osman
a88cab1ad9 Add CachingHint to makeRasterImage, default to kDisallow
When a client calls makeRasterImage, they're likely to hold on to that
image, and throw away the source (GPU or Lazy). In that situation, it
makes no sense to leave the buffer in the resource cache.

Change-Id: Ic0be8ceb643ed9196526469516be0d200bea42fd
Bug: b/144232910
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263347
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2020-01-09 15:51:24 +00:00
Mike Klein
12f4498a83 add back src-in-gamut tracking
I had to remove this yesterday when I realized we had those slightly a>1
colors, but now that we added this alpha clamp to [0,1] today, it's now
sensible to track if the src is in gamut again and use that bit to skip
final clamps.  I've assert_true()'d the crap out of this to make sure
I'm thinking straight; those run in debug builds, even when JITted.

PS 2 cuts the assertions down to just where they test subtle invariants,
removing the asserts that merely check the immediate preceding lines of
code were correct.  It is overkill to clamp the shader color to gamut
then immediately assert that the shader color is in gamut.

Change-Id: I045663ebf8cf50725ba800d1bccc4cf1fd48e96f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263168
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-01-09 15:09:13 +00:00
Herb Derby
eca1091a52 Add first, last and subspan to SkEnumerate
Change-Id: I0cfd2f710acdb8070325b950a4502c99a668c8b2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262943
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2020-01-09 15:04:44 +00:00
Ravi Mistry
d314f93a44 Update go.skia.org/infra in go.mod/go.sum
Updated with:
$ go get go.skia.org/infra@1bda9c0094
$ make -C infra/bots train

Bug: skia:9762
Change-Id: I0a86ac5fd88845f55faa68d17cd2ad186ae6a178
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263345
Commit-Queue: Ravi Mistry <rmistry@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
2020-01-09 15:03:46 +00:00
Mike Reed
620cedaa5e Remove legacy canvas-matrix impl
Chrome (the only user of the flag) is now updated.

Change-Id: I137f471588238f2b1cd4bc6013affb8075d0c561
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263341
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2020-01-09 14:49:43 +00:00
Robert Phillips
d5caeb8d66 Improve handling of anisotropic scaling for stroked rects
This doesn't resolve all the problems here but does substantially improve the situation. In particular, if the device-space stroke is greater than 1 in one axis and less than 1 in the other, the smaller side will still appear darker than expected.

Bug: 935303
Change-Id: I3ff9bc73cad5ad5b8e13ef5aa7b46bbf4835753b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263024
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2020-01-09 14:41:44 +00:00
Mike Klein
f22faaf254 add vroundps, impl Op::floor on x86
Change-Id: Iad94adda2da74fefb5657d883120f85ad362327e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263461
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-01-09 14:19:14 +00:00
Mike Reed
064c7f9f1c Optimize concat44 on canvas
- allow clients to pass in raw-array at public level
- rewrite m44 concat to take raw-array for 2nd input

Extended canvas_matrix bench to also time 44 concats:

Before
    207.51  	canvas_matrix_4x4	8888
    100.75 ?	canvas_matrix_3x3	8888
    100.79  	canvas_matrix_2x3	8888
    140.93  	canvas_matrix_scale	8888
    133.35  	canvas_matrix_trans	8888

After
    120.80  	canvas_matrix_4x4	8888
    ...

bug: skia:9768

Change-Id: Iaa361b9897a183d930fd31aa67327caed25cd51d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263209
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2020-01-09 13:39:17 +00:00
Mike Klein
c9e13bbc95 add x-macro over SkVM::Ops
This streamlines the dump() methods a bit,
and makes it easier to see what ops have not
yet been implemented in the JIT.

Change-Id: I22d0a206e847451452be75b586c8b15eb0c1af78
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263456
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-01-09 13:33:45 +00:00
Kevin Lubick
f5bc8fba95 [canvaskit] Create an SkImage from a frame of an SkAnimatedImage
Flutter on the web wants to be able to extract arbitrary frames from
an animated image and pass those into functions like:
drawAtlas, drawImage, drawImageRect

This should allow that to happen w/o having to add lots of variants like
drawAnimatedImage. If this sticks, is drawAnimatedImage still useful?
(maybe it saves a copy?)

Change-Id: I99d7045c5dea61d0a1bd6d335c88e7517f2c4fc2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263020
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2020-01-09 13:25:43 +00:00
skia-autoroll
1d457b7d95 Roll ../src 61f03e9a10c0..5d178c93fd5b (411 commits)
61f03e9a10..5d178c93fd


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

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 jvanverth@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

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

Cq-Include-Trybots: skia/skia.primary: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
Bug: None
Tbr: jvanverth@google.com
Change-Id: Ia8ae6e48846d32ee1dcc5e2fc8edb8339a90b319
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263381
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-01-09 04:42:48 +00:00
skia-autoroll
42f6f97a69 Roll third_party/externals/swiftshader 45a4d0f36bd6..77c89ff847b6 (13 commits)
https://swiftshader.googlesource.com/SwiftShader.git/+log/45a4d0f36bd6..77c89ff847b6

git log 45a4d0f36bd6..77c89ff847b6 --date=short --first-parent --format='%ad %ae %s'
2020-01-08 bclayton@google.com Build: Verify that we're compiling with C++14.
2020-01-08 bclayton@google.com Build: Move from using C++11 to C++14.
2020-01-08 bclayton@google.com Kokoro: Update from GCC 4.8 to GCC 7.
2020-01-08 bclayton@google.com Pipeline/SpirvShader: Move setActiveLaneMask()
2020-01-08 bclayton@google.com Pipeline/SpirvShader: Support more OpExtInsts
2020-01-08 bclayton@google.com Pipeline/SpirvShader: Process OpString instructions
2020-01-08 bclayton@google.com Pipeline/SpirvShader: Add Impl struct
2020-01-08 bclayton@google.com Vulkan/Debug: Expose Frames from Thread
2020-01-08 sugoi@google.com Enable B10G11R11_UFLOAT blending
2020-01-08 bclayton@google.com Vulkan/Debug: Add Reference value type.
2020-01-08 chrisforbes@google.com Add storage image support for R16G16_{UINT,SINT,SFLOAT}
2020-01-08 bclayton@google.com Vulkan: Plumb the debug context down to SpirvShader
2020-01-08 bclayton@google.com Vulkan: Add debugging of the command buffer.

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

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 jvanverth@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

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

Cq-Include-Trybots: skia/skia.primary:Test-Debian9-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader
Bug: None
Tbr: jvanverth@google.com
Change-Id: I3a0c308cff7df2a844362b7ff44ab9e003c9ccd9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263380
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-01-09 04:38:23 +00:00
skia-autoroll
2ec3fb6df9 Roll third_party/externals/angle2 db49bc7dd075..c431d59626e1 (7 commits)
db49bc7dd0..c431d59626

git log db49bc7dd075..c431d59626e1 --date=short --first-parent --format='%ad %ae %s'
2020-01-08 jmadill@chromium.org Add Serial to all GL resources.
2020-01-08 tobine@google.com Vulkan:Roll volk
2020-01-08 ericbinet@google.com Fix colored indexed point tests not using color in vertex buffer.
2020-01-08 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/vulkan-validation-layers/src b416ed86e4b2..258b887827ab (3 commits)
2020-01-08 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/SwiftShader 068dd89cab31..45a4d0f36bd6 (5 commits)
2020-01-08 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/glslang/src 1d258ac34698..1642ca11282a (1 commits)
2020-01-08 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/vulkan-tools/src 55333361f9a1..2c436960d2c0 (1 commits)

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

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 jvanverth@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

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

Cq-Include-Trybots: skia/skia.primary:Build-Debian9-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Bug: None
Tbr: jvanverth@google.com
Change-Id: Ib657a03981baf12eef5078051d8af06b6d15a231
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263379
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-01-09 04:37:43 +00:00
Mike Klein
92ca3baba6 JIT today's new _imm ops
- Add YmmOrLabel struct to represent the concept that many
  x86 instructions can take a final argument as either a
  register or memory address, and that they all handle them
  the same way.
- Convert existing overloads like vmulps() to use YmmOrLabel.
- upgrade some other instructions to take YmmOrLabel
- use them to implement today's new _imm ops

This feels like a good spot for implicit constructors, no?

Change-Id: I435028acc3fbfcc16f634cfccc98fe38bbce9d19
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263207
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-01-08 23:38:13 +00:00
Herb Derby
b45558dc33 Hoist calculations up to regenerate
After this transformation, I think much of the
code in regenerate is the same.

Change-Id: I6ae3668181c6184b085b2b9862d80db1a23de586
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263203
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2020-01-08 22:38:23 +00:00
recipe-roller
0065460e8b 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/2438e081638a16b8de53752c5a78c807195ed186 Return a disabled ModuleTestData from DisabledTestData. (gbeaty@chromium.org)


TBR=borenet@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: Id0798566a98a588d180c2c63c046a64751f34581
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263166
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>
2020-01-08 22:32:43 +00:00
Mike Klein
57bdb24d0e skip no-op masks
extract() can generate silly instruction patterns like

     v0 = ...
     v1 = shr v0 24
     v2 = bit_and v1 FF
     v3 = whatever v2 ...

This CL skips those pointless bit_ands when we see the
mask is an immediate and (0xFFFFFFFF>>shift) == mask.

Change-Id: I2bb3847fbb2efdf24d024870ac37b37bb8f9aa3c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263101
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-01-08 21:59:24 +00:00
Greg Daniel
ba0ff78359 Move the remainder of GrRenderTargetContext factories.
This mostly handles cases where we are wrapping a GrBackend* or an already
made proxy.

Change-Id: Ieb33eb51f7db84611ade0f8243b6d9023ce8e390
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262234
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2020-01-08 21:30:21 +00:00
Mike Klein
a6434a5ef5 refactor bit ops
- Remove extract... it's not going to have any special impl.
  I've left it on skvm::Builder as an inline compound method.
- Add no-op shift short circuits.
- Add immediate ops for bit_{and,or,xor,clear}.

This comes from me noticing that the masks for extract today are always
immediates, and then when I started converting it to be (I32, int shift,
int mask), I realized it might be even better to break it up into its
component pieces.  There's no backend that can do extract any better
than shift-then-mask, so might as well leave it that way so we can
dedup, reorder, and specialize those micro ops.

Will follow up soon to get this all JITing again,
and these can-we-JIT test changes will be reverted.

Change-Id: I0835bcd825e417104ccc7efc79e9a0f2f4897841
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263217
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-01-08 21:20:54 +00:00
Mike Klein
4a6e849207 add add/sub/min/max w/ constant ops
I'm seeing these come up a lot in skvm image shaders.

It's worth noting that everything is symmetric but sub().

min() and max() are a _little_ subtle because ultimately the
instructions they imply are not entirely symmetric when NaN
is involved, but I think we can probably get away with it.

Change-Id: I7275ebad61845e720cd26cba28db5b8210951e20
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263099
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-01-08 21:12:13 +00:00
Michael Ludwig
9abd568371 Reland "Avoid loop-dependent behavior in GrMemoryPoolBench"
This reverts commit dff4c1d5fd.

Reason for revert: Fix WIP

Original change's description:
> Revert "Avoid loop-dependent behavior in GrMemoryPoolBench"
> 
> This reverts commit f811fc331a.
> 
> Reason for revert: breaks on iOS
> 
> Original change's description:
> > Avoid loop-dependent behavior in GrMemoryPoolBench
> > 
> > This helps stability of benchmark across repeated runs, and across code
> > changes. Previously, a change to the tuned loop count could radically
> > change the allocation behavior within the loop's iteration and lead to
> > unfair comparisons.
> > 
> > In addition, this separates the stack allocation pattern into N allocations
> > followed by N LIFO releases, and a push-pop alternating pattern of N
> > allocates and releases (so still LIFO, but reuses the memory at the start
> > of a block).
> > 
> > In later CLs experimenting on the memory pool, I found that there were
> > surprising effects on performance linked to the specific interaction between
> > the allocation size, per-allocation metadata, and per-block metadata. To
> > help differentiate these coincidences, this adds two modes of allocation
> > where one should already be aligned.
> > 
> > It also moves away from a global pool, so that it's possible to benchmark
> > on different block sizes and factor in the allocation/release cost of the
> > actual blocks (vs. the cursor management of a larger sized pool). As part
> > of this, the new/delete reference operator is added as an explicit benchmark.
> > 
> > Change-Id: I12b8c11cb75db0df70460fe2e8cf6c029db7eb22
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262936
> > Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
> 
> TBR=bsalomon@google.com,michaelludwig@google.com
> 
> Change-Id: I16f2810699a378eb5a516ab9fb1834c10b65f01b
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263029
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>

Change-Id: I51a9db111c26b49572c3fa0928e26ef6e5a7a74c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263196
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>
2020-01-08 21:09:43 +00:00
recipe-roller
e47c70169f 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.
depot_tools:
  https://crrev.com/84b5f9a21530e3df92bbc0c83c057e3532d58f00 depot_tools: Add tests for gclient_paths (ehmaldonado@google.com)
  https://crrev.com/0d462e99bc1f4e053b682249d3b4e2e972d11c6f git-hyper-blame: Simplify code and tests. (ehmaldonado@google.com)


TBR=borenet@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: If41cd0aeca971660551ef510e0f8b97f4570bfe6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263100
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>
2020-01-08 20:47:23 +00:00
Mike Klein
6495a4ffae clamp to [0,1] before blending with normalized
GL clamps to the limits of the destination format before blending,
so for consistency I think we ought to also.

I believe it's sufficient to add just this one new clamp for alpha to
[0,1] before the other clamps, only when is-premul && is-normalized:

   - our GPU backend only draws premul, so there's nothing
     to be inconsistent with when drawing into unpremul;
   - since we're already clamping rgb to alpha in these cases,
     clamping alpha first to [0,1] clamps rgb to [0,1] also.

Change-Id: If77bb4ea8614e6ed100d37f27427d9b2fe12374f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263098
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-01-08 19:29:23 +00:00
Brian Osman
f72deddb89 Expose the Input variable and Child name collections in SkRuntimeEffect
Add framework for unit tests that draw (CPU and GPU) with a runtime
shader, as well as couple example tests.

Change-Id: I43b3b39e86634ec55521a2689a4c55c21939dce5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262809
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2020-01-08 19:23:13 +00:00
Mike Klein
5c660e0cd8 Streamline skvm bilerp.
- Add lerp(F32,F32,F32) and lerp(Color,Color,F32).
- Rewrite bilerp to use lerp(), simplifying the weights we
  calculate and generally making how bilerp works stand out
  more clearly.

This trims ~4 registers from an arbitrary program I spot checked.
But I think the clarity is the big win.

Change-Id: I4d735c940ed9f3744aeae1c643bf58d68bf65605
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263199
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-01-08 19:19:53 +00:00
recipe-roller
8e0a4c0809 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/a100ae5fb1cd5a66508d69f9bee7fb69b70b0135 [vpython] Bump asn1crypto to 1.0.1 to fix crash on macOS Catalina (athom@google.com)


TBR=borenet@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I2e4ca38aff047426ca65af544bd47ca3c52abe0d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263097
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>
2020-01-08 19:17:53 +00:00
Greg Daniel
e20fcad156 Reland "Move makeDeferredRenderTargetContext calls to factory on RTC."
This reverts commit a4f207eb67.

Reason for revert: Landing with fix

Original change's description:
> Revert "Move makeDeferredRenderTargetContext calls to factory on RTC."
>
> This reverts commit 1c16b43033.
>
> Reason for revert: Red on tree
> Original change's description:
> > Move makeDeferredRenderTargetContext calls to factory on RTC.
> >
> > Change-Id: Iaa8f5829d9f8650ff27a60f75fb2216f016ab85e
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262058
> > Commit-Queue: Greg Daniel <egdaniel@google.com>
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
>
> TBR=egdaniel@google.com,bsalomon@google.com
>
> Change-Id: I9e3c9d13c66b5437c87ad7136d283fa4ac81df1f
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263019
> Reviewed-by: Jim Van Verth <jvanverth@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>

TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com

Change-Id: If4ec8316a952fb482471c22273f4724f9b30a998
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263022
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2020-01-08 19:13:14 +00:00