Commit Graph

31917 Commits

Author SHA1 Message Date
John Stiles
09adf0bfc3 Add new SkVM trace op 'trace_scope' to track SkSL scope depth.
This CL adds the trace op and tests the builder commands, but it is not
yet hooked up to the SkVM code generator or debugger.

Change-Id: Iaa64293dfd0973e299eb480cb2b43672b0886c32
Bug: skia:12741
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/484439
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-12-14 21:56:41 +00:00
Greg Daniel
749cbeb814 Remove workaround for not executing no op discard OpsTask.
This should fix the Vulkan validation warnings about have a render pass
with a 0 area bounds.

There are times in Skia (when not doing reduced op list splitting),
where we get a new offscreen surface, discard it, then get a second
offscreen before submitting any draws to the first yet. This causes us to
have an OpsTask for the first with a discard load but no ops. When we
get back to this first surface to add real ops it will have a load load.
Correctness wise we could drop the first OpsTask since it doesn't have
any affect (what the validation warning in this bug is referring to).

This original workaround was there to appease a different vulkan
validation warning about loading unitialized memory at the start of a
render pass. If we drop the discard then the validation would complain
the load (on the second OpsTask) was happening on unitialized memory.
However, with the workaround removed I no longer am getting such a
warning both with and without reducedOpListSplitting. So either we are
now avoiding this case via something else higher up or maybe this warning
was removed from the validation. Or I just can't get a good test case
for it. It does not repro running Skia gm or tests, or running chromes
test case for the 0 area render pass bounds.

Bug: chromium:1279794
Change-Id: I11ad5ce4e0000da74805a4cd9a0a9207d5adf60a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/484562
Auto-Submit: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2021-12-14 21:49:36 +00:00
Julia Lavrova
f74c7893fc Introduce SkVM Op::duplicate to localize visualization code
Change-Id: Ic343b1dcddb74d31c768afa67ab78955af418c9d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/483603
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
2021-12-14 18:51:41 +00:00
Derek Sollenberger
04a9672c0a Add Android Framework specific logging to SkSurface::MakeFromBackendTexture
This is an attempt to get more diagnostic information when an SkSurface fails
to be created.

Bug: b/206415266
Change-Id: I536417e1a6d1f0f99e5e9e41e2fee43f7aa9b464
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/484338
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Derek Sollenberger <djsollen@google.com>
2021-12-14 17:04:22 +00:00
Maksim Ivanov
16d3cc04cc Fix use-after-move in GrVkRenderTarget
Fix a use-after-move issue in GrVkRenderTarget, as found by clang-tidy:

  gpu/vk/GrVkRenderTarget.cpp:67:
  'resolveAttachment' used after it was moved
  gpu/vk/GrVkRenderTarget.cpp:62:
  move occurred here

Bug: chromium:1122844
Change-Id: I4f65784cc1d8e39fb60ce3439e316a9dc399eca8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/484178
Auto-Submit: Maksim Ivanov <emaxx@chromium.org>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2021-12-14 16:49:08 +00:00
Jim Van Verth
5120749c9d Add missing comment.
Meant to add this as part of
https://skia-review.googlesource.com/c/skia/+/483596

Change-Id: I2d5ab327b786d74ad5c96eaad5dde79676fce1ca
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/484340
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Auto-Submit: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2021-12-14 16:08:01 +00:00
John Stiles
80d2a50d4b Move newly-updated variables to the top of the Variable list.
Previously, the variable pane listed variables in slot order, which was
not very helpful (other than usually mapping to a top-to-bottom order in
the original source code). Now, the variable pane sorts variables to the
top when they are modified, and maintains their relative order
throughout execution. This is much easier to follow.

http://screen/C9odSHV4asFSLZH

Change-Id: Id86adf745207451a38a4dc46756f316e8d86bf81
Bug: skia:12666
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/483958
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-12-14 15:53:14 +00:00
Maksim Ivanov
e3c0d7356c Fix use-after-move in GrResourceAllocator
Fix a use-after-move issue in GrResourceAllocator::Register, as found by
clang-tidy:

  gpu/GrResourceAllocator.cpp:116:
  'scratchKey' used after it was moved
  gpu/GrResourceAllocator.cpp:111:
  move occurred here

