Commit Graph

58206 Commits

Author SHA1 Message Date
Chris Dalton
1ce70dc2ce Convert StrokeTessellators to use PatchWriter
Bug: skia:12524
Change-Id: I99ade4b9f4fd442d9ddaa51651faf47321c06a5b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474296
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2021-11-20 01:57:42 +00:00
John Stiles
fb0fa24e31 Remove VarType from trace_var opcode.
This is redundant information now that we have SkVMSlotInfo.

Change-Id: Ia05b1eaa722023e719042c83255708aa9debed61
Bug: skia:12614
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473777
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-11-20 01:52:40 +00:00
Erik Rose
9b35cd642f [infra] Update iOS provisioning profile.
* Remove 3 iPad Pro 9.7"s killed in the March 2020 Skolo flood.
* Add skia-iphone-8-03, which was mysteriously missing.

Change-Id: Idf3bbc553958a1327b0909183f85ab43dced3429
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474020
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
Commit-Queue: Erik Rose <erikrose@google.com>
2021-11-19 20:45:39 +00:00
Chris Dalton
bdf4952a3d Extract a PatchWriter::Patch base class
Bug: skia:12524
Change-Id: I48bd7dabb7d169f3ac544f2b7a2e2a68f4b01e1b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474158
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2021-11-19 19:52:34 +00:00
Brian Osman
f72c919a9a Roll SPIRV-Headers and SPIRV-Tools
This adds new validation rules that we were breaking.
Binding and DescriptorSet can't be applied to push constants, nor to
struct members.

Bug: skia:12670
Bug: chromium:1270328
Change-Id: I332f77717b08d9945c8e5b79c5bf649a8f5f2043
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474056
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2021-11-19 19:22:54 +00:00
Ben Wagner
0cdcf57f8c Cache FreeType glyph masks may need current color.
If a FreeType font has glyphs which may need the current color this is
non-changing information, so calculate it once at and cache it. This
information is needed on evert time a scaler context rec is created and
adding the overhead of looking through the font data (especially the
extra indirections from a ttc) can take a bit of time.

Bug: b/206120675
Change-Id: I92f2083a6bbd673fc148347c4e04ed81a441c3ba
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474059
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2021-11-19 18:50:47 +00:00
Michael Ludwig
940086c815 [graphite] Include offset in Writers returned by DrawBufferManager
Previously, while BindBufferInfo had the right offset for binding the
buffers, the writer would always overwrite the contents at the
beginning. Never encountered it because the CommandBufferTest made its
VertexWriters directly, and DrawPass isn't end-to-end yet.

Bug: skia:12466
Change-Id: Ib874006d80a7286fcc3710cd38b3c6141ff928ef
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474057
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2021-11-19 17:57:52 +00:00
Herb Derby
fde5b838e8 refactor checking for direct glyph situations
Update the check for situations using the direct glyph drawing
method. Mostly renaming.

Change-Id: I9e2ad8b669e9868b5fffd4864fb4551fec11f19c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474038
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2021-11-19 17:19:44 +00:00
Jim Van Verth
3b0eacc6ea Add SkSL::ShaderCaps and use as base class for GrShaderCaps
Bug: skia:12559
Change-Id: I76b225c9ca81264a15869324007d774d210053b5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473416
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
2021-11-19 16:35:39 +00:00
Leon Scroggins III
63dee7ef06 Add minimal GL support for protected backend textures
Bug: b/205516620

Internally, Skia does not have full GL support for protected backend
textures. But there are some clients who know that they need to create
one so that they can render a protected buffer into it. Plumb in support
for clients calling GrDirectContext::createBackendTexture.

GrGLDefines.h:
- Add macros for querying whether a context is protected

GrGLCaps:
- Check whether the GL_EXT_protected_textures extension is present and
the context supports protected.

GrGLGpu:
- Remove failure cases for GrProtected::kYes. Instead, pass the value
down to createTexture where we then set the parameter in GL.

