Commit Graph

58831 Commits

Author SHA1 Message Date
John Stiles
d68069019b Fix whitespace when commas are used in a binary-expression.
Previously, any code which emitted a binary expression would always emit
a leading and trailing space. This caused comma expressions to look
goofy: `foo() , bar();` instead of `foo(), bar();`.

Operator::operatorName() now returns the operator token with appropriate
whitespace around it, and tightOperatorName() is a new method which
omits the whitespace. Functions which assemble binary expressions
should now concatenate `x + operatorName() + y` instead of hard-coding
`x + " " + operatorName() + " " + y`. Prefix/postfix expressions should
use `tightOperatorName()` because otherwise negation looks bad (` - 123`
instead of `-123`).

Super low priority, but it was easy to fix.

Change-Id: I3c92832207293a310fb1070b3b5e72455757b0ce
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497776
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2022-01-24 16:21:43 +00:00
Herb Derby
2a24e6554b Revert "redo AtlasTextOp caching"
This reverts commit 3530d4d3c3.

Reason for revert: Use after free: context deleted before ops

Original change's description:
> redo AtlasTextOp caching
>
> The fuzzer ash_unittests is passing GrRecordingContext from thread
> to thread. This means that 120 bytes for a AtlasTextOp bytes are
> leaking on the first thread because the ClearCache is never
> called on that thread.
>
> Move the cache to the GrRecordingContext. Use a thread local to
> store a pointer to the GrRecordingContext so that new and delete can
> find the cache.
>
> Add a field to AtlasTextOp to save the recording context so that it can
> populate the thread local just before delete is called.
>
> Bug: chromium:1265033
>
> Change-Id: I9802910428bf091c534c96d4ce729c3b3445c76b
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497147
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Herb Derby <herb@google.com>

Bug: chromium:1265033
Change-Id: Ia51ad196cf2966225b177f799d477e1f705187c8
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/498616
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2022-01-24 15:59:48 +00:00
Herb Derby
3530d4d3c3 redo AtlasTextOp caching
The fuzzer ash_unittests is passing GrRecordingContext from thread
to thread. This means that 120 bytes for a AtlasTextOp bytes are
leaking on the first thread because the ClearCache is never
called on that thread.

Move the cache to the GrRecordingContext. Use a thread local to
store a pointer to the GrRecordingContext so that new and delete can
find the cache.

Add a field to AtlasTextOp to save the recording context so that it can
populate the thread local just before delete is called.

Bug: chromium:1265033

Change-Id: I9802910428bf091c534c96d4ce729c3b3445c76b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497147
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2022-01-24 15:15:24 +00:00
John Stiles
a2ec871255 Remove unused TK_ARROW token.
This token is not used anywhere in SkSL.

Change-Id: Ied650f222c349664f67239915be83ffd492c847e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/498436
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2022-01-24 14:48:39 +00:00
Michael Ludwig
9c898c54c6 Fix vertex size request in middle-out benchmark
Change-Id: I3dd8ecb7dc3a5f2781ea86e0526360a1fc3361cb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/498277
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2022-01-24 14:36:26 +00:00
John Stiles
ccb4b18161 Add ExpressionArray::clone.
We had four separate expression-array cloning implementations spread
throughout the code. It's now unified as a clone() method directly on
ExpressionArray.

Change-Id: I5b38ceeca36bb2ba5d0f41b3298a8740308f7627
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497744
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2022-01-24 14:25:46 +00:00
John Stiles
ac41603023 Synthesize SPIR-V fake vars with private, user-inaccessible names.
If user code created global variables named `__device_FragCoords` or
`__device_Clockwise`, SPIR-V code generation would fail when trying
to synthesize fake variables with those names. Use private names
instead, beginning with `$device_` instead of `__device_`.

