Commit Graph

49462 Commits

Author SHA1 Message Date
Zepeng Hu
a5783f3858 Add SkRuntimeEffect Fuzzer
The major improvement is that now the fuzzer is able to execute
the sksl code (before it just compiled it). The fuzzer will
reserve 256 bytes for providing uniforms to the shader;
meanwhile, the fuzzer will read the remaining bytes as sksl code
to create SkRuntimeEffect. It then creates a shader and executes
it by painting the shader on a canvas.

The code was tested locally with afl-fuzz, and the execution 
speed was around 700/sec.

An alternative implementation would have been using Fuzz.h to
read bytes; I decided to go with sk_sp<SkData> since it has a
comparable format to other binary fuzzer and meets all the
functionality in this fuzzer.

For future changes, there are 2 important improvements to the
implementation:

1) Current shader does not have children shaders; thus,
makeShader() will fail if the SkSL ever tries to use an 'in shader'.

As pointed out in patchset 11, after creating the runtime effect,
effect->children().count() will tell you how many children it's
expecting (how many 'in shader' variables were declared). When you
call makeShader(), the second and third arguments are a
(C-style) array of shader pointers, and
a count (which must match children().count()).

Some helpful examples can be SkRTShader::CreateProc in
SkRuntimeEffect.cpp, make_fuzz_shader in FuzzCanvas.cpp.

2)

In this fuzzer, after creating the paint from a shader, the paint
can be drawn on either GPU canvas or CPU, so a possible way is to
use SkSurface::MakeRenderTarget to create GPU canvas and use a byte
to determine which canvas it will be drawn on.

Change-Id: Ib0385edd0f5ec2f23744aa517135a6955c53ba38
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300618
Commit-Queue: Zepeng Hu <zepenghu@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-07-10 15:54:23 +00:00
Mike Klein
5160e8caa2 Revert "Exclude gl files for Fuchsia platform."
This reverts commit c1f3f8cda4.

Reason for revert:  duplicate symbols on other platforms

ld.lld: error: duplicate symbol: GrGLCreateNativeInterface()
>>> defined at GrGLMakeNativeInterface_none.cpp:12 (third_party/skia/HEAD/src/gpu/gl/GrGLMakeNativeInterface_none.cpp:12)
>>>            blaze-out/arm64-v8a-fastbuild/bin/third_party/skia/HEAD/_objs/skia/GrGLMakeNativeInterface_none.pic.o:(GrGLCreateNativeInterface())
>>> defined at GrGLMakeNativeInterface_egl.cpp:137 (third_party/skia/HEAD/src/gpu/gl/android/../egl/GrGLMakeNativeInterface_egl.cpp:137)
>>>            blaze-out/arm64-v8a-fastbuild/bin/third_party/skia/HEAD/_objs/skia/GrGLMakeNativeInterface_android.pic.o:(.text._Z25GrGLCreateNativeInterfacev+0x0)

I even ran the G3 trybot and forgot to see if it was green...

Original change's description:
> Exclude gl files for Fuchsia platform.
> 
> Fuchsia platform supports only vulkan. So exclude all gl files and
> add vulkan files for building Skia on Fuchsia.
> 
> Change-Id: I2593a14926747b1154a1134bfdd43772627110a4
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301739
> Reviewed-by: Mike Klein <mtklein@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

TBR=mtklein@google.com,bsalomon@google.com,guruji@google.com

Change-Id: If2623c600c5b3fc43bf896b4da02dc7cf61d8a27
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301896
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-07-10 15:07:35 +00:00
Florin Malita
082323b57d [skottie] Fill-over-stroke support for text
AE allows selecting the paint order when both fill & stroke are present.

The CL also fixes some text stroke issues: stroke width not parsed
correctly and not actually used on the paint.

Change-Id: Iec27bb65d09f689365e43b801d3844106780572b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301857
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2020-07-10 14:44:23 +00:00
Guruji Panda
c1f3f8cda4 Exclude gl files for Fuchsia platform.
Fuchsia platform supports only vulkan. So exclude all gl files and
add vulkan files for building Skia on Fuchsia.

Change-Id: I2593a14926747b1154a1134bfdd43772627110a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301739
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-07-10 14:09:58 +00:00
Greg Daniel
aaf738cf27 Add internal calls for updateCompressedBackendTexture.
This splits the creation and the updating of backend compressed textures
below the public API level. In a follow on change I will add the public
api call to updateCompressedBackendTexture.

