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/tests/GLProgramsTest.cpp b/tests/GLProgramsTest.cpp
index fe17f88..13d0d2e 100644
--- a/tests/GLProgramsTest.cpp
+++ b/tests/GLProgramsTest.cpp
@@ -78,6 +78,7 @@
 
     bool dstRead = false;
     bool fragPos = false;
+    bool vertexCode = false;
     int numStages = numColorStages + numCoverageStages;
     for (int s = 0; s < numStages; ++s) {
         const GrBackendEffectFactory& factory = (*stages[s]->getEffect())->getFactory();
@@ -89,6 +90,9 @@
         if ((*stages[s]->getEffect())->willReadFragmentPosition()) {
             fragPos = true;
         }
+        if ((*stages[s]->getEffect())->hasVertexCode()) {
+            vertexCode = true;
+        }
     }
 
     if (dstRead) {
@@ -103,6 +107,11 @@
         header->fFragPosKey = 0;
     }
 
+    header->fHasVertexCode = vertexCode ||
+                             useLocalCoords ||
+                             kAttribute_ColorInput == header->fColorInput ||
+                             kAttribute_ColorInput == header->fCoverageInput;
+
     CoverageOutput coverageOutput;
     bool illegalCoverageOutput;
     do {