Reland "Build CPU mipmaps with a series of draws"

This is a reland of commit 8784dd80e0cc355bfe6aa6b8fd7f087f190852bd

Original change's description:
> Build CPU mipmaps with a series of draws
>
> Much less code (~20k less), and supports all color types.
>
> This doesn't have the triangle-filter fix for odd sizes, so we will lose
> a row/column of pixels at times. (Some GL implementations have this same
> bug). One impact of building mips like this is that we could switch to
> cubic filtering if we wanted -- that would fix the odd size issue, and
> let us generate sharper mips.
>
> Performance is slightly worse for some common cases, but nowhere near as
> bad as I feared. (And slightly better in a few cases, too).
>
> Bug: skia:13657
> Change-Id: If1c9e98812cd32a99d07085b36bc3e0dbce556b3
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/596118
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

Bug: skia:13657
Change-Id: Ie342c3435b6750e3141436e3aae2185bdbf483aa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/596976
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
3 files changed