Two issues:
1) For static keyframes (start_value == end_value) AE yields horizontal
orientation (0 tangent). We technically have the same logic in
Skottie, but our value deduplication logic interferes: the two
consecutive equal values are consolidated, and the result ends up
holding the spatial lerp info for the next frame => our hold frames
auto-orient for the beginning of the next keyframe.
Fix: skip value deduplication when spatial lerp is present.
2) The very last keyframe is always static and holds no spatial info.
AE retains the orientation of the previous frame, but Skottie yields
0 tangent.
Fix: the easiest way to accomplish AE semantics is to detect when
we're dealing with the last keyframe, and swap with the previous
keyframe with an adjust weight of 1 (to select the end value). This
produces the same lerp result (because keyframed values are always
contiguous) and also respects the orientation of the prev frame.
TBR=
Change-Id: Id661f7804533e95b747722457489a7ef759572a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301176
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Change-Id: Ice46fc0bc97d6dc00e707316647d04a3137ef9f4
Bug: skia:9935
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300212
Auto-Submit: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Before I start updating this to support relocatable DDLs I felt I
should clean it up a bit.
Change-Id: I640d15a40164b33c4c2d7378e37d39fe7d3ff313
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300926
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
In order for a tagged PDF to validate, each annotation (such as
a hyperlink) must have a /StructParent entry that links back to
the Parent Tree object, which in turn links that annotation to
its corresponding struct tree node.
The parent tree also contains one entry per page. Both the page
entries and the annotation entries need IDs.
Since we don't know in advance how many pages will be in the
doc at the time we start processing annotations, we start the
annotation IDs with a large number (100,000) which effectively
serves as the maximum number of pages in a document that we can
handle.
Bug: chromium:1100712
Change-Id: I5df84c4249ed6a4d21222cfc86b2c0c9b17d6efb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300254
Auto-Submit: Dominic Mazzoni <dmazzoni@chromium.org>
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Bug: skia:10381
Change-Id: I92feb4a668738d7f9375a6f204c663f1eb1b3a9b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301009
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Change-Id: I1ce210d77d586f5c73ee89d1eaaa4490322a977b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301001
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Previously, doing an official build of Skia with Vulkan and particles
enabled would succeed in compiling all of skia.lib, then fail to find
Vulkan headers for two particle .cpp files (that reach GrVkVulkan.h
via SkSL headers).
Bug: skia:10469
Change-Id: Ia5bdb7df25e7259e43cef3e6ff9719a8c8452022
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301002
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change-Id: I7f9122bb99fea952a67fa47aaada789037438152
Bug: skia:10476
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300906
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Bug: skia:10416
Change-Id: I0ca7535a0e6507e6b2a9f4682788826972c5f3b8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300296
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change-Id: Ib7a0b26568947bc0ec377a6f7f81ddac2c7c2528
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300649
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
In a strange twist, this effect already exposed a required input FP to
external callers, but implemented its behavior using RunInSeries. This
doesn't appear to have imparted any benefit, compared to sampling from
a child FP in the usual way.
Additionally, moved a 100-line test function `GrConfigConversionEffect::
TestForPreservingPMConversions` out of the header and into the CPP.
Change-Id: Ice8c1f1e2cb76177a8a2bf6cfc3e3d163854df64
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300908
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Calculating values for the distance field and bitmap ops were
split in the call stack. Consolidate all the calculations.
Change-Id: I933ca86684bbe8b0b6c58c5781d0d6f9aa39d220
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300617
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
The asAGradient() function appears to be deprecated
(https://crbug.com/skia/8941) but there's no easy way to remove its use
here at the moment. So, fixing the surface-level issue.
Bug: oss-fuzz:23932
Change-Id: Ia9675f3b31644f2754421f27844e77c43f189c90
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300907
Reviewed-by: Florin Malita <fmalita@chromium.org>
Auto-Submit: Tyler Denniston <tdenniston@google.com>
Commit-Queue: Tyler Denniston <tdenniston@google.com>
This is a reland of d10f080fa8
Original change's description:
> Return the actual block capacity from GrBufferAllocPool::makeSpaceAtLeast
>
> It looks like this was changed to return the fallback size instead of
> the block capacity for the sake of GrTextureOp, but GrTextureOp does
> not call makeSpaceAtLeast() anymore.
>
> For ops that write their vertex data in chunks, it's best to know the
> full capacity of the block. This way they can maximize the amount of
> data written out per chunk.
>
> Bug: skia:10419
> Change-Id: I7d3f74cdfc7d9b89f9d331e09069f8d178c07d81
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300396
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
TBR=bsalomon@google.com
Bug: skia:10419
Change-Id: Id76b0ef56d9df32545773634a13733739284240c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300877
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This pattern of needing a safe downcast will continue to grow as we
add more explicit use of GrDirectContext and it's causing long ternary
operations that span multiple lines.
Change-Id: I9e2ebe5156e4245524a52d7c92ed3a8509e53151
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300901
Commit-Queue: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Auto-Submit: Adlai Holler <adlai@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Unlike other shape path effects, merge paths disables the rendering of
any preceding paints - it only extracts the merged geometry from the
stack.
Update the shape layer attacher logic to suppress paints under merge
paths.
TBR=
Change-Id: I414134839de9eaa4b0f828d8dc6d4721620242bb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300897
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
This reverts commit c8b721b086.
Reason for revert: Looks like it's causing build failures around
MakeRenderTargetContext on the roll.
Original change's description:
> Make SkGpuDevice hold a GrRecordingContext
>
> This makes the code reflect what is actually going on. During DDL
> recording the SkGpuDevice only holds a recording context.
>
> This can't land until the following Chrome-side CL lands:
>
> https://chromium-review.googlesource.com/c/chromium/src/+/2277964 (Add GrContext.h include to skia renderer for upcoming Skia roll)
>
> Change-Id: I69cfa744226c315c25f68fc509b7b59ec38bbf31
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299867
> Commit-Queue: Robert Phillips <robertphillips@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Adlai Holler <adlai@google.com>
TBR=bsalomon@google.com,robertphillips@google.com,adlai@google.com
Change-Id: I6a362daf7c40e36ed9f068c5b2d477c16a3f778e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300853
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This reverts commit d10f080fa8.
Reason for revert: Possible failures on roll
Original change's description:
> Return the actual block capacity from GrBufferAllocPool::makeSpaceAtLeast
>
> It looks like this was changed to return the fallback size instead of
> the block capacity for the sake of GrTextureOp, but GrTextureOp does
> not call makeSpaceAtLeast() anymore.
>
> For ops that write their vertex data in chunks, it's best to know the
> full capacity of the block. This way they can maximize the amount of
> data written out per chunk.
>
> Bug: skia:10419
> Change-Id: I7d3f74cdfc7d9b89f9d331e09069f8d178c07d81
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300396
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
TBR=bsalomon@google.com,csmartdalton@google.com
Change-Id: Idb315fd68bcb585dcf5017872c0ffb7d0a52214c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10419
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300850
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
465a912582..8b80e852bd
2020-07-07 timvp@google.com Remove debug info from SPIR-V
2020-07-07 syoussefi@chromium.org Build specialized version of glslang
2020-07-06 syoussefi@chromium.org Vulkan: Compress internal shaders
2020-07-06 shrekshao@google.com Fix multiDraw* with DYNAMIC_DRAW buffer usage
2020-07-06 shrekshao@google.com MultiDraw Refactor
2020-07-06 dpranke@google.com Fix import paths for //scripts/run_gtest_angle_test.py.
2020-07-06 m.maiya@samsung.com Vulkan: Query aspect flag from the image
2020-07-06 jonahr@google.com EGL: Add basic multithreading support
2020-07-06 jmadill@chromium.org Test Runner: Batch tests by config.
2020-07-06 lehoangq@gmail.com Fix end2end intermittent crash on macOS if custom OSWindow is used.
2020-07-06 syoussefi@chromium.org Add new override required by glslang's BUILD.gn
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/angle-skia-autoroll
Please CC mtklein@google.com on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md
Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Bug: chromium:816629
Tbr: mtklein@google.com
Test: Test: CQ
Change-Id: I98a6ac12038bb8e40892352633f2b5c5784bc55b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300811
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
It looks like this was changed to return the fallback size instead of
the block capacity for the sake of GrTextureOp, but GrTextureOp does
not call makeSpaceAtLeast() anymore.
For ops that write their vertex data in chunks, it's best to know the
full capacity of the block. This way they can maximize the amount of
data written out per chunk.
Bug: skia:10419
Change-Id: I7d3f74cdfc7d9b89f9d331e09069f8d178c07d81
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300396
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This makes the code reflect what is actually going on. During DDL
recording the SkGpuDevice only holds a recording context.
This can't land until the following Chrome-side CL lands:
https://chromium-review.googlesource.com/c/chromium/src/+/2277964 (Add GrContext.h include to skia renderer for upcoming Skia roll)
Change-Id: I69cfa744226c315c25f68fc509b7b59ec38bbf31
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299867
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Adlai Holler <adlai@google.com>
D3D12 supplies w in fragcoord.w, while other backends supply 1/w.
This may be better handled in Dawn or SPIRV-Cross, but for now we'll work around the issue here.
Bug: skia:10475
Change-Id: I8f32f71f8f6b454365fbd0728fe063de2c150b8a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300711
Commit-Queue: Stephen White <senorblanco@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
This is a speculative fix for linked chromium bug
Bug: chromium:1096535
Change-Id: Ifa2f3bb116695d0163b70e721e2da17279a68edb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300708
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
defines one method that is never used.
Change-Id: If8522c5f1ac7447b0d5584e76cdbd2f7d127036b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300259
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Additionally, fixed a performance bug which caused the fragment
processor to sample the alpha component from the color-table texture
twice. (This repeated evalation was not optimized away during
compilation.)
Change-Id: Ia2314d7918d849b894043321d6dca5da633cda4a
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300699
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
The changes in http://review.skia.org/300182 caused cmd-Q to stop
working normally in Viewer, because the Mac window would report that it
had processed all key equivalents. This prevented the NSApp from
handling key equivalents in the menu bar. This CL now forwards on all
key equivalents to the system for processing (even as it passes them to
ImGui), allowing cmd-Q to work again.
This CL also simplifies the pattern for updating modifier keys slightly.
Change-Id: I2285839b41dd361e34694eccbc6d581662b24648
Bug: skia:10338
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300651
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
All coord transforms were identity, so this enshrines that
knowledge, then transitively removes a large amount of code.
Bug: skia:10416
Change-Id: Iae4af9ca21590bced1ce9fce3ab807f6cceaebd4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300234
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This was confusing, because the return type is a tuple, so we were
constructing a pair, then move-constructing a tuple from that?
Change-Id: Ief74dcd643780abcd5b32292b8977fb92362c982
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300648
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Bug: skia:10419
Change-Id: Ifd93b6cd8acffa78675b3e45134dfa52062b4f7a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300102
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
I added the renderTargetContext() method to GrTextTarget so I don't
have to convert the entire call stack over in one CL. In the end,
GrTextTarget and GrRenderTargetContext::TextTarget will be deleted.
Change-Id: I49387737c26b69111050101d9da3380617db2918
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/295376
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Based on SkPathOps for now.
Change-Id: Id27c8a235cbd4ab5083735b67cf5d2635ee16cfc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300497
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Mike Reed <reed@google.com>
The sample() keyword now allows null fragment processors to be passed
in, substituting the input color when this occurs. The ternary did the
same thing, so it no longer adds value.
Without the ternary, the expression becomes simple enough that it can
fit on a single line, so the temporary variables were removed as well.
Change-Id: I8d0ceb437791a87a4244576a180e8c4eec441f2b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300644
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Change-Id: I4931318d3ee25ec6166caceb1c5fe083d590767a
Bug: skia:9935
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300645
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Auto-Submit: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>