Allow one-pass SkWuffsCodec decoding
Allow one-pass SkWuffsCodec decoding

Prior to this commit, SkWuffsCodec always used what this commit calls
two pass decoding. After this commit, it can sometimes use one pass
decoding, which means we don't have to allocate that intermediate pixel
buffer. For the "droids.gif" example mentioned in a recent commit,
39da10b5 "Optimize SkWuffsCodec pixbuf zero-initialization", this means
that we allocate 19 MB less than we used to (2560 width x 1920 height x
4 bytes per pixel = 19660800 bytes).

Continuing with "droids.gif" and the image_decode_bench program from
39da10b5, the time taken per decode drops from 35.627ms to 28.655ms.

Bug: chromium:1023191
Bug: chromium:1023129
Bug: skia:8235
Change-Id: Ic4fd6bd2856493eaf777416326f39198aa8d97c1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255956
Commit-Queue: Leon Scroggins <995cad867ca30d6399abe011583a53547c8afea1@google.com>
Reviewed-by: Leon Scroggins <995cad867ca30d6399abe011583a53547c8afea1@google.com>

aosp-mirror/platform_external_skia,aosp-mirror/platform_external_skia,HalCanary/skia-hc,aosp-mirror/platform_external_skia,HalCanary/skia-hc,aosp-mirror/platform_external_skia,google/skia,google/skia,aosp-mirror/platform_external_skia,google/skia,aosp-mirror/platform_external_skia,google/skia,HalCanary/skia-hc,google/skia,HalCanary/skia-hc,google/skia,HalCanary/skia-hc,HalCanary/skia-hc,HalCanary/skia-hc,aosp-mirror/platform_external_skia,google/skia,aosp-mirror/platform_external_skia,HalCanary/skia-hc,google/skia,google/skia,aosp-mirror/platform_external_skia,aosp-mirror/platform_external_skia,HalCanary/skia-hc,google/skia,HalCanary/skia-hc