Add SkImage::CompressionType::kBC1_RGBA8_UNORM support

This is mainly so we can test the compression code on macOS.

Bug: skia:9680
Change-Id: Ie0a2eacfe9100ee4ce4cc94c878d3032d6985832
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264480
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrProxyProvider.cpp b/src/gpu/GrProxyProvider.cpp
index f26dbfc..e772d6a 100644
--- a/src/gpu/GrProxyProvider.cpp
+++ b/src/gpu/GrProxyProvider.cpp
@@ -603,6 +603,8 @@
         return nullptr;
     }
 
+    const GrCaps* caps = this->caps();
+
     GrResourceProvider* resourceProvider = direct->priv().resourceProvider();
 
     sk_sp<GrTexture> tex = resourceProvider->wrapCompressedBackendTexture(beTex, ownership,
@@ -619,8 +621,10 @@
     // Make sure we match how we created the proxy with SkBudgeted::kNo
     SkASSERT(GrBudgetedType::kBudgeted != tex->resourcePriv().budgetedType());
 
-    // TODO: this will need to be changed for compressed RGBA formats
-    GrSwizzle texSwizzle = GrSwizzle::RGB1();
+    SkImage::CompressionType compressionType = caps->compressionType(beTex.getBackendFormat());
+
+    GrSwizzle texSwizzle = GrCompressionTypeIsOpaque(compressionType) ? GrSwizzle::RGB1()
+                                                                      : GrSwizzle::RGBA();
 
     return sk_sp<GrTextureProxy>(
         new GrTextureProxy(std::move(tex), origin, texSwizzle, UseAllocator::kNo));