Bug: chromium:1099255
Change-Id: Ie410cfb42046d0e0c8f4fe60055be5782f811d47
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301577
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2020-07-10 14:08:53 +00:00
Ben Wagner
525e87682c Fix Op tests when default typeface is empty.
While testing on Linux with a configuration like

skia_enable_fontmgr_custom_directory=false
skia_enable_fontmgr_custom_embedded=false
skia_enable_fontmgr_custom_empty=true
skia_enable_gpu=true
skia_use_fontconfig=false
skia_use_freetype=true
skia_use_system_freetype2=false

the default typeface will be an empty typeface with no glyphs. This of
course leads to many test failures, which is fine.

However, this also leads to crashes when testing GPU Ops since the Op
factories may return nullptr to indicate no-op but the callers of those
factories currently do not expect nullptr or handle it as a no-op.

Change the callers of Op factories to treat nullptr as no-op.

Change-Id: I9eb1dfca4a8a9066a9cfb4c902d1f52d07763667
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301586
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2020-07-10 14:04:53 +00:00
Brian Salomon
7a96c2a6bb Revert "Revert "Put top level FPs into their own functions""
Now that we have inlining this should be ok.

This reverts commit 24dcd207ea.

Change-Id: I2aed6de6d962595cb0f3305bc26f340c99e0d1d2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301552
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2020-07-10 13:59:53 +00:00
Michael Ludwig
1c66ad940e Apply paint color to alpha-only textures in drawEdgeAAImageSet
This makes batch texture ops consistent with singleton texture ops, and
images drawn through a texture producer.

Bug: chromium:1102578
Change-Id: I490b20940ef6f1899396b786369271ce7130e8a9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301540
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2020-07-10 13:29:33 +00:00
Brian Osman
d9eb219e80 Add SkCodecImageGenerator::getScaledDimensions
Like SkCodec::getScaledDimensions, but accounts for orientation

Change-Id: I53ba682d5b60e46053cf3cc50b7e6430929cfcef
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301581
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2020-07-10 13:16:23 +00:00
Mike Klein
377923e229 pack windows ABI stack tightly
Reserve tight space for saving callee-saved registers,
and skip any stack adjustment if we don't need it (again).

Change-Id: Ieec82c2de8cf23db3ae4057435d4bdb4dd78c791
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301659
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-07-10 13:10:13 +00:00
Mike Reed
f8a6b5b4b0 Impl SkFilterOptions for raster-images
Maintains the old and new code-paths:
- if the shader was made with explicit filteroptions, use those
- if not, infer the filteroptions from the filterquality enum
  (and the legacy heuristics of sniffing/snapping the ctm)

In either case, the bulk of the onProgram() is shared, driving off
the (possibly computed locally) filteroptions.

bench looks sort like we expect:

    509.28  	filteroptions_sampling_0_mipmap_0	8888
    495.76  	filteroptions_sampling_0_mipmap_1	8888
    642.52  	filteroptions_sampling_0_mipmap_2	8888

    942.40  	filteroptions_sampling_1_mipmap_0	8888
    976.94  	filteroptions_sampling_1_mipmap_1	8888
   1686.34  	filteroptions_sampling_1_mipmap_2	8888

Bug: skia:10344
Change-Id: I77a79f79f640986fdd6b14f163c1a03462c55dc0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/297561
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2020-07-10 13:08:33 +00:00
skia-recreate-skps
9f821489c9 Update Go Deps
Change-Id: I4f964c48eb665180856a9d7d6173825613971ffe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301753
Reviewed-by: <skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com>
Commit-Queue: <skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com>
2020-07-10 05:38:22 +00:00
skia-autoroll
bd780c3c52 Roll ANGLE from 58afe4cb7a7b to fe36a64765c5 (5 revisions)
58afe4cb7a..fe36a64765