Change-Id: I465442fc4b19ed32a65079a168124a067bcd66a6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472802
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2021-11-19 16:08:16 +00:00
skia-autoroll
15ae48da5f Roll SwiftShader from 4c687cc2f8ea to f5cf2d08ff9c (2 revisions)
https://swiftshader.googlesource.com/SwiftShader.git/+log/4c687cc2f8ea..f5cf2d08ff9c

2021-11-18 swiftshader.regress@gmail.com Regres: Update test lists @ 4c687cc2
2021-11-18 ari.suonpaa@siru.fi Fix border color when sampling normalized texture formats

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

To file a bug in SwiftShader: https://bugs.chromium.org/p/swiftshader/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

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/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Test-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader
Bug: None
Tbr: jlavrova@google.com
Change-Id: I2ce5caeb818d2188d7f4edc25dea8c235fb7183c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473956
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-11-19 05:14:38 +00:00
skia-autoroll
cf48622d66 Roll Chromium from ca9862fcfe55 to e7ac7694e638 (463 revisions)
ca9862fcfe..e7ac7694e6

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

To file a bug in Chromium: https://bugs.chromium.org/p/chromium/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

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/main/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: jlavrova@google.com
Change-Id: I4315a1c8d9a949b6d5ff042597fda276038fd905
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473959
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-11-19 04:59:12 +00:00
skia-autoroll
f91b6a83f1 Roll Dawn from 67e1e9c199cc to 53db01bf1e64 (5 revisions)
https://dawn.googlesource.com/dawn.git/+log/67e1e9c199cc..53db01bf1e64

2021-11-18 cwallez@chromium.org dawn.json changes for the upstream webgpu.h optional features
2021-11-18 shrekshao@google.com Pipeline overridable constants: D3D12 backend
2021-11-18 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 71bffb8af87f to 8700d9ccb795 (5 revisions)
2021-11-18 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll Tint from d018d2e5bca1 to 1704fe53f59a (1 revision)
2021-11-18 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 9a36c3b6f124 to 71bffb8af87f (1 revision)

Also rolling transitive DEPS:
  https://dawn.googlesource.com/tint from d018d2e5bca1 to 1704fe53f59a

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

To file a bug in Dawn: https://bugs.chromium.org/p/dawn/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

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/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Debug-Dawn
Bug: None
Tbr: bajones@google.com
Change-Id: Iffc32d635be28b9fff8aa1395af5556c0cd587ef
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473957
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-11-19 04:53:12 +00:00
Brian Osman
62392f624f Remove old (unused) values from LayoutToken enum
Change-Id: Idcedaf97d9036fc892bbfc4fa7be468dd7a11db9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473660
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
2021-11-18 22:35:09 +00:00
John Stiles
217347528b Improve redundant trace_var elimination.
Previously, we would avoid emitting redundant trace_vars by checking to
see if the slot is being assigned to the exact same Var.ID. However,
this had the potential to eliminate useful trace_vars:

- At the start of execution, slots all contain 0. Code which explicitly
  assigned a zero into a slot would not be shown in a trace. (So things
  like `color = half4(0,1,0,1)` would only emit traces for color.ga.)
- A function call's parameter slots are reused every time it is called,
  so calling a function twice would only emit traces for the parameters
  that aren't the same Val.ID as the previous call.
- A VarDeclaration inside a loop reuses its slot each time through the
  loop, even though conceptually it's a "new" variable.

We now track a slot's "written-to" status. At the start of execution,
no slots have been "written-to". These slots will always emit a
trace_var opcode (fixing the first issue). Also, issuing a function
call or declaring a variable will reset the "written-to" status of the
associated slots (fixing the second and third issues).

When the debugger is not in use, the written-to field is unused.