Change-Id: I167aaa6680426f9c5f0c7687b6c72500b246423f
Bug: skia:12855, oss-fuzz:43970
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/498116
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2022-01-24 14:24:16 +00:00
John Stiles
9f681e6df8 Reject $ in variable names for non-builtin code.
These identifiers are reserved for SkSL internal use (and can't be
exposed to GLSL or Metal anyway).

Change-Id: Id554cbf21ed2fb66785e77700ff79424ecdf66db
Bug: skia:12854
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/498036
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2022-01-24 14:17:36 +00:00
John Stiles
54c7b251b5 Disallow the $ character in the middle of identifiers.
In practice, we use a leading $ internally to indicate private types,
but we don't use $ characters anywhere else in identifiers, and we don't
want external users to use $ in their identifiers at all. Now our lexing
rules only permit $ as the leading character of an identifier, and
disallow $ in directives entirely.

(This CL will invalidate oss-fuzz:43970 as generated, but the root cause
of this issue is skia:12855, which will still need to be addressed.)

Change-Id: I0eedc97fa4a447506085c9facfa91307a37e3182
Bug: skia:12854
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/498037
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2022-01-24 14:14:12 +00:00
Sergey Ulanov
b894b0594e Set fInternalFormatForTexImageOrStorage for RGBx8 format
Bug: chromium:1261867, chromium:1269826
Change-Id: Ic1288c77b5f66e93d05ddd54e4ed294e08a9f193
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/498396
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2022-01-24 14:11:33 +00:00
skia-autoroll
67f92df4b0 Roll ANGLE from 2caa9d4fe4f1 to 096c268bd3f4 (17 revisions)
2caa9d4fe4..096c268bd3

2022-01-24 m.maiya@samsung.com Add a few overrides for Samsung
2022-01-24 angle-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from c9b583de6eb8 to 238eaa6f9d25 (8 revisions)
2022-01-22 syoussefi@chromium.org Translator: Make vec/matrix size getters unsigned
2022-01-21 lexa.knyazev@gmail.com Metal: Fix compressed texture initialization and add DXT1 test
2022-01-21 kbr@chromium.org Update Metal/iOS status from "planned" to "in progress".
2022-01-21 m.maiya@samsung.com Vulkan: Remove flush from SyncHelperNativeFence::serverWait
2022-01-21 angle-autoroll@skia-public.iam.gserviceaccount.com Roll VK-GL-CTS from bfede065f419 to 97ceb2222747 (3 revisions)
2022-01-21 m.maiya@samsung.com Account for EGL 1.5 version when dealing with robustness
2022-01-21 ynovikov@chromium.org Add standalone ANGLE Pixel 6 experimental bots
2022-01-21 b.schade@samsung.com Vulkan: Fixed TC shader and gl_PerVertex block interaction
2022-01-21 penghuang@chromium.org Add ANGLE_FORMAT_PRINTF() for catching format errors
2022-01-21 jmadill@chromium.org Add more tests for program pipelines.
2022-01-21 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from 2e74d5dc03df to e823eef17385 (4 revisions)
2022-01-21 angle-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 70b3eb7a5ab4 to c9b583de6eb8 (1 revision)
2022-01-21 lubosz.sarnecki@collabora.com FrameCapture: Keep MEC Setup resources in Reset.
2022-01-21 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from d5bf6f7f9376 to b7f974a39665 (478 revisions)
2022-01-21 lexa.knyazev@gmail.com Hide ES 3.0+ extensions from ES 2.0 clients

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

To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/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-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Tbr: robertphillips@google.com
Test: Test: EGLSyncTest.AndroidNativeFence_*
Change-Id: Iae239fb13ae8f27cc61ca434caee250ee5c6586f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/498357
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2022-01-24 05:25:38 +00:00
skia-autoroll
ba95fb4d30 Roll Chromium from 7bd73bbb1c0b to 35c05997232d (584 revisions)
7bd73bbb1c..35c0599723

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 robertphillips@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: robertphillips@google.com
Change-Id: Ia1265ed86310fedb814092db080bc1fb15fb7a0d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/498356
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2022-01-24 04:42:09 +00:00
skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com
c6237f0de0 Update SKP version
Automatic commit by the RecreateSKPs bot.