2020-07-10 cclao@google.com Vulkan: Add driverUniform's buffer to mResourceUseList
2020-07-09 courtneygo@google.com Add support for VK_KHR_sampler_ycbcr_conversion
2020-07-09 syoussefi@chromium.org Vulkan: Warm up glslang on startup
2020-07-09 thakis@chromium.org Don't build vulkan_validation_layers on macOS.
2020-07-09 ianelliott@google.com Vulkan: Rotate damage rects for 90/270 rotation

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 mtklein@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
Bug: chromium:1091440,chromium:1098741
Tbr: mtklein@google.com
Test: Test: Aztec Ruins with VVL
Change-Id: I45b11d58c976f53ac94c732224417f21b22b2c49
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301744
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-07-10 04:50:32 +00:00
skia-autoroll
14e93a866d Roll Chromium from e6974b0e45b1 to 79b4d6eb39c8 (1501 revisions)
e6974b0e45..79b4d6eb39

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 mtklein@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: mtklein@google.com
Change-Id: I090cf117fb118d0f7952b45ad5b456ee7d256f27
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301747
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-07-10 04:46:33 +00:00
skia-autoroll
66e938edf3 Roll dawn from d761d5a5758c to 479689912ee2 (6 revisions)
https://dawn.googlesource.com/dawn.git/+log/d761d5a5758c..479689912ee2

2020-07-09 kainino@chromium.org Reorder minBufferBindingSize to match upstream webgpu.h
2020-07-09 enrico.galli@intel.com D3D12: Empty CPU written range in Unmap calls on READBACK heaps
2020-07-09 tommek@google.com Added validation tests for copying to 2d-array textures
2020-07-09 jiawei.shao@intel.com Implement buffer lazy initialization before CopyBufferToBuffer
2020-07-09 cwallez@chromium.org Remove usage of the UNIT_TEST macro.
2020-07-09 cwallez@chromium.org Don't rely on null::Queue::Submit resolving mapping operations.

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 cwallez@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: cwallez@google.com
Change-Id: Ia6d3abd2ee7d1d59ef57523c0bd903efd042e0c5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301745
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-07-10 04:40:52 +00:00
skia-autoroll
4d48bb3597 Roll SwiftShader from 76cae97fc14c to 6cd27bab06f4 (2 revisions)
https://swiftshader.googlesource.com/SwiftShader.git/+log/76cae97fc14c..6cd27bab06f4

2020-07-09 capn@google.com Remove unsupported formats
2020-07-09 sdefresne@chromium.org Convert GN libs lists to frameworks

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 mtklein@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: mtklein@google.com
Change-Id: I14d4916a743c0085e09d911e917cd614cea069a9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301746
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-07-10 04:39:52 +00:00
Brian Osman
89d33d0a25 Remove GrCCFillGeometryBench
Not important, and the constructors for these six benchmarks were
allocating a total of 3 GB of RAM.

Change-Id: I03db4d21fe9755902e1b642eb2b6315f697b955e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301656
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Chris Dalton <csmartdalton@google.com>
2020-07-09 21:31:03 +00:00
Jim Van Verth
d342cc9df1 Add indirect draws to D3D.
Adds GrD3D12CommandSignature, needed to pass to ExecuteIndirect().

Change-Id: I24aa395d710414eba0464aa4e2cb0a87721bcb12
Bug: skia:10482
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301378
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2020-07-09 21:21:12 +00:00
Chris Dalton
e29f9e2187 Reland "Make glPatchParameteri required when tessellation is supported"
This is a reland of 7d7cd2b178

Original change's description:
> Make glPatchParameteri required when tessellation is supported
> 
> Chrome started wrangling this entrypoint in the following CL:
> 
> https://chromium-review.googlesource.com/c/chromium/src/+/2253344
> 
> Change-Id: Ief4dfb1ddca8d86e0c09dfdc443e01830cb4de20
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298405
> Reviewed-by: Kevin Lubick <kjlubick@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>

Change-Id: I4d37973892c589d7fcffc1baf3285aa3ad97a21d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300922
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2020-07-09 21:16:35 +00:00
Chris Dalton
1413d11eaa Check sk_VertexID support for GrTessellationPathRenderer
This functionality was being used but we forgot to check for it.

Bug: skia:10419
Change-Id: If74d7b58de5b9e902798e0d9834beaf2ad7f752b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301544
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2020-07-09 20:59:03 +00:00
John Stiles
d4eb2ec5df Update SkPaintToGrPaint to perform clamping via child FPs.
Previously, clamping would be a separate child processor on the GrPaint.
This CL consolidates all GrPaint-related color processors into a single
call to grPaint->addColorFragmentProcessor.

Change-Id: If726a1d216d55cb2d07cff92a7c4e7e2a873322d
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301020
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2020-07-09 20:57:52 +00:00
Adlai Holler
3d0359a318 Migrate GrGpu to GrDirectContext
Another piece of the Great Recontexting.

