Add a new private method to SkCodec that handles Options.fFrameIndex:
- Check to ensure the index is valid
- Call onGetFrameCount to force parsing the stream
- Recursively call getPixels (it should be complete, so no need for
incremental decoding) to decode the prior frame if necessary
- Zero fill a RestoreBGColor frame
Call the method in getPixels and startIncrementalDecode, and remove
duplicate code from GIF and WEBP.
Remove support for scaling frames beyond the first, which is currently
unused.
Preserve the feature of SkGifCodec that it will only parse to the end
of the first frame if the first frame is asked for. (Also note that
when we continue a partial frame, we won't force parsing the full
stream.) If the client only wants the first frame, parsing the rest
would be unnecessary. But if the client wants the second, we assume
they will want any remaining frames, so we parse the remainder of the
stream. This simplifies the code (so SkCodec does not have to ask its
subclass to parse up to a particular frame).
Update tests that relied on the old behavior:
- Codec_partialAnim now hardcodes the bytes needed. Previously it
relied on the old behavior that GIF only parsed up to the frame being
decoded.
- Codec_skipFullParse now only tests the first frame, since that is the
case where it is important to skip a full parse.
TBR=reed@google.com
No changes to the public API.
Change-Id: Ic2f075452dfeedb4e3e60e6cf4df33ee7bd38495
Reviewed-on: https://skia-review.googlesource.com/19276
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
Change-Id: If1360bee50c8c360e4b1edf09c8a39aa32a59eb9
Reviewed-on: https://skia-review.googlesource.com/19520
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Bug: skia:
Change-Id: Icb25bc21a30e88f21df5b0e267d5a3a05535e44a
Reviewed-on: https://skia-review.googlesource.com/19544
Commit-Queue: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Change-Id: If20a43a905ae65643d071978b345d9ff09c04cf1
Reviewed-on: https://skia-review.googlesource.com/19541
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
New version limits the workaround to unorm configs.
This reverts commit fdd117025f.
Change-Id: I47a08a0ea4cf1acd88ca3c1bf9922cf0a8d215cc
Reviewed-on: https://skia-review.googlesource.com/19490
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Now we just look at the paint to decide if the user wants to dither.
Needs this to land first:
https://skia-review.googlesource.com/c/19448/
Bug: skia:
Change-Id: I31940696e114922bcc8fb9ca3c24c2eb0a622800
Reviewed-on: https://skia-review.googlesource.com/19496
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
Cause DeferredTextureImageData functionality to support low bit depth
(4444, 565) image formats (with dithering).
Updated to handle colorspace + 4444 colortype correctly.
Bug: 720105
Change-Id: Ib7e14d937849f4f6b08fda6992a240bb203d0089
Reviewed-on: https://skia-review.googlesource.com/19094
Commit-Queue: Eric Karl <ericrk@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
This relands the original change with a modification. We should
not check for non-null pixels because this breaks the Android
hw bitmap use case.
Bug: b/62482405
Change-Id: I081412bb46754d33b69e02e5754f04a082e081ae
Reviewed-on: https://skia-review.googlesource.com/19494
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
We'll encode F16 .pngs at 16-bit linear, so don't to_srgb them.
We'll encode F16 .jpgs and .webps as 8-bit sRGB, so tag them as sRGB.
Change-Id: Ibc5b5e2d3aea68cdf1531026cbe8b6191f7e39ea
Reviewed-on: https://skia-review.googlesource.com/19498
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Even though it's in homogeneous coordinates, we still get unfortunate
artifacts if this math is not done in double precision. Prioritizing
correctness for now; we can revisit in the future as the need for
performance dictates.
Bug: skia:
Change-Id: If416ef6b70291f1454fcb9f7630d1108644ac2a5
Reviewed-on: https://skia-review.googlesource.com/19501
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
If a point in the path rounds to +inf/-inf, the intersection code can
produce NaN, which is unsortable. Fix: ignore non-finite intersections.
Quadratic interpolation can sometimes produce NaN, which will never
satisfy the flatness criterion. Abort if any of the interpolated points
are non-finite.
Bug:732023
Change-Id: If5881796e589c75b8f74459f42d00918619713a2
Reviewed-on: https://skia-review.googlesource.com/19467
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
No-Try: true
Change-Id: I4372c50b183d040e5145ac3ca665cd813da6256a
Reviewed-on: https://skia-review.googlesource.com/19497
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
Bug: skia:
Change-Id: I6296fa0bd3b14ffc9ed0b3630196a794f1556299
Reviewed-on: https://skia-review.googlesource.com/19448
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
This template is only used for GrBuffers now.
Change-Id: Ia9e95576b01124657e64007231fbc0a83276e13f
Reviewed-on: https://skia-review.googlesource.com/19484
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
No behavior change here, just using the safe, non-asserting API...
Change-Id: I982079a44dad311850b383d1ef44c6f0f4d3edea
Reviewed-on: https://skia-review.googlesource.com/19486
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
This fixes some correctness issues introduced by the previous workaround in MSAA gm images. It hopefully improves performance regressions introduced in MSAA benchmarks from calling glFlush.
A comment on the workaround is updated to indicate that the original line-drop-out bug was seen on the N5 running driver 127.0. It simply showed up in different GMs that on the N7 running 127.0
Bug: skia:6755
Change-Id: Ief066fd9b223c043a80e7fe07ff13aac07a48970
Reviewed-on: https://skia-review.googlesource.com/19481
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This logically shouldn't change anything, but it does a bit:
- no diffs in 565
- sRGB and 8888 show minor diffs, only when unpremul is non-trivial
- f16 shows minor diffs all over, and major ones in shallow gradients
I think the shallow gradient diffs make sense. F16's high-precision is
being quantized down to a much narrower range (something like 10-40
values), so where the lines are drawn between sRGB bits will come down
to all sorts of things, especially rounding.
Change-Id: I156b7c613b73d6d6089221e61d0c529798ac1f9f
Reviewed-on: https://skia-review.googlesource.com/19449
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
This just cleans up an unused half->float entry point.
Change-Id: I7b869d3fd049d807453745c3cca4eab1162848d8
Reviewed-on: https://skia-review.googlesource.com/19451
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
This is an automated CL created by the recipe roller. This CL rolls recipe
changes from upstream projects (e.g. depot_tools) into downstream projects
(e.g. tools/build).
Please review the expectation changes, and LGTM+CQ.
More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
depot_tools:
https://crrev.com/59a74ed5585087e85ff4b7fa2ac18ef3648d05b0 Add cleanup dir, use with bot_update. (dnj@chromium.org)
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I9021158a90cb8ba0c939a45c2d480271506da65b
Reviewed-on: https://skia-review.googlesource.com/19099
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
SkArithmeticMode is unreachable, so delete it
Bug: skia:
Change-Id: Ibe4c48fcf756280569c4b302da8d96bd4e21b717
Reviewed-on: https://skia-review.googlesource.com/19394
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Centralize the clamping in ClampIfNeeded, and switch it to clamp_1.
Change-Id: I056ac029d3ddc81e3f0f194f2b9c9924cad4caae
Reviewed-on: https://skia-review.googlesource.com/19401
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
This was relying on TextureSampler::proxy() which crashes if the proxy is not valid.
Bug: skia:
Change-Id: I8452f5cea3a71b5ced15259aede52a44ab152cf2
Reviewed-on: https://skia-review.googlesource.com/19403
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
enables lots of code to delete
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD
Bug: skia:
Change-Id: I13631ead68a9232bd8c13c5ef54727f44def26ca
Reviewed-on: https://skia-review.googlesource.com/19278
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
A recent change broke the case where the entire bezier is inside the
loop segment.
Bug: skia:4410
Change-Id: Ib534d459eaa4461d6760e894a8826e3019584ee8
Reviewed-on: https://skia-review.googlesource.com/19333
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This began as cleaning up SkSpecialImage.h & spiraled out of control from there.
Change-Id: I9a570ecd2a7af9ee724ebfebe4e9185748f38bbc
Reviewed-on: https://skia-review.googlesource.com/19290
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Change-Id: Iaded9025a1518d8c69dbe366deb1035e0bd4295b
Reviewed-on: https://skia-review.googlesource.com/19289
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
Bug: skia:6457 skia:6401
Change-Id: I18e45617765aa55c3a2837bb735cefc3d93fad22
Reviewed-on: https://skia-review.googlesource.com/19273
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Bug: skia:
Change-Id: Ib9bd9083da1d8a9fa90ae7c710386e6903541fd5
Reviewed-on: https://skia-review.googlesource.com/18148
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Moves cubic root finding logic out of GrPathUtils and
PathOpsCubicIntersectionTest, and unifies it in SkGeometry.
"Normalizes" the homogeneous parameter values of the roots, rather
than the cubic inflection function. Does this normalization by
twiddling the exponents instead of division (which causes a loss of
precision).
Abandons the built-in derivatives in GrCubicEffect. These don't have
high enough precision on many mobile gpus. Instead we pass the KLM
matrix to the vertex shader via uniform, where we can use it to set up
new linear functionals from which the fragment shader can calculate
the gradient of the implicit function.
Bug: skia:4410
Change-Id: Ibd64e999520adc8cdef7803a492d3699995aef5a
Reviewed-on: https://skia-review.googlesource.com/19017
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>