Change-Id: I133d60495759b917313e759b4ffc1e056250a1f3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/498186
Commit-Queue: skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com <skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com>
Bot-Commit: skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com <skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com>
2022-01-23 08:22:09 +00:00
skia-autoroll
5702389f07 Roll SK Tool from f50377eb4663 to 528873c2db84
https://skia.googlesource.com/buildbot.git/+log/f50377eb4663..528873c2db84

2022-01-23 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com Update CIPD Packages

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 erikrose@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: erikrose@google.com
Change-Id: I52ceda4cd0acf89d99c04cfce01554b8c1832be2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/498176
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2022-01-23 05:58:39 +00:00
Michael Ludwig
cc56016595 Track end mark of BufferWriters to detect overrun
In debug builds, BufferWriters store a Mark that points to the end of
their data array, and all write operations are validated against that.
IndexWriter and UniformWriter require the size or ending mark to be
provided, while VertexWriter does not.

Legacy creation of VertexWriters exist in several places in Ganesh where
it wasn't trivial to have the size of the buffer available when the VW
was created. Most common cases that go through GrMeshDrawTarget or
GrEagerVertexAllocator, or graphite's DrawBufferManager automatically
have this information embedded in the writer.

The major semantic change that comes with this is what

BufferWriter::makeOffset does. Previously you could make as many offset
writers as desired and overwrite each other, but now the intended use
case is enforced: the calling writer can only write up to the offset,
and the returned writer can write from the offset to the end.
Change-Id: I2df0f618cd7e50ff657366aeb4955d729c3a938a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496880
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2022-01-22 17:55:30 +00:00
skia-autoroll
4350707fe0 Roll skcms from 3fa993c258a9 to 30c8e303800c (2 revisions)
https://skia.googlesource.com/skcms.git/+log/3fa993c258a9..30c8e303800c

2022-01-21 johnstiles@google.com Fix overflow issue in approx_exp2().
2022-01-21 johnstiles@google.com Add .DS_Store to skcms ignore list.

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skcms-skia-autoroll
Please CC brianosman@google.com,scroggo@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

Cq-Include-Trybots: skia/skia.primary:Canary-Chromium
Tbr: brianosman@google.com,scroggo@google.com
Change-Id: Idcdc3b42caa52fc5417ca9b6ecd5a8134c6ef176
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497762
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2022-01-22 00:10:20 +00:00
John Stiles
63a4d65e16 Revert "Added tests for sksl clone() on our test corpus"
This reverts commit 0c9b8bae42.

Reason for revert: breaking bots, apparently due to use-after-free?
Could be a real clone bug...!

http://screen/9NenpjnYNoDU58G

Original change's description:
> Added tests for sksl clone() on our test corpus
>
> Change-Id: I9022a6aa53b039e5aec2ceeb0062d536e5e278c9
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496601
> Reviewed-by: John Stiles <johnstiles@google.com>
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>

Change-Id: Ida8978a38ac24081895cd97a62718b6ec94f57c8
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497777
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
2022-01-21 23:32:12 +00:00
skia-autoroll
ca2980bf0d Roll skcms from 1ea0b89e7a7e to 3fa993c258a9 (1 revision)
https://skia.googlesource.com/skcms.git/+log/1ea0b89e7a7e..3fa993c258a9

2022-01-21 lovisolo@google.com Fix skcms-Linux task.

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skcms-skia-autoroll
Please CC brianosman@google.com,scroggo@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