Change-Id: I482a86cb6e90d0f85dd2a161e984f212782a7b4d
Bug: skia:12614
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473776
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-11-18 22:18:42 +00:00
Brian Salomon
90ef83af20 Remove drawPatch/Vertices helpers that don't take SkBlendMode
Bug: skia:12662
Change-Id: Ic18220668a4f87e7340a53b3f191887a7a016a04
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473141
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2021-11-18 21:57:32 +00:00
Robert Phillips
c9d8f293d0 Improve handling of degenerate paths in AAHairLinePathRenderer::bloat_quad
Bug: 1265199
Change-Id: I217d75377c33940cdbabba278ee1ac06e94e177f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/469899
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2021-11-18 21:37:37 +00:00
Dominik Röttsches
2ed0baeb60 Fall back to type 3 embedding for fonts with COLR table
Bug: skia:12650
Change-Id: Id6cdc3c5f22aa1dffae00a98f1cb832d30b61cd4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/471476
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2021-11-18 21:28:14 +00:00
John Stiles
c809e5ba9f Optimize commutative operations in SkVM.
We now canonicalize commutative operations by ordering their value IDs.
The lower-numbered value ID is always placed first into a commutative
instruction. In other words, this instruction:
   bit_and result, v7, v5

Would be silently converted to this:
   bit_and result, v5, v7

This will allow these two logically-equivalent instructions to be
deduplicated:
   bit_and result, v7, v5
   bit_and result, v5, v7

Of course, deduplicating these ops can unlock additional free CSE/DCE.
The affected instructions are listed in http://review.skia.org/473238

Change-Id: Ib9beb79d6b72d7903184aaa9a53e8e5a02ae126d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473239
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2021-11-18 21:27:17 +00:00
John Stiles
626dbe195a Add test for commutative operations in SkVM.
SkVM should be able to optimize away these equivalent expressions:

	(intA & intB)   <->  (intB & intA)
	(intA ^ intB)   <->  (intB ^ intA)
	(intA | intB)   <->  (intB | intA)
	(intA + intB)   <->  (intB + intA)
	(intA * intB)   <->  (intB * intA)
	(intA == intB)  <->  (intB == intA)
	(intA != intB)  <->  (intB != intA)

These should be guaranteed by IEEE754 as well:

	(floatA + floatB)   <->  (floatB + floatA)
	(floatA * floatB)   <->  (floatB * floatA)

I've added a test to demonstrate existing behavior, which leaves these
optimizations on the table.

Change-Id: I01ce1d6f1cfadb3d77db405a83752c9dd52c99bd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473238
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-11-18 21:16:48 +00:00
Herb Derby
dd7540fccb make drawMatrix use more explicit
Make the code more consistent with:
* drawMatrix - CTM from canvas
* drawOrigin - x, y from drawTextBlob
* positionMatrix drawMatrix adjusted by drawOrigin

Change-Id: Ia22baa2d229f041b77dc6cde063e25f185b8b64a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473237
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2021-11-18 20:57:32 +00:00
Robert Phillips
c9825ac717 Allow the Triangulator to fail
Bug: 1262444
Change-Id: I951c1809c031c1c8e71d8c3ce1be3506bbfa3d2c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/469904
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2021-11-18 20:48:21 +00:00
skia-autoroll
e85fd50ebe Roll SK Tool from 8e6bab5320de to 4f4d765e4e51
https://skia.googlesource.com/buildbot.git/+log/8e6bab5320de..4f4d765e4e51

2021-11-18 borenet@google.com [autoroll] Add Docker image to config file

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/sk-tool-skia
Please CC rmistry@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

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/main/autoroll/README.md

Tbr: rmistry@google.com
Change-Id: I70a108058347a9d5caf1c9021727900b8cb07937
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473445
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-11-18 20:30:41 +00:00
Brian Osman
45bc991e5d Reland "Remove layer-coverage-tracking experiment"
This is a reland of 688cb15faa

Original change's description:
> Remove layer-coverage-tracking experiment
>
> This effectively reverts reviews.skia.org/122000
>
> Bug: skia:10987
> Change-Id: I989241110f17c0e3c2a896aea4bc2bc4cc8c910f
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472801
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>

Bug: skia:10987
Change-Id: I16493df8bd7942261d14c01747d0fdc91bbe5467
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473143
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-11-18 19:34:39 +00:00
Kevin Lubick
f3726c61d2 [infra] Use Bazel transitions to allow cc_binary to set their own flags
This will hopefully let us pre-package certain binaries (e.g. DM,
fuzz) with more sensible defaults and not make the developer
type out all the settings.

