Infrastructure for new Ganesh shader pipeline: base classes for GPU
implementation of user-defined effects.
http://codereview.appspot.com/6052047/
git-svn-id: http://skia.googlecode.com/svn/trunk@3726 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/gl/GrGLSL.cpp b/src/gpu/gl/GrGLSL.cpp
index e933ee8..21dd940 100644
--- a/src/gpu/gl/GrGLSL.cpp
+++ b/src/gpu/gl/GrGLSL.cpp
@@ -75,8 +75,30 @@
const char* nameIfDeclared,
GrGLShaderVar* var) {
bool declaredOutput = k110_GrGLSLGeneration != gen;
- var->set(GrGLShaderVar::kVec4f_Type,
+ var->set(kVec4f_GrSLType,
GrGLShaderVar::kOut_TypeModifier,
declaredOutput ? nameIfDeclared : "gl_FragColor");
return declaredOutput;
}
+
+GrSLType GrSLFloatVectorType (int count) {
+ GR_STATIC_ASSERT(kFloat_GrSLType == 0);
+ GR_STATIC_ASSERT(kVec2f_GrSLType == 1);
+ GR_STATIC_ASSERT(kVec3f_GrSLType == 2);
+ GR_STATIC_ASSERT(kVec4f_GrSLType == 3);
+ GrAssert(count > 0 && count <= 4);
+ return (GrSLType)(count - 1);
+}
+
+const char* GrGLSLVectorHomogCoord(int count) {
+ static const char* HOMOGS[] = {"ERROR", "", ".y", ".z", ".w"};
+ GrAssert(count >= 1 && count < (int)GR_ARRAY_COUNT(HOMOGS));
+ return HOMOGS[count];
+}
+
+const char* GrGLSLVectorNonhomogCoords(int count) {
+ static const char* NONHOMOGS[] = {"ERROR", "", ".x", ".xy", ".xyz"};
+ GrAssert(count >= 1 && count < (int)GR_ARRAY_COUNT(NONHOMOGS));
+ return NONHOMOGS[count];
+}
+