Bug: chromium:1122844
Change-Id: I8f00c6c82ae25a12045b6c101c608b52b90a51d1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/484177
Auto-Submit: Maksim Ivanov <emaxx@chromium.org>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2021-12-14 14:24:19 +00:00
Maksim Ivanov
ecbad28361 Fix use-after-move in GrPixmapBase
Fix a use-after-move issue in GrPixmapBase, as found by clang-tidy:

  gpu/GrPixmap.h:65:
  'info' used after it was moved
  gpu/GrPixmap.h:64:
  move occurred here

Bug: chromium:1122844
Change-Id: I7403805e3e63592119b66c1e5840bc48d5e33832
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/484176
Auto-Submit: Maksim Ivanov <emaxx@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2021-12-14 14:04:00 +00:00
Maksim Ivanov
2ca96704ee Fix use-after-move in SkPDFDocument
Fix a use-after-move issue in SkPDFDocument, as found by clang-tidy:

  pdf/SkPDFDocument.cpp:222:
  'metadata' used after it was moved
  pdf/SkPDFDocument.cpp:213:
  move occurred here

Bug: chromium:1122844
Change-Id: Ibcc09353af431f1389a2c80a3b94acb345b4f809
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/484179
Auto-Submit: Maksim Ivanov <emaxx@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2021-12-14 04:51:47 +00:00
John Stiles
0745d19ae3 Hide function return values after a step.
Previously, return values like `[func].result` would stick around in the
Variables table indefinitely. This felt very counterintuitive. Now they
only appear for one step, then vanish.

Change-Id: Iedfc7d2ddf136111005b26aaefb380ffc6281d05
Bug: skia:12666
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/483605
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-12-13 22:14:35 +00:00
John Stiles
0385de0f88 Add helper method to get the human-readable value of a slot.
We already had this logic in SkVMDebugTrace::dump; it just needed to be
factored out so that it could be accessed directly.

Change-Id: Ib497b82a7722b8ac2285de74f1937379c2f9a51b
Bug: skia:12666
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/483600
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2021-12-13 19:57:28 +00:00
Jim Van Verth
c46b4d0a48 Add divide-by-zero check to GrGenerateDistanceFieldFromPath
Bug: oss-fuzz:32768
Change-Id: I9273ba1242a0f61dc5b26b2651400b4b46dd3992
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/483596
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2021-12-13 19:54:28 +00:00
John Stiles
9247feb52c Report slot updates using a dirty mask.
By tracking slot writes using a dirty mask, and reporting these in the
VariableData, we will be able to highlight assigned-to variables in the
debugger.

Change-Id: I93a767095c9c1b6dedc55a08424649f83aa1c960
Bug: skia:12666
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/483598
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>
2021-12-13 19:26:43 +00:00
Jim Van Verth
e4bccab4ac Fix divide-by-zero in AAConvexTessellator.
Bug: oss-fuzz:32385
Change-Id: I048e5a55430c0c968b858b0ac25d077a35332e02
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/483519
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2021-12-13 19:10:34 +00:00
Herb Derby
8dc9a337ab rename GrTextBlobCache to GrTextBlobRedrawCoordinator
Change-Id: Ib1ea2936f7a9431bc62c04b1931cf6da2c213b36
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/483496
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2021-12-13 17:38:00 +00:00
John Stiles
fbb743377a Add method to get the suffix for a trace's slot.
We already had this logic in SkVMDebugTrace::dump; it just needed to be
factored out so that it could be accessed directly.

Change-Id: Idd6c92d23ab4dddc60fdc3c7b1693a0d89b1c992
Bug: skia:12666
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/483517
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2021-12-13 16:54:33 +00:00
John Stiles
5d3060ed94 Add support for stepping out from a function.
Stepping out is extremely similar to stepping-over, so this was mostly
working already.

