Add SkImage::MakeRasterFromCompressed and make MakeFromCompressed fall back to decompression for unsupported compression types (take 2)

This is intended to make using compressed textures easier since developers can just provided compressed data and it will be uploaded to the GPU in some way, shape or form.


TBR=reed@google.com
Change-Id: I8c672ccc7db5cd098f629c3469ae7cbdc7436392
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266939
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrSurface.cpp b/src/gpu/GrSurface.cpp
index b876991..fe93a3f 100644
--- a/src/gpu/GrSurface.cpp
+++ b/src/gpu/GrSurface.cpp
@@ -8,6 +8,7 @@
 #include "include/gpu/GrContext.h"
 #include "include/gpu/GrSurface.h"
 #include "include/gpu/GrTexture.h"
+#include "src/core/SkCompressedDataUtils.h"
 #include "src/gpu/GrRenderTarget.h"
 #include "src/gpu/GrResourceProvider.h"
 #include "src/gpu/GrSurfacePriv.h"
@@ -35,7 +36,8 @@
 
     SkImage::CompressionType compressionType = caps.compressionType(format);
     if (compressionType != SkImage::CompressionType::kNone) {
-        colorSize = GrCompressedFormatDataSize(compressionType, dimensions, mipMapped);
+        colorSize = SkCompressedFormatDataSize(compressionType, dimensions,
+                                               mipMapped == GrMipMapped::kYes);
     } else {
         colorSize = (size_t)dimensions.width() * dimensions.height() * caps.bytesPerPixel(format);
     }