For CanvasKit, which specifies its own build flags, I think I'll
need to make another transition setup, which would go in something
like modules/canvaskit/ck_binary_with_flags.bzl or something.

Some sausage-case-names were converted to snake_case_names as per
go/build-style#target-naming

The example this is based off is worth a look through before
diving into this:
https://github.com/bazelbuild/examples/tree/main/rules/starlark_configurations/cc_binary_selectable_copts


Change-Id: Ia919d47f4d1aa25cf294af7918e36d38838c179e
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472688
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
2021-11-18 19:18:54 +00:00
skia-android-ingest
a526199541 Use canary task driver from buildbot repo
Bug: skia:12657
Change-Id: I432dc004ac2c8a1f9b0fd0874b8690dcb7e16dbf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473146
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
2021-11-18 17:45:54 +00:00
skia-android-ingest
92573612d8 Update go/skia.org/infra in go.mod/go.sum
To pick up canary.go task driver change in buildbot repo

Updated with:
$ go get go.skia.org/infra@74751ee0f1
$ go mod download
$ make -C infra/bots train

Bug: skia:12657
Change-Id: I3f42dd6a8041d2c84903e736e76029c198c811f7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473144
Reviewed-by: Eric Boren <borenet@google.com>
2021-11-18 17:45:54 +00:00
Brian Osman
1c3b75bf35 Zero-initialize uniform data in SkRuntimeEffectBuilder
Change-Id: Id7445c28fca3a74cb2716832e821d651be7bb883
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473142
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-11-18 17:15:07 +00:00
John Stiles
acec7450ec Add unit test for TraceHooks on compiled SkSL.
This verifies that compiled SkSL code generates a reasonable trace.

Change-Id: Ia81a694460eaac261dfb9287b64f0afec013f76c
Bug: skia:12614
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473145
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2021-11-18 17:10:19 +00:00
John Stiles
a97bd9d4b2 Add TraceHook support to skvm interpreter.
This provides a callback mechanism for the interpreter when a trace
opcode is encountered. The callbacks are only invoked when the trace
mask is enabled.

Change-Id: I55db22e18106ae09e4ab0a503533d830282c772c
Bug: skia:12614
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473139
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-11-18 17:10:19 +00:00
Chris Dalton
c7a849319f Make path pre-chopping more robust
Exceptionally large control points might require us to chop the path
very deeply. This CL converts the recursive chopping to loop with a
stack of control points on the heap, in order to avoid the risk of
stack overflow. It also adds a bail condition to avoid getting stuck
in endless recursion due to fp32 precision issues.

Bug: chromium:1266446
Change-Id: I005be4bc29de51d3c89f04b5d6c553a921a92aa3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473197
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2021-11-18 16:42:19 +00:00
Chris Dalton
32071c3f14 Don't draw massively wide strokes with the tessellator
Since we outset the viewport by stroke width for pre-chopping,
astronomically wide strokes can result in an astronomical viewport
size, and therefore an exponential explosion chops and memory usage.
It is also simply inefficient to tessellate these strokes due to the
number of radial edges required. We're better off just converting them
to a path after a certain point

Bug: chromium:1266446
Change-Id: I23ea39b0bd64f22d4e293a881992e3669afbe530
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473196
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2021-11-18 16:39:43 +00:00
Jim Van Verth
d8a753a263 Move GLSLGeneration definition to SkSL
This is a first step in making GrShaderCaps more general so we can use
it in Graphite.

Change-Id: I7fc874e5df8dba2cef05421840a4019e5499ab59
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473000
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2021-11-18 15:12:00 +00:00
Brian Osman
8d55cab6bd Revert "Remove layer-coverage-tracking experiment"
This reverts commit 688cb15faa.

Reason for revert: Android roll & CK bots

Original change's description:
> Remove layer-coverage-tracking experiment
>
> This effectively reverts reviews.skia.org/122000
>
> Bug: skia:10987
> Change-Id: I989241110f17c0e3c2a896aea4bc2bc4cc8c910f
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472801
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>