Change-Id: Ib089dbdba89e25add407cf816d28c96c7e5dbc05
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301303
Commit-Queue: Adlai Holler <adlai@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2020-07-09 20:11:22 +00:00
John Stiles
53ee0fcac7 Convert the dither runtime effect into a regular .fp effect.
This was previously implemented as a runtime effect in order to dogfood
runtime effects when they were new. However, runtime effects do not
support passing a color to a FP via `sample(fp, inputColor)`, which
is needed to properly implement SkPaintToGrPaint.

Change-Id: Ic826860ab06038f13633be677d79a9138d41db85
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301547
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2020-07-09 20:05:22 +00:00
John Stiles
ae34bc492c Fix half-precision mod signature to be half(half, half).
Previously due to a typo it was half(half, float).

Change-Id: I2b9deeb50a4d20348f3bf949e0d5b01847d653c0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301576
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2020-07-09 19:54:32 +00:00
Brian Salomon
15edc1806a Remove unncessary code from filtered clamp-to-border.
Code relevant to repeat mode was being inserted for filtered
clamp-to-border but not used.

Change-Id: I431d876459cc29b28fcc6599c20da482ffc2582e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301551
Auto-Submit: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2020-07-09 19:43:32 +00:00
Greg Daniel
bc486b8d59 Fix vulkan extensions in test setup.
At least locally after an Nvidia driver update I am seeing both of the
buffer address extensions reported by the driver. It is illegal in
vulkan to enable both of them on the device, so we remove the EXT
version if we have both.

Change-Id: I7b3046c5fd27ba071ce9e1c58c478eaf4d2a82b4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301553
Commit-Queue: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Auto-Submit: Greg Daniel <egdaniel@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2020-07-09 19:37:00 +00:00
Herb Derby
60a4986d4c Remove GrTextTarget and GrRenderTargetContext::TextTarget
Change-Id: I501f2fc365c0d2f2faff6ffaf4ad09635e4c3cdf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301452
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2020-07-09 19:34:20 +00:00
Ben Wagner
fcfd0af9fd Notify when SkFontMetrics bounds are bogus.
OpenType and many other font formats have the concept of pre-computed
metrics for the union of all glyph bounding boxes. This allows for fast
though course quick rejecting of bounds, since the glyphs themselves may
potentially be quite a bit larger than the EM. With the introduction of
variable fonts OpenType does not vary these bounds, so the bounds are
only valid for the default non-varied font.

As a result the fTop, fBottom, fXMax, and fXMin reported in
SkFontMetrics may be bogus. Since simply always setting them to empty
zeros may be disruptive, provide a way forward for new users to check if
the bounds are valid.

This exposed an issue where SkTextBlobBuilder::TightRunBounds does not
handle SkTextBlob::kRSXform_Positioning, so add a test for that.

Change-Id: I872729e0f16e2a196229f9902addf4b07b461590
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301455
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2020-07-09 19:26:40 +00:00
Ben Wagner
6c1c53843d Handle kRSXform_Positioning in TightRunBounds.
The normal code path is to call ConservativeRunBounds, but if it runs
into issues it will call TightRunBounds. ConservativeRunBounds properly
handles RSXform positioning, but TightRunBounds does not. Handle RSXform
in TightRunBounds.

Change-Id: Ic024fe3e0784acb818ba4714d9042e313f9fdbfa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301454
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Ben Wagner <bungeman@google.com>
2020-07-09 19:26:10 +00:00
Jorge Betancourt
cb41a4bf74 turn skottie view into a view group so we can swap out TextureView and SurfaceView
Change-Id: Iec87cf169c7d013e6727df8a9343b64b9d64243e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300621
Reviewed-by: Stan Iliev <stani@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
2020-07-09 19:19:30 +00:00
Brian Salomon
87f4d291bb Remove GrFragmentProcessor::Iter.
We only ever use CIter.

Change-Id: Ifb0ca12931f583173379c90429ec9c8ead7bdd5b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301385
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2020-07-09 18:57:06 +00:00
Robert Phillips
30ebcf730c Remove SkCanvas::getGrContext calls from samplecode
More busywork so we can deprecate getGrContext.

