[skif] Track padding around FilterResult images

FilterResult tracks what it knows about the pixels outside of its
SkSpecialImage subset now. It uses this to avoid shader-based tiling
in more scenarios.  Support is added to AutoSurface to create surfaces
with known padded buffers, although for now kUnkown is the only used.

That means that no FilterResult can trigger the kTransparent case yet,
and the only way kInitialized can come about is if a crop applies to
a FilterResult and goes through subset(). In a follow-up CL,
the PixelBoundary passed to AutoSurfaces will be adjusted so that
resolved passes will include padding. This will trigger more shader
optimizations and un-clamped shaders, as well as utilizing the
decal-as-clamp optimization in getAnalyzedShader().

Bug: b/323886079
Bug: b/323885532
Change-Id: I9052ab67da0dd9cc2e2895f2aebb761527fe5002
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/812556
Reviewed-by: James Godfrey-Kittle <jamesgk@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2 files changed