Bug: skia:10987
Change-Id: Id2becfff07e4d9d72231939fb415a34ff9d96ed8
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473140
Auto-Submit: Brian Osman <brianosman@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
2021-11-18 14:30:11 +00:00
John Stiles
109f7ee60b Assign unique per-pixel device coordinates in SkVM instead of all-zero.
If the device coordinates are constant across every lane, debug traces
can't generate reasonable results. If nothing actually uses the device
coordinates, the extra opcodes should DCE away.

Change-Id: Ic08a490a692e9c0bdd94f351193bc590d6540ded
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473136
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-11-18 14:08:17 +00:00
skia-autoroll
0774db13d2 Roll SwiftShader from e068963d1dcf to 4c687cc2f8ea (2 revisions)
https://swiftshader.googlesource.com/SwiftShader.git/+log/e068963d1dcf..4c687cc2f8ea

2021-11-18 srisser@google.com Regres fetches HEAD and truncates deqp.json
2021-11-17 swiftshader.regress@gmail.com Regres: Update test lists @ e068963d

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

To file a bug in SwiftShader: https://bugs.chromium.org/p/swiftshader/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

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/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Test-Debian10-Clang-GCE-GPU-SwiftShader-x86_64-Debug-All-SwiftShader
Bug: None
Tbr: jlavrova@google.com
Change-Id: I4f754558918981eb93f1eaa83a5f67c573a6c5b7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473159
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-11-18 05:18:07 +00:00
John Stiles
e4692de674 Force the SkVM interpreter if trace opcodes are encountered.
Trace opcodes will only be implemented in the interpreter. If we
encounter one while JITting a program, returning false will cause
execution to fall back to the interpreter automatically.

Change-Id: I94fce376cb7336c16072a174604de025f1b4e38a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473137
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2021-11-18 04:50:37 +00:00
John Stiles
c5b90df0be Move SkDebugfStream into SkStreamPriv.
This was buried inside SkVM, but can be useful in other contexts as
well.

Change-Id: If5b7dbca24b5c3fb8d4a4f136421c9ddb2f005d8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473138
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2021-11-18 04:49:28 +00:00
skia-autoroll
d502618df3 Roll Chromium from e6803bcb1fd5 to ca9862fcfe55 (500 revisions)
e6803bcb1f..ca9862fcfe

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

To file a bug in Chromium: https://bugs.chromium.org/p/chromium/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

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/main/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: jlavrova@google.com
Change-Id: I4683f35255a588e43398e16cefdcea658f2db241
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473156
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-11-18 04:42:44 +00:00
skia-autoroll
3e13936476 Roll Dawn from 8ce15b3ce97e to 67e1e9c199cc (7 revisions)
https://dawn.googlesource.com/dawn.git/+log/8ce15b3ce97e..67e1e9c199cc

2021-11-18 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from e9f9fa17daa6 to 9a36c3b6f124 (2 revisions)
2021-11-17 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll Tint from 04e62a12d835 to d018d2e5bca1 (10 revisions)
2021-11-17 bajones@chromium.org Suppress indirect compute Tests on Win/Nvidia
2021-11-17 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from de5a290df9c4 to e9f9fa17daa6 (10 revisions)
2021-11-17 dawn-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from b9c0194c4e1e to de5a290df9c4 (1 revision)
2021-11-17 cwallez@chromium.org dawn.json changes for the upstream webgpu.h
2021-11-17 jiawei.shao@intel.com D3D12: Support [[num_workgroups]] for DispatchIndirect

Also rolling transitive DEPS:
  https://dawn.googlesource.com/tint from 04e62a12d835 to d018d2e5bca1

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

To file a bug in Dawn: https://bugs.chromium.org/p/dawn/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry

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/main/autoroll/README.md

Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Debug-Dawn
Bug: None
Tbr: bajones@google.com
Change-Id: I40fcaddbe83b3447e9760d9ca1f1591584307af1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473158
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2021-11-18 04:37:48 +00:00
Brian Osman
688cb15faa Remove layer-coverage-tracking experiment
This effectively reverts reviews.skia.org/122000

