aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/glsl/GrGLSLColorSpaceXformHelper.h
diff options
context:
space:
mode:
authorGravatar brianosman <brianosman@google.com>2016-09-07 08:09:10 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-09-07 08:09:10 -0700
commit77320dbabcddf05c0a1489eaf1f496729dc8de0e (patch)
tree6dce3ee85d2206685279217db47e66dd47839e43 /src/gpu/glsl/GrGLSLColorSpaceXformHelper.h
parentd2e39dbc6a68a6cc2a480d0c8082eb204f6b6e77 (diff)
Add color gamut xform helpers to GrGLSLShaderBuilder
New helper functions inject the necessary shader function. Texture lookup functions can now insert the gamut xform at the appropriate place, too. As written, could be used to transform non-texture colors (e.g. vertex colors) as well. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2180803005 Review-Url: https://codereview.chromium.org/2180803005
Diffstat (limited to 'src/gpu/glsl/GrGLSLColorSpaceXformHelper.h')
-rw-r--r--src/gpu/glsl/GrGLSLColorSpaceXformHelper.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/gpu/glsl/GrGLSLColorSpaceXformHelper.h b/src/gpu/glsl/GrGLSLColorSpaceXformHelper.h
index 940be57126..cd516e8c89 100644
--- a/src/gpu/glsl/GrGLSLColorSpaceXformHelper.h
+++ b/src/gpu/glsl/GrGLSLColorSpaceXformHelper.h
@@ -8,12 +8,13 @@
#ifndef GrGLSLColorSpaceXformHelper_DEFINED
#define GrGLSLColorSpaceXformHelper_DEFINED
+#include "GrColorSpaceXform.h"
#include "GrGLSLUniformHandler.h"
-class GrColorSpaceXform;
-
/**
* Stack helper class to assist with using GrColorSpaceXform within an FP's emitCode function.
+ * This injects the uniform declaration, and stores the information needed to generate correct
+ * gamut-transformation shader code.
*/
class GrGLSLColorSpaceXformHelper : public SkNoncopyable {
public:
@@ -25,15 +26,18 @@ public:
*handle = uniformHandler->addUniform(kFragment_GrShaderFlag, kMat44f_GrSLType,
kDefault_GrSLPrecision, "ColorXform",
&fXformMatrix);
+ fAlphaType = colorSpaceXform->alphaType();
} else {
fXformMatrix = nullptr;
}
}
const char* getXformMatrix() const { return fXformMatrix; }
+ SkAlphaType alphaType() const { return fAlphaType; }
private:
const char* fXformMatrix;
+ SkAlphaType fAlphaType;
};
#endif