Use vertexless shaders when NVpr is available

Adds support for vertexless shaders and enables them when
NV_path_rendering is available. This takes a
GrGLFragmentOnlyShaderBuilder class, a GrGLTexGenEffectArray class,
support for setting TexGen and the projection matrix in GrGpuGL, and
code for setting the GL fixed function state where necessary.

R=bsalomon@google.com, kkinnunen@nvidia.com

Author: cdalton@nvidia.com

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

git-svn-id: http://skia.googlecode.com/svn/trunk@11620 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/gl/GrGLProgram.h b/src/gpu/gl/GrGLProgram.h
index c8bcbf4..23ed456 100644
--- a/src/gpu/gl/GrGLProgram.h
+++ b/src/gpu/gl/GrGLProgram.h
@@ -62,6 +62,8 @@
      */
     GrGLuint programID() const { return fProgramID; }
 
+    bool hasVertexShader() const { return fHasVertexShader; }
+
     /**
      * Some GL state that is relevant to programs is not stored per-program. In particular color
      * and coverage attributes can be global state. This struct is read and updated by
@@ -160,7 +162,9 @@
      * This is the heavy initialization routine for building a GLProgram. colorStages and
      * coverageStages correspond to the output of GrGLProgramDesc::Build().
      */
-    bool genProgram(const GrEffectStage* colorStages[], const GrEffectStage* coverageStages[]);
+    bool genProgram(GrGLShaderBuilder* builder,
+                    const GrEffectStage* colorStages[],
+                    const GrEffectStage* coverageStages[]);
 
     // Sets the texture units for samplers
     void initSamplerUniforms();
@@ -195,6 +199,9 @@
     GrGLUniformManager                fUniformManager;
     UniformHandles                    fUniformHandles;
 
+    bool                              fHasVertexShader;
+    int                               fNumTexCoordSets;
+
     typedef SkRefCnt INHERITED;
 };