[graphite] Simplify copies and special-images around Image

Graphite's SpecialImage now wraps an SkImage directly, which
simplifies its creation logic and now allows YUVA backed images to
be wrapped as special images (which could arise if an SkImage was
wrapped in an image filter and that image were YUVA).

Copy logic had been spread out between Device, Image, and
TextureProxyView to support copies needed for the old special
image definition. This moves the copy-as-draw fallback to Image,
although the blit path has to be replicated between Device (for
non texturable surfaces) and Image. Follow-up CLs will add a
Image::MakeCopy() CL that fully consolidates copy-by-blit and
copy-as-draw and further consolidates a lot of the repeated
copy-as-draw logic in other Image and Image_YUVA API functions into
Image_Base.

Updated the copy-as-draw logic to use a scratch surface instead of
SkSurfaces::RenderTarget.

Bug: b/323887207
Change-Id: I4b75c6b1b735a67e44a2617180bf3eb153ab8595
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/833457
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: James Godfrey-Kittle <jamesgk@google.com>
11 files changed