GrColorSpaceInfo stores SkAlphaType.

This means GrSurfaceContext's know their alpha type.
All GrRenderTargetSurfaceContexts are kPremul.

Make GrTextureProducer store GrColorSpaceInfo.

Bug: skia:7580
Change-Id: I5ff321ef52c0edd32e5fac99dff95d44aa66f592
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223184
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/GrImageTextureMaker.cpp b/src/gpu/GrImageTextureMaker.cpp
index 0fb1cbe..64eeeee 100644
--- a/src/gpu/GrImageTextureMaker.cpp
+++ b/src/gpu/GrImageTextureMaker.cpp
@@ -5,16 +5,22 @@
  * found in the LICENSE file.
  */
 
-#include "src/gpu/GrColorSpaceXform.h"
 #include "src/gpu/GrImageTextureMaker.h"
+
+#include "src/gpu/GrColorSpaceXform.h"
 #include "src/gpu/SkGr.h"
 #include "src/gpu/effects/GrYUVtoRGBEffect.h"
 #include "src/image/SkImage_GpuYUVA.h"
 #include "src/image/SkImage_Lazy.h"
 
+static GrColorSpaceInfo make_info(const SkImage*& image) {
+    return GrColorSpaceInfo(image->alphaType(), image->refColorSpace(),
+                            SkImageInfo2GrPixelConfig(image->imageInfo()));
+}
+
 GrImageTextureMaker::GrImageTextureMaker(GrRecordingContext* context, const SkImage* client,
                                          SkImage::CachingHint chint, bool useDecal)
-        : INHERITED(context, client->width(), client->height(), client->isAlphaOnly(), useDecal)
+        : INHERITED(context, client->width(), client->height(), make_info(client), useDecal)
         , fImage(static_cast<const SkImage_Lazy*>(client))
         , fCachingHint(chint) {
     SkASSERT(client->isLazyGenerated());
@@ -36,19 +42,13 @@
     }
 }
 
-SkAlphaType GrImageTextureMaker::alphaType() const {
-    return fImage->alphaType();
-}
-SkColorSpace* GrImageTextureMaker::colorSpace() const {
-    return fImage->colorSpace();
-}
 
 /////////////////////////////////////////////////////////////////////////////////////////////////
 
 GrYUVAImageTextureMaker::GrYUVAImageTextureMaker(GrContext* context, const SkImage* client,
                                                  bool useDecal)
-    : INHERITED(context, client->width(), client->height(), client->isAlphaOnly(), useDecal)
-    , fImage(static_cast<const SkImage_GpuYUVA*>(client)) {
+        : INHERITED(context, client->width(), client->height(), make_info(client), useDecal)
+        , fImage(static_cast<const SkImage_GpuYUVA*>(client)) {
     SkASSERT(as_IB(client)->isYUVA());
     GrMakeKeyFromImageID(&fOriginalKey, client->uniqueID(),
                          SkIRect::MakeWH(this->width(), this->height()));
@@ -77,13 +77,6 @@
     }
 }
 
-SkAlphaType GrYUVAImageTextureMaker::alphaType() const {
-    return fImage->alphaType();
-}
-SkColorSpace* GrYUVAImageTextureMaker::colorSpace() const {
-    return fImage->colorSpace();
-}
-
 std::unique_ptr<GrFragmentProcessor> GrYUVAImageTextureMaker::createFragmentProcessor(
     const SkMatrix& textureMatrix,
     const SkRect& constraintRect,