Change-Id: Ib1c1ba96b45a732500e72b6da4cbfe41a1f75307
Bug: skia:12666
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/483196
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2021-12-13 16:43:49 +00:00
Jim Van Verth
db9f95c888 Move ShaderUtils out of Ganesh.
This will allow us to use ShaderUtils in both Ganesh and Graphite.

Change-Id: I78e34c4eb969a0d827c459d7fb945d17fdc22efa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482696
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2021-12-10 23:10:25 +00:00
John Stiles
5d5f24e814 Move SkVMDebugTrace into src/sksl/tracing.
Change-Id: Id4fc455f0eb23aa8d9b6f5474be7f6eba71c48de
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482698
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-12-10 21:58:01 +00:00
John Stiles
f3b4617828 Create SkVMDebugTrace player class.
This class is responsible for interpreting a debug trace and allowing it
to be stepped through, like a debugger. It tracks the current line
number, call stack, slot values, and associates slots with stack frames.
It supports stepping forward or stepping over (i.e., stepping to the
next line in the current function, hiding function calls).

Change-Id: I2b7d90c3b38b0006bebdfbf65a7bf678d5227d56
Bug: skia:12666
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482460
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-12-10 21:57:58 +00:00
Herb Derby
c279e7640b add bilerp atlas support flag
Move the compile-time flag SK_EXPERIMENTAL_ADD_ATLAS_PADDING,
to a runtime flag in GrContextOptions.

Bug: chromium:1275890

Change-Id: I7e051cd4834ac44958b1431976535519e8bdaa3e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482416
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2021-12-10 20:33:57 +00:00
Herb Derby
0f2390f7fb move SkRemoteGlyphCache.h to private
Chromium has been using the remote glyph cache for a few years now.
It's time to give it a proper home.

This is an intermediate CL. The old .h file includes the new .h file.
After I change the include paths in Chromium, I will delete the old
file.

Change-Id: Iaf00c46aa0698326c0bdec9a0eed218bcc3e334e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482700
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2021-12-10 20:20:56 +00:00
Herb Derby
4d35c0d31d relocate GrTextBlob creation to GrTextBlobCache
Move the GrTextBlob creation code to GrTextBlobCache allowing
more cache calls to be private.

Change-Id: I9ecb732c066ef7dadf8bc478a8b4d3dea8c292a9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482697
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2021-12-10 18:56:35 +00:00
John Stiles
b1a97caf71 Revert "Trace function return values after function-exit."
This reverts commit 85cc1bece7.

Reason for revert: ends up not being useful after all

Original change's description:
> Trace function return values after function-exit.
>
> This will allow function return values to be easily seen when stepping
> "over." This has the unexpected side benefit of generating slightly
> fewer ops when a function has unoptimizable conditional returns.
>
> Change-Id: I48d23de635d3caaddff91aa595593d0371dfcdcb
> Bug: skia:12708
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481076
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: John Stiles <johnstiles@google.com>
> Auto-Submit: John Stiles <johnstiles@google.com>

Bug: skia:12708
Change-Id: I61ebb175b60d2060f6ad21b170238b37557b80be
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482458
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2021-12-10 18:06:04 +00:00
Ben Wagner
15f186d277 GrMemoryPool always standard_layout for offsetof
GrMemoryPool in debug has extra fields and so wants to make use of
offsetof. The offsetof can only be taken on standard layout objects.
However, in debug std::unique_ptr may not be standard layout, which
makes SkAutoTArray not standard layout, which makes SkTHashTable not
standard layout, which makes SkTHashSet not standard layout, which makes
GrMemoryPool not standard layout, producing a compile error.

Since this is debug only, move the debug only fields behind a pointer
(which unfortunately cannot be a std::unique_ptr, since it may not be
standard layout). This allows building with recent libc++ headers and
clang.

