diff options
author | brianosman <brianosman@google.com> | 2016-09-09 10:36:17 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-09-09 10:36:17 -0700 |
commit | de68d6c4616d86621373d88100002ddfdb9c08e3 (patch) | |
tree | c3020d0d2ab8a4157beeab02fc32efc1518bb1e6 /src/gpu/GrColorSpaceXform.cpp | |
parent | 81a478ca6c36aac3e53ce0373a281ac8940f4780 (diff) |
Fix storage of gamut transform matrices in SkColorSpace
We were effectively storing the transpose, which made all of our
operations on individual colors, and our concatenation of matrices
awkward and backwards.
I'm planning to push this further into Ganesh, where I had incorrectly
adjusted to the previous layout, treating colors as row vectors in the
shaders.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2324843003
Review-Url: https://codereview.chromium.org/2324843003
Diffstat (limited to 'src/gpu/GrColorSpaceXform.cpp')
-rw-r--r-- | src/gpu/GrColorSpaceXform.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/gpu/GrColorSpaceXform.cpp b/src/gpu/GrColorSpaceXform.cpp index 8ff6fda0cb..1eb7328356 100644 --- a/src/gpu/GrColorSpaceXform.cpp +++ b/src/gpu/GrColorSpaceXform.cpp @@ -37,7 +37,8 @@ static inline bool matrix_is_almost_identity(const SkMatrix44& m, GrColorSpaceXform::GrColorSpaceXform(const SkMatrix44& srcToDst, SkAlphaType srcAlphaType) : fSrcAlphaType(srcAlphaType) { - srcToDst.asColMajorf(fSrcToDst); + // TODO: Fix this, and store things as column major! + srcToDst.asRowMajorf(fSrcToDst); } sk_sp<GrColorSpaceXform> GrColorSpaceXform::Make(SkColorSpace* src, SkColorSpace* dst, @@ -52,8 +53,8 @@ sk_sp<GrColorSpaceXform> GrColorSpaceXform::Make(SkColorSpace* src, SkColorSpace return nullptr; } - SkMatrix44 srcToDst = as_CSB(dst)->fromXYZD50(); - srcToDst.postConcat(src->toXYZD50()); + SkMatrix44 srcToDst(SkMatrix44::kUninitialized_Constructor); + srcToDst.setConcat(as_CSB(dst)->fromXYZD50(), src->toXYZD50()); if (matrix_is_almost_identity(srcToDst)) { return nullptr; |