Move VertexBuilder to a GrGLFullShaderBuilder subclass

Removes the VertexBuilder nested class from GrGLShaderBuilder in favor
of a new GrGLFullShaderBuilder subclass, and adds an optional emitCode
overload to GrGLEffect that takes a GrGLFullShaderBuilder. Makes
setData virtual in GrGLEffectArray and adds a GrGLVertexEffectArray
subclass that gets built using a GrGLFullShaderBuilder. Also adds a
new GrGLVertexEffect subclass that makes the GrGLFullShaderBuilder
overload required for emitCode, and updates GrGLEffects to inherit
from GrGLVertexEffect where needed.

R=bsalomon@google.com

Author: cdalton@nvidia.com

Review URL: https://codereview.chromium.org/25474006

git-svn-id: http://skia.googlecode.com/svn/trunk@11612 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/gl/GrGLProgramDesc.h b/src/gpu/gl/GrGLProgramDesc.h
index e160438..0c7c8cf 100644
--- a/src/gpu/gl/GrGLProgramDesc.h
+++ b/src/gpu/gl/GrGLProgramDesc.h
@@ -113,6 +113,17 @@
         kColorInputCnt
     };
 
+    static GrSLConstantVec KnownColorInputValue(ColorInput ci) {
+        switch (ci) {
+            case GrGLProgramDesc::kTransBlack_ColorInput:
+                return kZeros_GrSLConstantVec;
+            case GrGLProgramDesc::kSolidWhite_ColorInput:
+                return kOnes_GrSLConstantVec;
+            default:
+                return kNone_GrSLConstantVec;
+        }
+    }
+
     enum CoverageOutput {
         // modulate color and coverage, write result as the color output.
         kModulate_CoverageOutput,
@@ -221,6 +232,7 @@
     // code generation to GrGLShaderBuilder (and maybe add getters rather than friending).
     friend class GrGLProgram;
     friend class GrGLShaderBuilder;
+    friend class GrGLFullShaderBuilder;
 };
 
 #endif