Bug: skia:10987
Change-Id: I989241110f17c0e3c2a896aea4bc2bc4cc8c910f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472801
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-11-17 23:29:24 +00:00
John Stiles
54b7bd33a1 Add SkVMDebugInfo::setSource.
This associates the input SkSL source with our debug info. It is
serialized out to .trace files. This will actually let us display the
code associated with `trace_line`.

Bug: skia:12614
Change-Id: I6c10af6fa6dd97ed8411f3460e103f442722b7f6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472999
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-11-17 22:01:22 +00:00
John Stiles
2fb8dac598 Add trace coordinates to SkVMDebugInfo.
The SkVMDebugInfo now includes an skvm::Coord that the caller is
responsible for filling in before converting the program. If it is set,
the value indicates the device coordinates that should be traced. If it
is unset, debug traces will not be emitted at all.

Within the SkVMCodeGenerator, we now have a new traceMask() call which
combines the current execution mask with the trace mask. Tracing opcodes
now pass the result of traceMask() instead of mask(). This will limit
trace data to the selected pixel, instead of tracing the entire draw.

Bug: skia:12614
Change-Id: I1f8ce7d18a31aa60a139a4a7335c2a285d6aee60
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472798
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-11-17 21:56:42 +00:00
John Stiles
875447b871 Add SkVMFunctionInfo to debugger data.
We no longer indicate functions by their line number, which can be
ambiguous. The debug info now includes a list of function names which we
can refer to by index, and the `trace_call` opcode references functions
by their index in this list.

Change-Id: I4bdf2a6439637a07b116831fd2981f342c19ea4a
Bug: skia:12614
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472796
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2021-11-17 21:56:13 +00:00
Brian Osman
ddbe115d27 Treat all alpha-only images equally
We were inconsistent about special treatment for kAlpha_8 vs. other
alpha-only color types (other code paths were already adjusted).
Hopefully, we can remove this special behavior entirely, but as long
as we have this code, let's be somewhat principled.

Change-Id: I373a3c5e8c917d911b55b265631ca964c780a31d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472996
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-11-17 20:47:39 +00:00
Brian Osman
f1660bf1ba In the CPU backend, stop treating alpha images as coverage
This makes behavior (more) consistent with the GPU. In particular, the
alpha_image GM now looks roughly identical (it was very different
before).

Bug: skia:9692
Change-Id: I405375760ffe90577f863fa2d8eb9d2fc0f6edf8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472799
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-11-17 19:23:09 +00:00
Greg Daniel
6d1d2c0898 [graphite] Support wrapped Textures in the backends.
Bug: skia:12633
Change-Id: I3e4542e560a2c876b4b35bf340bdb949c4922c65
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472556
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2021-11-17 16:56:04 +00:00
Brian Salomon
30970525fd At SkDevice level and below use SkBlender instead of SkBlendMode
Draws that take a primitive with colors (vertices, patch, atlas) allow
the user to specify how the primitive color is blended with SkShader.

At the public level the blend is specified as SkBlendMode. This change
moves the implementation at SkDevice level over to SkBlender.

Future changes to the existing APIs or future APIs could allow clients
to specify SkBlenders instead of SkBlendMode. THis would would allow for
programmable blending between shader and primitive color.

SkShader_Blend now recognizes if it was constructed with a Mode blender
and extracts the mode enum.

SkBlender_Base::asFragmentProcessor no longer assumes that the dstFP's
input color should be args.fDestColor. Instead the caller
must configure that if desired. (We don't want this for drawAtlas, etc).

Change-Id: I44085da4ec9f4873428f38d629565f7f42c6be91
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/470458
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2021-11-17 16:53:28 +00:00
John Stiles
bcd6d4901d Add test for construction of void.
This fails exactly as it should, but we had no test for it.

Change-Id: I0aa3307c444f2c9bc3512ff43b784a56a7c09856
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472449
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-11-17 16:04:35 +00:00
Jorge Betancourt
3868636fb8 discard SkRuntimeEffect builder in SkSLEffect to use lower level API
Change-Id: I20bb5e6463e79bcdd56fd614d9936fdaf65aefcc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/471776
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
Reviewed-by: Florin Malita <fmalita@google.com>
2021-11-17 15:51:38 +00:00