Change-Id: Id9d312d7939808399d0796428de218d30263c26f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482004
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2021-12-10 16:11:35 +00:00
Michael Ludwig
b05732e102 Rewind farther on topology intersect mismatch
Also fixes recursion end point update in recursive_edge_intersect, which
was causing us to search in the wrong area of the lines and falsely
report no intersection when there should have been one (which is then
detected by the topology check in intersectEdgePair() and more less
accurately corrected for).

Bug: chromium:1245359
Change-Id: I1d21c934a23c9b99c3767849ee19bc2f6c551d3f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482456
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2021-12-10 15:46:53 +00:00
John Stiles
83b5237b53 Fix assertion when debug-tracing a void-return function.
The debug-slot code didn't expect to encounter a void type.

Change-Id: Ied452b51e1cf90a0c0bc24770f82e711105b8e82
Bug: skia:12708
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482461
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2021-12-10 14:39:05 +00:00
John Stiles
c962042ed2 Add field to SkVMSlotInfo indicating function return values.
Function return values exist at the boundary between stack frames and
will need slightly special treatment by the debugger.

Change-Id: I017b5713919f507074f072d040332325307c2e81
Bug: skia:12666
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482459
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-12-10 14:10:57 +00:00
Brian Osman
351148ff38 Create SkVMCallbacks, to bundle the child-sampling routines
I'm about to add more callbacks, and the collection of std::function was
getting unmaintainable. This mirrors the pipeline-stage generator, and
also is structured to share more code among the different runtime effect
objects.

Change-Id: Ib82042781051471a6743401db45ce24540bfa253
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481684
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-12-10 13:53:22 +00:00
Herb Derby
3317b1b23e consolidate processing for sub runs multiple formats
Change-Id: Ief27a4a8051485bed20e1a5312457e778cb28171
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482007
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2021-12-09 22:45:47 +00:00
Lei Zhang
e4f148f09f Remove unneeded include from SkFloatingPoint.h.
The _POSIX_VERSION check was initially added in
https://skia.googlesource.com/skia/+/d3fbd34099, and its usage was
removed in https://skia.googlesource.com/skia/+/d7dc76f7e9. Since that's
long gone, remove the include associated with that. Then do IWYU to fix
the build.

Change-Id: Ic256d64a2e02bd8ada03513bb04b0e733576c474
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482256
Auto-Submit: Lei Zhang <thestig@chromium.org>
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2021-12-09 22:45:23 +00:00
Arman Uguray
b58bab1fed [skslc] Support HLSL output
- skslc can now generate HLSL using spirv-cross if invokved with an output
file with the ".hlsl" extension
- The SkSL::SPIRVtoHLSL function used to be conditionally compiled based
on the SK_USE_DIRECT3D define, which gates D3D support for the entire
gpu backend. This function is now conditionally compiled using a new,
more narrowly scoped define, which is always enabled when building
skslc.

Bug: skia:12691
Test: Run:
Change-Id: I6967c26ab28954ec09e1c62513187c8986135290
      1. ./skslc ../../resources/sksl/spirv/Ossfuzz35916.sksl TEST.hlsl
      2. ./dxc -T ps_6_7 TEST.hlsl
      Ensure that 1 runs without any errors and 2 does not detect any
      issues in the hlsl.
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482257
Auto-Submit: Arman Uguray <armansito@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-12-09 21:07:30 +00:00
Julia Lavrova
57043197c1 Merging the logic for binary and compare
I was wrong and @johnstiles was right. It does work...

Change-Id: Id51d7732a44db996e078337a9b8e4136353ac922
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482009
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
2021-12-09 21:06:25 +00:00
Leon Scroggins III
30d5eea3dc Treat AHARDWAREBUFFER_FORMAT_R8_UNORM as kAlpha_8_SkColorType
Bug: b/193170859
Bug: b/209497983

Change-Id: I51d38cfcd89623e618e1fa34a1f87c1dd777b7f5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/479737
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2021-12-09 20:52:31 +00:00
Brian Osman
3695bdb587 Refactor SkMatrixProvider slightly
There was only one virtual method, so switch that to a bool stored in
the base class. The derived types exist as hints for the reader, and an
easy way to adjust how the new localToDevice is constructed.