Change-Id: I8479985334881251e6ad814d7855681df716b1da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301542
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2020-07-09 18:37:02 +00:00
skia-recreate-skps
5ca99b4402 Update Go Deps
Change-Id: Ibed9d7e9e7d9de230443ca701fc79692f8831b3a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301561
Reviewed-by: <skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com>
Commit-Queue: <skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com>
2020-07-09 18:24:00 +00:00
Mike Klein
b94d24912f feed forward registers used by jit()
Since we make two jit() passes anyway (mainly for allocation size, with
stack size hinting along for the ride) we might as well feed forward
another hint, which registers we'll use in the program.

We can use this information when targeting the Windows ABI to save only
the callee-saved registers that we actually use.  ARM will benefit too.

The first jit() call always saves all callee-saved registers , making
its code size a conservative estimate for the second jit() that saves
only what's needed.

This leaves some dead stack space reserved for unused registers,
but since it's O(1) and relatively small I don't really care.
I think it's an easy follow-up to tighten it up.

Change-Id: I41e71e6b2baba9c0b60ffdc303c138a54ff50dab
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301534
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2020-07-09 18:18:40 +00:00
Brian Salomon
d90b3d3133 Remove generic GrFragmentProcessor texture sampling.
Instead GrTextureEffect is a special effect known by
program builders, pipeline states, etc.

Change-Id: I4436d7a10a1c3174fe1f02f136363a1c117f92fb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301357
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2020-07-09 17:34:20 +00:00
Mike Klein
cd79c4713d tidy up win ABI enter/exit
I've been working on only saving the callee-saved xmm registers we
actually use, and been failing a lot at it, but I think I finally
understand why and have an new approach brewing.

While I get my new approach going, this CL just salvages some of the
enter/exit refactoring from my failed attempts.

It's mostly streamlined comments.  In terms of behavior it switches to
adjusting the stack pointer just once at enter and once at exit, instead
of up to twice each.  This is really just finesse, and not something I'd
expect we'd ever notice.

Change-Id: I701b4c38c797d8f7cf25c84a5dfd201fc73b1f8d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301530
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-07-09 17:24:40 +00:00
Herb Derby
04c8f25317 move insertSubRunOpsIntoTarget into GrRenderTargetContext
Change-Id: I1ba96ac0951aa89a076b9ad1383b5ae172e4266f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301382
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2020-07-09 17:20:30 +00:00
John Stiles
9e8f484499 Rename 'analytic FPs' to 'analytic elements' throughout the clip system.
Our intent is to report the number of analytic clips that have been
added; the number of fragment processors involved is an implementation
detail. (Hypothetically, an analytic clip might be represented by more
than one FP.)

Change-Id: I17484d7a69cc68b06bbbf87cb1e6fb38d5b2fb5e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301453
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2020-07-09 16:54:50 +00:00
Michael Ludwig
362245e6ed Remove unused GrTRecorder
Change-Id: I9fa9f8785f48e884cf296a638347003d1687e7c0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301536
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-07-09 16:13:20 +00:00
Jim Van Verth
8e434ae49f Fix GrMeshTest for Direct3D.
We were assuming that there was always a vertex buffer. However,
when doing instanced draws, there's not necessarily one.

Change-Id: I870aa039b5cc552dce2644f40b933de1f62ad80b
Bug: skia:9935
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301449
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2020-07-09 15:38:33 +00:00
John Stiles
c269c2dc4d Clear analytic FPs and clip paths in GrReducedClip::makeEmpty.
Change-Id: I680cd7278d1cc0e3378991e6692098e5ce9e3efd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301447
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2020-07-09 15:28:43 +00:00
John Stiles
c34c6bc09b Count analytic FPs directly.
This may address a memory regression detected by Pinpoint, and is
conceptually more correct. If an analytic FP happened to be implemented
in terms of multiple FPs, naively counting all the child FPs wouldn't
give the right result.

Change-Id: Ia9b76f765db832f063f2730c820ebcdea3f7edb8
Bug: chromium:1097538, chromium:1102804
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301444
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2020-07-09 15:21:23 +00:00
Julia Lavrova
196515cbd7 Line metrics: correct text width
Bug: skia:10439
Change-Id: Ic9ac1b5305fb785aceb12eab9c24d488001a91c7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301377
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
2020-07-09 15:03:02 +00:00
Brian Osman
24b8a8cd1a Switch back to mallinfo in SkSL memory benchmark
Early results from measuring RSS (via /proc or similar) shows results
that aren't very accurate or stable. From previous detailed testing, I
know that mallinfo gives a good answer. We only really need results
from ~one machine, so limiting to UNIX bots isn't a big deal.

