Patch to create a distinct geometry processor.  The vast majority of this patch
is just a rename.  The meat is in GrGeometryProcessor, GrProcessor,
GrGL*Processor, GrProcessorStage, Gr*BackendProcessorFactory,
GrProcessUnitTestFactory, and the builders

BUG=skia:
R=bsalomon@google.com

Author: joshualitt@chromium.org

Review URL: https://codereview.chromium.org/582963002
diff --git a/tests/GLProgramsTest.cpp b/tests/GLProgramsTest.cpp
index e4d9675..a16173b 100644
--- a/tests/GLProgramsTest.cpp
+++ b/tests/GLProgramsTest.cpp
@@ -12,7 +12,7 @@
 
 #if SK_SUPPORT_GPU && SK_ALLOW_STATIC_GLOBAL_INITIALIZERS
 
-#include "GrBackendEffectFactory.h"
+#include "GrBackendProcessorFactory.h"
 #include "GrContextFactory.h"
 #include "GrOptDrawState.h"
 #include "effects/GrConfigConversionEffect.h"
@@ -22,25 +22,22 @@
 #include "SkRandom.h"
 #include "Test.h"
 
-static void get_stage_stats(const GrEffectStage stage, bool* readsDst,
+static void get_stage_stats(const GrFragmentStage stage, bool* readsDst,
                             bool* readsFragPosition, bool* requiresVertexShader) {
-    if (stage.getEffect()->willReadDstColor()) {
+    if (stage.getFragmentProcessor()->willReadDstColor()) {
         *readsDst = true;
     }
-    if (stage.getEffect()->willReadFragmentPosition()) {
+    if (stage.getProcessor()->willReadFragmentPosition()) {
         *readsFragPosition = true;
     }
-    if (stage.getEffect()->requiresVertexShader()) {
-        *requiresVertexShader = true;
-    }
 }
 
 bool GrGLProgramDesc::setRandom(SkRandom* random,
                                 GrGpuGL* gpu,
                                 const GrRenderTarget* dstRenderTarget,
                                 const GrTexture* dstCopyTexture,
-                                const GrEffectStage* geometryProcessor,
-                                const GrEffectStage* stages[],
+                                const GrGeometryStage* geometryProcessor,
+                                const GrFragmentStage* stages[],
                                 int numColorStages,
                                 int numCoverageStages,
                                 int currAttribIndex,
@@ -64,7 +61,7 @@
     bool vertexShader = SkToBool(geometryProcessor);
     int offset = 0;
     if (geometryProcessor) {
-        const GrEffectStage* stage = geometryProcessor;
+        const GrGeometryStage* stage = geometryProcessor;
         uint16_t* offsetAndSize = reinterpret_cast<uint16_t*>(fKey.begin() +
                                                               kEffectKeyOffsetsAndLengthOffset +
                                                               offset * 2 * sizeof(uint16_t));
@@ -73,20 +70,21 @@
             fKey.reset();
             return false;
         }
-        GrEffectKeyBuilder b(&fKey);
+        GrProcessorKeyBuilder b(&fKey);
         uint16_t effectKeySize;
-        if (!GetEffectKey(*stage, gpu->glCaps(), useLocalCoords, &b, &effectKeySize)) {
+        if (!GetProcessorKey(*stage, gpu->glCaps(), useLocalCoords, &b, &effectKeySize)) {
             fKey.reset();
             return false;
         }
-        get_stage_stats(*stage, &dstRead, &fragPos, &vertexShader);
+        vertexShader = true;
+        fragPos = stage->getProcessor()->willReadFragmentPosition();
         offsetAndSize[0] = effectKeyOffset;
         offsetAndSize[1] = effectKeySize;
         offset++;
     }
 
     for (int s = 0; s < numStages; ++s, ++offset) {
-        const GrEffectStage* stage = stages[s];
+        const GrFragmentStage* stage = stages[s];
         uint16_t* offsetAndSize = reinterpret_cast<uint16_t*>(fKey.begin() +
                                                               kEffectKeyOffsetsAndLengthOffset +
                                                               offset * 2 * sizeof(uint16_t));
@@ -95,9 +93,9 @@
             fKey.reset();
             return false;
         }
-        GrEffectKeyBuilder b(&fKey);
+        GrProcessorKeyBuilder b(&fKey);
         uint16_t effectKeySize;
-        if (!GetEffectKey(*stages[s], gpu->glCaps(), useLocalCoords, &b, &effectKeySize)) {
+        if (!GetProcessorKey(*stages[s], gpu->glCaps(), useLocalCoords, &b, &effectKeySize)) {
             fKey.reset();
             return false;
         }
@@ -190,8 +188,8 @@
 // than two attributes.
 GrVertexAttrib genericVertexAttribs[] = {
     { kVec2f_GrVertexAttribType, 0,   kPosition_GrVertexAttribBinding },
-    { kVec2f_GrVertexAttribType, 0,   kEffect_GrVertexAttribBinding },
-    { kVec2f_GrVertexAttribType, 0,   kEffect_GrVertexAttribBinding }
+    { kVec2f_GrVertexAttribType, 0,   kGeometryProcessor_GrVertexAttribBinding },
+    { kVec2f_GrVertexAttribType, 0,   kGeometryProcessor_GrVertexAttribBinding }
 };
 
 /*
@@ -256,37 +254,31 @@
         int numColorStages = random.nextULessThan(numStages + 1);
         int numCoverageStages = numStages - numColorStages;
 
-        SkAutoSTMalloc<8, const GrEffectStage*> stages(numStages);
+        SkAutoSTMalloc<8, const GrFragmentStage*> stages(numStages);
 
         bool usePathRendering = this->glCaps().pathRenderingSupport() && random.nextBool();
 
         GrGpu::DrawType drawType = usePathRendering ? GrGpu::kDrawPath_DrawType :
                                                       GrGpu::kDrawPoints_DrawType;
 
-        SkAutoTDelete<GrEffectStage> geometryProcessor;
+        SkAutoTDelete<GrGeometryStage> geometryProcessor;
         bool hasGeometryProcessor = usePathRendering ? false : random.nextBool();
         if (hasGeometryProcessor) {
             while (true) {
-                SkAutoTUnref<const GrEffect> effect(GrEffectTestFactory::CreateStage(
-                                                                                &random,
-                                                                                this->getContext(),
-                                                                                *this->caps(),
-                                                                                dummyTextures));
+                SkAutoTUnref<const GrGeometryProcessor> effect(
+                        GrProcessorTestFactory<GrGeometryProcessor>::CreateStage(&random, this->getContext(), *this->caps(),
+                                                         dummyTextures));
                 SkASSERT(effect);
                 // Only geometryProcessor can use vertex shader
-                if (!effect->requiresVertexShader()) {
-                    continue;
-                }
-
-                GrEffectStage* stage = SkNEW_ARGS(GrEffectStage, (effect.get()));
+                GrGeometryStage* stage = SkNEW_ARGS(GrGeometryStage, (effect.get()));
                 geometryProcessor.reset(stage);
 
                 // we have to set dummy vertex attribs
-                const GrEffect::VertexAttribArray& v = effect->getVertexAttribs();
+                const GrGeometryProcessor::VertexAttribArray& v = effect->getVertexAttribs();
                 int numVertexAttribs = v.count();
 
-                SkASSERT(GrEffect::kMaxVertexAttribs == 2 &&
-                         GrEffect::kMaxVertexAttribs >= numVertexAttribs);
+                SkASSERT(GrGeometryProcessor::kMaxVertexAttribs == 2 &&
+                         GrGeometryProcessor::kMaxVertexAttribs >= numVertexAttribs);
                 size_t runningStride = GrVertexAttribTypeSize(genericVertexAttribs[0].fType);
                 for (int i = 0; i < numVertexAttribs; i++) {
                     genericVertexAttribs[i + 1].fOffset = runningStride;
@@ -303,18 +295,14 @@
             }
         }
         for (int s = 0; s < numStages;) {
-            SkAutoTUnref<const GrEffect> effect(GrEffectTestFactory::CreateStage(
+            SkAutoTUnref<const GrFragmentProcessor> effect(
+                    GrProcessorTestFactory<GrFragmentProcessor>::CreateStage(
                                                                             &random,
                                                                             this->getContext(),
                                                                             *this->caps(),
                                                                             dummyTextures));
             SkASSERT(effect);
 
-            // Only geometryProcessor can use vertex shader
-            if (effect->requiresVertexShader()) {
-                continue;
-            }
-
             // If adding this effect would exceed the max texture coord set count then generate a
             // new random effect.
             if (usePathRendering && this->glPathRendering()->texturingMode() ==
@@ -325,7 +313,7 @@
                 }
                 currTextureCoordSet += numTransforms;
             }
-            GrEffectStage* stage = SkNEW_ARGS(GrEffectStage, (effect.get()));
+            GrFragmentStage* stage = SkNEW_ARGS(GrFragmentStage, (effect.get()));
 
             stages[s] = stage;
             ++s;