Simplify color space xform storage and usage (float[] vs. SkMatrix44)

Public API is really just internal.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2185533005
TBR=bsalomon@google.com

Review-Url: https://codereview.chromium.org/2185533005
diff --git a/include/gpu/GrColorSpaceXform.h b/include/gpu/GrColorSpaceXform.h
index ea90739..177230c 100644
--- a/include/gpu/GrColorSpaceXform.h
+++ b/include/gpu/GrColorSpaceXform.h
@@ -8,24 +8,25 @@
 #ifndef GrColorSpaceXform_DEFINED
 #define GrColorSpaceXform_DEFINED
 
-#include "SkMatrix44.h"
 #include "SkRefCnt.h"
 
 class SkColorSpace;
+class SkMatrix44;
 
  /**
   * Represents a color gamut transformation (as a 4x4 color matrix)
   */
 class GrColorSpaceXform : public SkRefCnt {
 public:
-    GrColorSpaceXform(const SkMatrix44& srcToDst) : fSrcToDst(srcToDst) {}
+    GrColorSpaceXform(const SkMatrix44& srcToDst);
 
     static sk_sp<GrColorSpaceXform> Make(SkColorSpace* src, SkColorSpace* dst);
 
-    const SkMatrix44& srcToDst() { return fSrcToDst; }
+    const float* srcToDst() { return fSrcToDst; }
 
 private:
-    SkMatrix44 fSrcToDst;
+    // We store the column-major form of the srcToDst matrix, for easy uploading to uniforms
+    float fSrcToDst[16];
 };
 
 #endif
diff --git a/src/gpu/GrColorSpaceXform.cpp b/src/gpu/GrColorSpaceXform.cpp
index f60dbcd..a1e8938 100644
--- a/src/gpu/GrColorSpaceXform.cpp
+++ b/src/gpu/GrColorSpaceXform.cpp
@@ -7,6 +7,7 @@
 
 #include "GrColorSpaceXform.h"
 #include "SkColorSpace.h"
+#include "SkMatrix44.h"
 
 static inline bool sk_float_almost_equals(float x, float y, float tol) {
     return sk_float_abs(x - y) <= tol;
@@ -33,6 +34,10 @@
         sk_float_almost_equals(m.getFloat(3, 3), 1.0f, tol);
 }
 
+GrColorSpaceXform::GrColorSpaceXform(const SkMatrix44& srcToDst) {
+    srcToDst.asColMajorf(fSrcToDst);
+}
+
 sk_sp<GrColorSpaceXform> GrColorSpaceXform::Make(SkColorSpace* src, SkColorSpace* dst) {
     if (!src || !dst) {
         // Invalid
diff --git a/src/gpu/effects/GrBicubicEffect.cpp b/src/gpu/effects/GrBicubicEffect.cpp
index db42f35..8439909 100644
--- a/src/gpu/effects/GrBicubicEffect.cpp
+++ b/src/gpu/effects/GrBicubicEffect.cpp
@@ -132,9 +132,7 @@
     pdman.setMatrix4f(fCoefficientsUni, bicubicEffect.coefficients());
     fDomain.setData(pdman, bicubicEffect.domain(), texture.origin());
     if (SkToBool(bicubicEffect.colorSpaceXform())) {
-        float xformMatrix[16];
-        bicubicEffect.colorSpaceXform()->srcToDst().asColMajorf(xformMatrix);
-        pdman.setMatrix4f(fColorSpaceXformUni, xformMatrix);
+        pdman.setMatrix4f(fColorSpaceXformUni, bicubicEffect.colorSpaceXform()->srcToDst());
     }
 }