Change-Id: I73af043720b1204e1da436e2e63b19766a97a9a2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301445
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2020-07-09 14:42:02 +00:00
Brian Salomon
61a70fb1ec Add GrGLSLFP::ParallelRange to iterate FP and GLSLFP trees
Bug: skia:10139

Change-Id: I379249758160ad096c9e03f25a41b00bc1987518
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301384
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2020-07-09 14:10:32 +00:00
Robert Phillips
dadc0819e9 Add missing recordingContext override to SkPaintFilterCanvas
This should fix the gpu-specific slides in Viewer.

Change-Id: I3ff069005bfe3639eb9608223b13c64f4c28c396
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301441
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2020-07-09 13:35:52 +00:00
Jim Van Verth
1bef9793e9 Remove uses of non-inclusive terminology from Ganesh code.
Change-Id: Ice75d0caa7b4beb2d982be094d62b54e71b45045
Bug: chromium:1101491
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301456
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2020-07-09 13:33:02 +00:00
Robert Phillips
16bf7d31c8 Make SkGpuDevice hold a GrRecordingContext (take 2)
This makes the code reflect what is actually going on. During DDL
recording the SkGpuDevice only holds a recording context.

This can't land until the following Chrome-side CL lands:

https://chromium-review.googlesource.com/c/chromium/src/+/2277964 (Add GrContext.h include to skia renderer for upcoming Skia roll)

Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299867
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Adlai Holler <adlai@google.com>
Change-Id: I6ef3896f5a270a4fa7af37f9121f68a66653cce2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300896
2020-07-09 12:28:22 +00:00
skia-autoroll
112a716dde Roll SwiftShader from 28159ee9c8e3 to 76cae97fc14c (5 revisions)
https://swiftshader.googlesource.com/SwiftShader.git/+log/28159ee9c8e3..76cae97fc14c

2020-07-08 amaiorano@google.com Update llvm 10 Darwin config
2020-07-08 amaiorano@google.com Update llvm 10 Linux config
2020-07-08 amaiorano@google.com Enable Kokoro LLVM 10 builds on Windows
2020-07-08 amaiorano@google.com Add llvm-10 configs for Windows
2020-07-08 amaiorano@google.com Copy and modify update.py for LLVM 10

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 mtklein@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: mtklein@google.com
Change-Id: Ide37a203f70b50b69cc0514f9e42f3519d475ea9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301426
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-07-09 04:42:52 +00:00
skia-autoroll
241134004f Roll ANGLE from 3688cb363ccd to 58afe4cb7a7b (11 revisions)
3688cb363c..58afe4cb7a

2020-07-09 jiajie.hu@intel.com Remove angle_libjpeg_turbo_dir fallback after Chromium side fix
2020-07-08 cnorthrop@google.com Capture/Replay: Fix default uniform array capture
2020-07-08 nguyenmh@google.com Serialize d/s buffers + use color buffers' impl format for readPixels
2020-07-08 jonahr@google.com Skip MultithreadingTest.MultiCreateContext on Ozone
2020-07-08 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Vulkan-Headers from db06fce926b0 to 2a164e9680a5 (3 revisions)
2020-07-08 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Vulkan-ValidationLayers from e8b96e86fe2e to 3bae90706d26 (2 revisions)
2020-07-08 angle-autoroll@skia-public.iam.gserviceaccount.com Roll glslang from f5ed7a69d5d6 to 29c9135d06f1 (3 revisions)
2020-07-08 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Vulkan-Tools from abc9dff824c3 to 68bfbc219497 (1 revision)
2020-07-08 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from f6f11215cd93 to 28159ee9c8e3 (1 revision)
2020-07-08 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SPIRV-Tools from 6a4da9da4215 to 7afbc0c8be3f (3 revisions)
2020-07-08 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Vulkan-Loader from 4c6019a855e9 to 145050bf2b98 (3 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 mtklein@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
Bug: chromium:1103009
Tbr: mtklein@google.com
Test: Test: MEC of NBA2K20
Change-Id: I716524318c4f1907735baea02877868eeae3c91c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301425
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2020-07-09 04:41:02 +00:00