aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrColorSpaceXform.cpp
diff options
context:
space:
mode:
authorGravatar brianosman <brianosman@google.com>2016-09-09 10:36:17 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-09-09 10:36:17 -0700
commitde68d6c4616d86621373d88100002ddfdb9c08e3 (patch)
treec3020d0d2ab8a4157beeab02fc32efc1518bb1e6 /src/gpu/GrColorSpaceXform.cpp
parent81a478ca6c36aac3e53ce0373a281ac8940f4780 (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.cpp7
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;