The SkPDFDocument::fTagTree::fRoot is set at document creation time.
This root will initially always be discardable, since no annotations
have been made. As a result it does not make sense to assert on it being
non-discardable, since it should be possible to create a PDF which just
happens to have no annotations added to it.
Change-Id: I2fe336c872805b6937f7c8ea275c0cb4d3438682
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301383
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Dominic Mazzoni <dmazzoni@chromium.org>
This will let us track a new metric that measures the heap usage of
constructing a default compiler object. I anticipate adding similar
stats about the heap usage from compiling simple vs. complex SkSL.
Change-Id: Idb814c0b5d210d00a06ce5dc7147437aabcba1bb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301359
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
For various reasons AutoFTAccess::face() can return nullptr,
particularly in the case of fonts backed more or less by nothing, or by
users who keep plowing on using an SkTypeface which claims not to
actually have any glyphs. Clean up all the callers to do something which
makes sense when nullptr is returned.
Bug: oss-fuzz:23862
Change-Id: Ifa8e2abbd6dc0e4f41857240c4eb95709dfe5178
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301301
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Rather than adding multiple color processors to the GrPaint, we now
use child FPs to compose the desired operation.
Change-Id: Ie4397c2ca75cb1d8a65920756355efd4e274e636
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301220
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Rather than adding multiple color processors to the GrPaint, we now
use child FPs to compose the desired operation.
Change-Id: I23a66b5c6e69d4ff6ec6f3f158e96da61f7c0cb2
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301380
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Move makeOp functionality into insertSubRunOpsIntoTarget, and remove
makeOp.
Change-Id: Icb02be321314afa56a6dc4947319b41b041a524f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301356
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Dealing with it for now; should not be allowed in the first place!
Change-Id: I52141d0543d60342c45813d35264c7ee49f1e972
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301298
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
We are replacing GrContext with the GrDirectContext/GrRecordingContext
pair. This starts making that change visible to clients (and weaning
Skia off of GrContext).
Change-Id: I00cc9bf208499984de855a1646229bd7557fc925
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300706
Reviewed-by: Adlai Holler <adlai@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
In the call insertSubRunOpsIntoTarget, the clipRect is always empty
for the distance field case.
Change-Id: Ib17eaae37a153c5b6aa473b2bf31d8b6c985e78f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301257
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
This will get us closer to deprecating getGrContext.
The benches have no SkSurface::getContext calls.
TBR=bsalomon@google.com
Change-Id: I6496a6324091a75d2829bd7ee20bdbe0dc3b6fe9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300654
Reviewed-by: Adlai Holler <adlai@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
The deprecated form of `asFragmentProcessor` that did not take an
inputFP is no longer used and has been removed. The helper method
`colorFilterAcceptsInputFP` which distinguished between the forms
has also been removed.
Change-Id: Ic79198f1a734d3a7c2b0a299bc5d90e3c9b2a57f
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301019
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Runtime color filters are public API which take a color as in/out.
Changing this would be an API break. To work around this, RunInSeries
is used to invoke the inputFP, then pass its results into the runtime
color filter. This is less than ideal but allows us to preserve the
semantics that RuntimeColorFilter has historically used.
Change-Id: If973ae0f25e7610b7a4df3e4df5080f51293fd90
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301217
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
This CL also makes a few minor improvements:
- Fewer calls to codeAppend[f], as each call is relatively expensive.
- Avoid calculating `fmax + fmin` repeatedly while performing RGB->HSL
conversion.
- Fixes spacing for better readability in shader panel.
Change-Id: I81b902009328765f11f8e18e1cf9edea214a4da7
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300781
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
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>