diff options
-rw-r--r-- | include/gpu/GrColorSpaceXform.h | 9 | ||||
-rw-r--r-- | src/gpu/GrColorSpaceXform.cpp | 5 | ||||
-rw-r--r-- | src/gpu/effects/GrBicubicEffect.cpp | 4 |
3 files changed, 11 insertions, 7 deletions
diff --git a/include/gpu/GrColorSpaceXform.h b/include/gpu/GrColorSpaceXform.h index ea90739fd2..177230c87c 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 f60dbcd1c0..a1e8938048 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 @@ static inline bool matrix_is_almost_identity(const SkMatrix44& m, 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 db42f35669..8439909f56 100644 --- a/src/gpu/effects/GrBicubicEffect.cpp +++ b/src/gpu/effects/GrBicubicEffect.cpp @@ -132,9 +132,7 @@ void GrGLBicubicEffect::onSetData(const GrGLSLProgramDataManager& pdman, 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()); } } |