With this change, we don't need SkSimpleMatrixProvider. SkMatrixProvider
is concrete, so we can use it directly. SkOverrideDeviceMatrixProvider
no longer needs the original provider for anything, so remove that
parameter. It now exists solely to inhibit the hitsPixelCenters flag.

Fix a few spots (SkParticleBinding, some sites in SkRuntimeEffect) where
we used SkSimpleMatrixProvider, even though the local coordinates being
passed did not obey the hits-pixel-centers constraints.

Most importantly, document how localToDeviceHitsPixelCenters works.

Change-Id: Ibe9060bac0822d0edf52a507d390bd198d8e6dbd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482176
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-12-09 20:10:58 +00:00
Dominik Röttsches
08c63ec5a5 Use Skia instead of FreeType color type in COLR rasterization
Preparation for being able to change the palette to a custom palette.
No functional change.

Bug: skia:12730
Cq-Include-Trybots: luci.skia.skia.primary:Test-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_NativeFonts
Change-Id: Ife068c50ac9f385090637f9f73beb2baec76a4b0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/482096
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2021-12-09 19:34:04 +00:00
Brian Osman
ca916f705f Remove canvas marker stack, marked matrices, etc...
This entire API existed, but was unused (no longer connected to
drawVertices or runtime effects).

In theory, we could further simplify some of the matrix providers, but
more importantly - I have serious doubts about the correctness of
localToDeviceHitsPixelsCenters for most of them.

Change-Id: If5af182015dd96e5ed3353a117223e8dbbe17097
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481683
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-12-09 16:22:16 +00:00
John Stiles
bc5b9f6b53 Migrate SK_strcasecmp to SkStringUtils.h.
This will let us use it elsewhere.

Change-Id: I39a5dc0651bee8fbd5fa7302e34a3a79f7efbd3d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481736
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>
2021-12-08 22:52:04 +00:00
John Stiles
0ee3e0c959 Fix source repetition in debug traces.
This fix appeared in prior CL patchsets, but got lost through rebases
and CL splits.

Change-Id: I1befff3830b40740f1e52e3e88f74484122027ce
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481680
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2021-12-08 21:45:25 +00:00
Herb Derby
22960eb7b2 don't produce empty slugs!
The current system short circuits out when an SkTextBlob will draw
anything based on its bounds, the bounds of the clip, and the state
of the paint.

A similar thing needs to happen, but the clip needs to be ignored.
Return the nullptr if the SkTextBlob would never draw to signal that
the Slug can be ignored.

Bug: chromium:1277583

Change-Id: I2d6641e03c88ae5f160c479c9e715ad8dc9f65b3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481592
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2021-12-08 20:34:41 +00:00
John Stiles
3856a5854e Revert "Add SkVM op trace_done to indicate completion of debug tracing."
This reverts commit 062652067b.

Reason for revert: design change removes need for this op

Original change's description:
> Add SkVM op `trace_done` to indicate completion of debug tracing.
>
> This op can be used to invoke a callback function and dump the log to
> disk when it is ready. SkRuntimeEffect doesn't have any other viable
> mechanisms for detecting that a paint has completed, AFAIK. We can
> wait for ~SkRTShader to occur, but there's no guarantee that this will
> happen quickly, and the SkPaint with the SkRTShader shader can be reused
> over and over again.
>
> Unlike other trace ops, this only needs a trace mask, not an execution
> mask (we are unconditionally done at the end of main).
>
> Change-Id: I6f7ee41f2005b65940d36dee892279d4f245509f
> Bug: skia:12708
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/479876
> Auto-Submit: John Stiles <johnstiles@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

Bug: skia:12708
Change-Id: Ic4c4f5dd72541195f07ca32035267a20a82536e7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481577
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>
2021-12-08 17:49:56 +00:00
Brian Salomon
b7f5278009 Geometry Processor can output local coord in fragment stage.
Currently GPs inform the program builder of the variable that contains
the local coordinates and it is assumed to be defined in the VS.
Additionally, the builder process will attempt to lift derived
coordinate computations to the VS as varying outputs when they are a
linear/projective transformation of the the GP's local coords.