Cq-Include-Trybots: skia/skia.primary:Canary-Chromium
Tbr: brianosman@google.com,scroggo@google.com
Change-Id: Iff4e3d3d8d4407ad5643b09383f21bf7a98e02da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497722
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2022-01-21 21:18:53 +00:00
John Stiles
3ab1292dad Fix null dereference in ~PromiseImageInfo.
While working on an unrelated fuzzing task, I noticed in the logs that
~PromiseImageInfo was crashing on a null dereference while the fuzzers
were doing smoke checks. It looks like fuzzer was being detected as
"broken" and presumably is not being run: http://screen/AKPKmyx7mHJ5nir

This CL should resolve the null dereference, but I don't know if this
indicates a deeper problem.

Bug: skia:12851
Change-Id: I4a44891783504372f28ab4b320c01a14df0892a7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497436
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2022-01-21 20:18:04 +00:00
John Stiles
b6ebaa3656 Remove redundant calls to simplify_vector.
Originally, `simplify_vector` took a template parameter for the value
type, and so we needed to distinguish between SKSL_INT and float
vectors when simplifying them. This distinction was eliminated a while
ago (at http://review.skia.org/447836 ) so we can now handle all numeric
vector types the same way.

Change-Id: I55b1f4bf64c766148e8e25a23634e4b13c1c8f1e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497699
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2022-01-21 20:03:00 +00:00
Michael Ludwig
99b1b6f4ca Update GrTriangulator to no longer access VertexWriter's pointer directly
This was the last usage of the ptr() function that exposed VW's
underlying pointer to a possibly GPU-mapped buffer. At this point,
VW's can only be written once, never read, and Marks still allow for
typical pointer math you'd want to do when filling a buffer.
(caveat: the creater of the mapped buffer can't then expose the void*
in some other way).

Change-Id: I5401bdd71ec3063141561875d7b8770c624c4c49
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496784
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2022-01-21 19:17:49 +00:00
John Stiles
59a4127fb9 Deduplicate constant-equality checking logic.
Our `simplify_vector_equality` function turns out to be equally suitable
for matrices and vectors as well.

Change-Id: Ica6fa3b421357dc40730a76c130a584ab8506954
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497613
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2022-01-21 19:14:47 +00:00
Greg Daniel
aeee6c4413 [graphite] Move GrSingleOwner to skgpu::SingleOwner.
We need this for Graphite enforcing single owner on the cache.

Bug: skia:12754
Change-Id: Ib26167bce5ee5db6ffe60d3c49091ac14e05f32a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496604
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2022-01-21 18:22:53 +00:00
Heather Miller
2e890d726c Update Skia milestone to 100
Change-Id: I9d435a7a68ef870ef027ee3c6acb79792773868b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497609
Reviewed-by: Heather Miller <hcm@google.com>
Auto-Submit: Heather Miller <hcm@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
2022-01-21 18:08:55 +00:00
Robert Phillips
516aac121b [graphite] Add ImageShader and BlendShader SkPaintParamKey support (take 2)
Unfortunately, this won't change any behavior until ExtractPaintData is switched over to using PaintParams::toKey

Bug: skia:12701
Change-Id: I2b00256d34de1b8b99a65e26c08f5f082090a341
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497596
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2022-01-21 17:06:01 +00:00
Ethan Nicholas
0c9b8bae42 Added tests for sksl clone() on our test corpus
Change-Id: I9022a6aa53b039e5aec2ceeb0062d536e5e278c9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496601
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2022-01-21 16:47:51 +00:00
Robert Phillips
1793c189ea [graphite] Move SLType, Uniform, and UniformData to src/core
Presumably, SkVM will also need a way to represent the data passed to its programs

This CL attempts to be as mechanical as possible.

Bug: skia:12701
Change-Id: I7fb2c06d645809bf5422a25b8b537cf6c249fede
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497136
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2022-01-21 16:40:31 +00:00
Ethan Nicholas
61eb772e89 Removed standalone implementation of SkSLStringStream
We previously had a separate implementation of SkSLStringStream for use
in SKSL_STANDALONE. This is no longer necessary. As part of this change,
we fix an issue with the non-standalone version where calling str() and
then continuing to write to the stream would lead to incorrect results.

Change-Id: If83057470ae7e425dfc33ea7b372990285657f42
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497451
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
2022-01-21 16:23:17 +00:00
Robert Phillips
049f110ef6 Revert "[graphite] Add ImageShader and BlendShader SkPaintParamKey support"
This reverts commit 7e8fdf4706.

Reason for revert: breaking bots

Original change's description:
> [graphite] Add ImageShader and BlendShader SkPaintParamKey support
>
> Unfortunately, this won't change any behavior until ExtractPaintData is switched over to using PaintParams::toKey
>
> Bug: skia:12701
> Change-Id: I4f51dbb43983fe2f01947e26814f581a6d9033cd
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496783
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>

Bug: skia:12701
Change-Id: If180bd3753c95d920715f37347559cee4fa2da20
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497455
Auto-Submit: Robert Phillips <robertphillips@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
2022-01-21 15:15:18 +00:00
Brian Osman
a9aa935808 SkMipmapAccessor::fResolvedMode doesn't need to persist, make it local
Change-Id: I9b22c628147fe3d66e3148351ef765bb8c2ebe50
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497141
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2022-01-21 15:12:12 +00:00
Robert Phillips
7e8fdf4706 [graphite] Add ImageShader and BlendShader SkPaintParamKey support
Unfortunately, this won't change any behavior until ExtractPaintData is switched over to using PaintParams::toKey

Bug: skia:12701
Change-Id: I4f51dbb43983fe2f01947e26814f581a6d9033cd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496783
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2022-01-21 14:30:36 +00:00
Michael Ludwig
6edd5d9e19 Add read-only marking to BufferWriters
Marks can be used to remember the start of a writer, or a later position
(e.g. end) that it can advance to, compare and compute byte differences,
without exposing the underlying pointer to clients.

Change-Id: Ie8823fa1418002f9a5d645678f01c2cbf1a87acc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496780
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2022-01-21 14:13:46 +00:00
John Stiles
f6bb619a16 Fix underflow/overflow issues in skvm::approx_pow2.
The skvm implementation of pow2 uses a clever bit-twiddling trick to
generate a floating-point value that can be cast to integer, then bit-
punned to float, to generate its result. However, the bit trick fails
for large inputs, and the bit-punning step generates a nonsense result.
This is now fixed by using a well-positioned clamp.

Change-Id: I55143a98324f5f518d0875149a0b6ce6d734ded0
Bug: skia:12847
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497283
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2022-01-21 13:57:24 +00:00
skia-autoroll
39dc2a02fd Roll ANGLE from 1bd1a3db1c60 to 2caa9d4fe4f1 (8 revisions)
1bd1a3db1c..2caa9d4fe4

2022-01-20 b.schade@samsung.com Vulkan: Add missing glGetProgramPipelineiv parameters handling
2022-01-20 cclao@google.com Vulkan: Rename BufferHelper::initFor* to allocateFor*
2022-01-20 cclao@google.com Vulkan: inline some of the BufferSuballocation APIs
2022-01-20 cclao@google.com Vulkan: Rename SubAllocation to Suballocation
2022-01-20 lexa.knyazev@gmail.com Metal: Cleanup texture caps init
2022-01-20 jmadill@chromium.org Capture/Replay: Serialize ActiveTexturesCache.
2022-01-20 angle-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from d1b842fca80d to 70b3eb7a5ab4 (4 revisions)
2022-01-20 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from b24759852b71 to d5bf6f7f9376 (533 revisions)

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

To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/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-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Tbr: scroggo@google.com
Change-Id: I5affdb1f763352b232af46d1d00f9f87236acb2b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497416
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2022-01-21 05:25:51 +00:00
skia-autoroll
e09a3dae23 Roll Chromium from 1473390feb23 to 7bd73bbb1c0b (475 revisions)
1473390feb..7bd73bbb1c

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

To 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: scroggo@google.com
Change-Id: I5194ddf50422f16575b5e2af7b9273b7e6a56e76
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497417
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2022-01-21 05:08:21 +00:00
Michael Ludwig
96860d3bba Add makeVertexWriter helper to GrMeshDrawTarget
Adds makeVertexWriter[AtLeast] and makeIndexWriter[AtLeast] wrappers
around the vertex-space virtuals. Updates call sites of those functions
that immediately passed the returned pointer into a VertexWriter ctor
to call the new function.

This is simplification that will make changing the ctor of VertexWriter
easier (to come in another CL).

Change-Id: I8f4f1a9bed71e368828a42ed798fa6a93030a765
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496776
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2022-01-21 00:53:22 +00:00
John Stiles
418557a96a Fix debugger traces containing multiple vardecls on one line.
Internally, SkSL breaks apart multiple vardecls into individual vardecls
wrapped inside an unscoped Block. Previously, the Debugger did not
properly distinguish a scoped Block from an unscoped one, and the
variables inside unscoped Block would be considered as "out-of-scope" as
soon as the unscoped Block was closed. This would make them vanish from
the Local Variables pane of the debugger at the end of the vardecl
statement.

(Note that this transformation also means that Step stops once for each
individual variable, but that isn't a big deal.)

Change-Id: I2ee2409e8556d77b58d7645658bd497f87c31e39
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497278
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2022-01-20 21:16:28 +00:00
Jim Van Verth
62bb436301 Limit offset range when fuzzing SkOffsetSimplePolygon
Bug: oss-fuzz:43699
Change-Id: Ie856aed03b513a4ea84a09deda6a05b95b086b07
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496876
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2022-01-20 21:03:51 +00:00
Herb Derby
42bfd747a7 refactor common path drawing
Introduce PathOpSubmitter which handles submitting ops for paths.
Use this in all the different flavors of path sub runs.

Change-Id: I5d6ce06e7ffbe921eec4f05181d8fa84b49cf590
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496879
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2022-01-20 17:43:24 +00:00
Dominik Röttsches
013397884c [tools] Add git.bat to search list
On Windows, with depot_tools, git might be a batch file called
git.bat. Add that to the default search list to make it easier
to find a git command.

Change-Id: I825432e0f7fc72c37a1f2394a68e2f3f3e65f958
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/497056
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Dominik Röttsches <drott@google.com>
2022-01-20 17:33:21 +00:00
Zhou Shuangshuang
78cec092bf Enable MSAA for Intel 12th Gen gpus
Bug: skia:12790

Change-Id: If320420809abe090cbcb19c4c7cd9b72cd5daa31
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/492316
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2022-01-20 15:09:16 +00:00
John Stiles
5605a2928b Add SkVMDebugTracePlayer::getCurrentLineInStackFrame.
While working on the debugger, I realized that we had no interface for
getting the current line of any stack frame other than the currently-
executing frame. This can be useful for letting users explore the call
chain on the stack.

(While I was here, I also renamed `tidy` to `tidyState` in order to
match the Typescript implementation.)

Change-Id: Ife8c30d81adc17389a109698e3fba7f93e523e9e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496886
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2022-01-20 14:57:36 +00:00
Robert Phillips
b98159e414 [graphite] Clean up SkKeyHelpers a bit
The goals here are to:

reduce the use of magic numbers
make casts a bit safer

Bug: skia:12701
Change-Id: I6b1628fff4041bd0998060a757412b6a7260be1e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496378
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2022-01-20 14:21:30 +00:00
skia-autoroll
9be7372e1d Roll ANGLE from 00a2a2f3e84e to 1bd1a3db1c60 (12 revisions)
00a2a2f3e8..1bd1a3db1c

2022-01-20 kpiddington@apple.com Metal: Canvas resizing causes webpage to run out of memory
2022-01-19 cclao@google.com Vulkan: Remove BufferMemoryAllocator
2022-01-19 ynovikov@chromium.org Revert "Enable robustnessEXT for SwiftShader."
2022-01-19 jmadill@chromium.org Fix running tests with empty test set.
2022-01-19 penghuang@chromium.org Add object label in glBindTexture() error message
2022-01-19 cnorthrop@google.com Vulkan: Support fetching from default FBO
2022-01-19 geofflang@google.com Mark a context as shared if using global textures/semaphores
2022-01-19 jrprice@google.com EGL: Fallback to native device if no display available
2022-01-19 lexa.knyazev@gmail.com Metal: Cleanup autogenerated format table
2022-01-19 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from f6bdbed95b37 to 2e74d5dc03df (7 revisions)
2022-01-19 angle-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 4cda77455291 to d1b842fca80d (6 revisions)
2022-01-19 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 8cf5fa683fa3 to b24759852b71 (537 revisions)

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

To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/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-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Tbr: scroggo@google.com
Test: Test: FramebufferFetchES31.DefaultFramebufferTest
Change-Id: Ifd1f779cc14ae7038b671de933eba428077d773d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496978
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2022-01-20 05:24:51 +00:00
skia-autoroll
e9632e0966 Roll Chromium from 0cefe7415f67 to 1473390feb23 (528 revisions)
0cefe7415f..1473390feb

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

To 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: scroggo@google.com
Change-Id: I8c6556c24efb68fdbbbddb9e8e68025a64295134
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496977
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
2022-01-20 04:54:51 +00:00
John Stiles
8bf4a85e30 Push shaders.skia.org.
Change-Id: Ib7cffcbdfdb6edf0816151c6dff5961365cabf61
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496882
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2022-01-19 21:46:16 +00:00
Ethan Nicholas
fb1dedb0b2 Fixed an issue with SkSL For loop symbol tables
When transforming a for loop with multiple variable initializers, e.g.
for (int x = 0, y = 0; ...), we rewrite it to:
{ int x = 0; int y = 0; for (;...)

But we would keep the symbol table containing x and y attached to the
for loop. This means that while walking the code tree, we would run
into the declarations for x and y before running into the symbol table
containing them. This poses problems for the dehydrator, which would
fail when running into this construct. This fix simply moves the
symbol table to the containing block instead.

Change-Id: Ic806bbda19c954224a726b4a315f3102852e26b1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/494717
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2022-01-19 18:57:24 +00:00
John Stiles
d0c5af6523 Update the debug trace format to a new version.
This update removes an unused field (the "slot" value was redundant,
since we always emitted arrays in order and there are no gaps). This CL
mostly exists to test out the ramifications of updating the trace
version and make sure things don't break when we do.

Change-Id: I456837db682b0085fc5afbbc0bcb62af3440c6e5
Bug: skia:12755
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496607
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2022-01-19 18:45:22 +00:00
Ben Wagner
b042508dd5 Respect SKNX_NO_SIMD fully in SkVx.
SkVx.h attempted to not use vector instructions if SKNX_NO_SIMD was set.
However, this was incomplete and could lead to a wasm build with
SKNX_NO_SIMD still trying to use some vector instructions which are
not present if __wasm_simd128__ is defined.

This change requires some additional "include what you use" includes
since some other files were depending on SkVx.h including the vector
instruction headers.

Bug: cl/421848579
Change-Id: I6a878d64b76677a925b94724926c62f3e42ddd4c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496313
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2022-01-19 18:33:46 +00:00
Ben Wagner
508e5ceaea Remove SKNX_NO_SIMD from public.bzl iOS build.
This was added with d2ccc772d "Changes to public.bzl to support building
on iOS with objc_library bazel target." [0]. A recent test showed
nothing that breaks by removing this define, so try removing it now.

[0] https://codereview.chromium.org/1639443002

Change-Id: I9938e6a66b29e18332d9e7c4f60e2f2b2a5355ff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/496606
Commit-Queue: Ben Wagner <bungeman@google.com>
Auto-Submit: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2022-01-19 17:40:06 +00:00