This change makes it so that the GP can state that the local coord
variable is instead available in the fragment stage. If the GP uses
this option then lifting of coordinate transformations to the VS is
blocked.

Bug: skia:12720
Change-Id: I63d3ffe069c9e4ac43ac5bb305d6e04a11119626
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481279
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2021-12-08 16:52:57 +00:00
John Stiles
44f8636b30 Disable SkVMBlitter cache for Programs with trace hooks.
The trace hooks don't participate in the cache key, so the "matching"
Program in the cache may not have the same trace hook pointers as the
Builders. In fact, the trace hook pointers in the cached Program are
very likely to point to objects that no longer exist at all.

We could incorporate the trace hooks into the key, but this seems like a
losing battle--they're raw pointers and are extraordinarily unlikely to
stay consistent over time. Since trace hooks are only used in a
debugging context, where performance is not very important, the simplest
solution is to just exclude programs with trace hooks from the cache
entirely.

Change-Id: I65799331da012656c8b13e76107bc893418a874c
Bug: skia:12708
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481440
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>
2021-12-08 15:59:39 +00:00
Brian Salomon
78fa6d23ef Make SkRuntimeEffect's compiler instance shareable.
No functional change.

Bug: skia:12720
Change-Id: I649bc258c9a6b4973cdd9d1727827cdaf89b43ad
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481280
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2021-12-08 15:31:25 +00:00
John Stiles
543b8681c7 Add SkRuntimeEffect::MakeTraced API for SkShader debugging.
Color filters and blenders are currently not supported for tracing,
because we don't have access to the pixel coordinate, and so there is
nothing to compare the debug-trace coordinate with.

Change-Id: I7fe7fb4955b002432046ceef61c6f0a4c721a581
Bug: skia:12708
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481278
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-12-07 22:34:00 +00:00
Herb Derby
1c4cf27965 better tracing
Change-Id: I778703ae91df56ba4b7dd768637ac774010c4e08
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481197
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2021-12-07 20:53:28 +00:00
Brian Osman
8c3d183cc2 Rename SkSL 'srgb_unpremul' to just 'color'
Added comments to explain the semantics (both what's expected when you
set the uniform, and what you see in the shader). The old name was
confusing, because it sounded like you got an sRGB color in the shader.
This is terse, but I think it's the cleanest syntax - and for embedding
clients, they can use C++ (etc.) API to require that color uniforms are
assigned from color types.

Bug: skia:10479
Change-Id: If00ea754060494aaa83001a5b357687953de8a5f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/480577
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-12-07 17:56:27 +00:00
John Stiles
85cc1bece7 Trace function return values after function-exit.
This will allow function return values to be easily seen when stepping
"over." This has the unexpected side benefit of generating slightly
fewer ops when a function has unoptimizable conditional returns.

Change-Id: I48d23de635d3caaddff91aa595593d0371dfcdcb
Bug: skia:12708
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481076
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2021-12-07 16:32:44 +00:00
John Stiles
5fb4753483 Revert "Remove newly-added SkSL::DebugTrace base class."
This reverts commit 873a39ebd1.

Reason for revert: rework #2 of trace design, DebugTrace is back

Original change's description:
> Remove newly-added SkSL::DebugTrace base class.
>
> Slight rework of the SkRuntimeEffect trace design means we won't expose
> any debug-trace class at the public level, so an interface base class
> doesn't add value after all.
>
> Change-Id: I82739e9c5ba5ce5c7a63793ec0c09a50ab19fbb3
> Bug: skia:12708
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/480776
> Auto-Submit: John Stiles <johnstiles@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

Bug: skia:12708
Change-Id: I02d51f83c7a3384b1eaa74ecf1a80b5f6e4fd774
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/481196
Auto-Submit: John Stiles <johnstiles@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-12-07 16:25:17 +00:00