Revert of create and thread batch tracker object (patchset #9 id:160001 of https://codereview.chromium.org/772513002/)

Reason for revert:
Breaking linux layout test

Original issue's description:
> create and thread batch tracker object
>
> I remove the factory on the next CL
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/c3a6eb23483e5d28073b509a5f637f41660de294

TBR=bsalomon@google.com,joshualitt@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/774133003
diff --git a/include/gpu/GrTBackendProcessorFactory.h b/include/gpu/GrTBackendProcessorFactory.h
index 98b5d6c..a86fe38 100644
--- a/include/gpu/GrTBackendProcessorFactory.h
+++ b/include/gpu/GrTBackendProcessorFactory.h
@@ -41,6 +41,14 @@
      *  described in this class's comment. */
     virtual const char* name() const SK_OVERRIDE { return ProcessorClass::Name(); }
 
+
+    /** Implemented using GLProcessor::GenKey as described in this class's comment. */
+    virtual void getGLProcessorKey(const GrProcessor& processor,
+                                   const GrGLCaps& caps,
+                                   GrProcessorKeyBuilder* b) const SK_OVERRIDE {
+        GLProcessor::GenKey(processor, caps, b);
+    }
+
     /** Returns a new instance of the appropriate *GL* implementation class
         for the given GrProcessor; caller is responsible for deleting
         the object. */
@@ -69,80 +77,24 @@
  * typesafe and does not require any casting.
  */
 template <class ProcessorClass>
-class GrTBackendGeometryProcessorFactory : public GrBackendGeometryProcessorFactory {
-public:
-    typedef typename ProcessorClass::GLProcessor GLProcessor;
-
-    /** Returns a human-readable name for the processor. Implemented using GLProcessor::Name as
-     *  described in this class's comment. */
-    virtual const char* name() const SK_OVERRIDE { return ProcessorClass::Name(); }
-
-    /** Implemented using GLProcessor::GenKey as described in this class's comment. */
-    virtual void getGLProcessorKey(const GrGeometryProcessor& processor,
-                                   const GrBatchTracker& bt,
-                                   const GrGLCaps& caps,
-                                   GrProcessorKeyBuilder* b) const SK_OVERRIDE {
-        GLProcessor::GenKey(processor, bt, caps, b);
-    }
-
-
-    /** Returns a new instance of the appropriate *GL* implementation class
-        for the given GrProcessor; caller is responsible for deleting
-        the object. */
-    virtual GrGLGeometryProcessor* createGLInstance(const GrGeometryProcessor& gp,
-                                                    const GrBatchTracker& bt) const SK_OVERRIDE {
-        return SkNEW_ARGS(GLProcessor, (*this, gp, bt));
-    }
-
-    /** This class is a singleton. This function returns the single instance. */
-    static const GrBackendGeometryProcessorFactory& getInstance() {
-        static SkAlignedSTStorage<1, GrTBackendGeometryProcessorFactory> gInstanceMem;
-        static const GrTBackendGeometryProcessorFactory* gInstance;
-        if (!gInstance) {
-            gInstance = SkNEW_PLACEMENT(gInstanceMem.get(),
-                                        GrTBackendGeometryProcessorFactory);
-        }
-        return *gInstance;
-    }
+class GrTBackendGeometryProcessorFactory
+        : public GrTBackendProcessorFactory<ProcessorClass,
+                                            GrBackendGeometryProcessorFactory,
+                                            GrGeometryProcessor,
+                                            GrGLGeometryProcessor> {
 protected:
     GrTBackendGeometryProcessorFactory() {}
 };
 
 template <class ProcessorClass>
-class GrTBackendFragmentProcessorFactory : public GrBackendFragmentProcessorFactory {
-public:
-    typedef typename ProcessorClass::GLProcessor GLProcessor;
-
-    /** Returns a human-readable name for the processor. Implemented using GLProcessor::Name as
-     *  described in this class's comment. */
-    virtual const char* name() const SK_OVERRIDE { return ProcessorClass::Name(); }
-
-    /** Implemented using GLProcessor::GenKey as described in this class's comment. */
-    virtual void getGLProcessorKey(const GrFragmentProcessor& processor,
-                                   const GrGLCaps& caps,
-                                   GrProcessorKeyBuilder* b) const SK_OVERRIDE {
-        GLProcessor::GenKey(processor, caps, b);
-    }
-
-    /** Returns a new instance of the appropriate *GL* implementation class
-        for the given GrProcessor; caller is responsible for deleting
-        the object. */
-    virtual GrGLFragmentProcessor* createGLInstance(const GrFragmentProcessor& gp) const SK_OVERRIDE {
-        return SkNEW_ARGS(GLProcessor, (*this, gp));
-    }
-
-    /** This class is a singleton. This function returns the single instance. */
-    static const GrBackendFragmentProcessorFactory& getInstance() {
-        static SkAlignedSTStorage<1, GrTBackendFragmentProcessorFactory> gInstanceMem;
-        static const GrTBackendFragmentProcessorFactory* gInstance;
-        if (!gInstance) {
-            gInstance = SkNEW_PLACEMENT(gInstanceMem.get(),
-                                        GrTBackendFragmentProcessorFactory);
-        }
-        return *gInstance;
-    }
+class GrTBackendFragmentProcessorFactory
+        : public GrTBackendProcessorFactory<ProcessorClass,
+                                           GrBackendFragmentProcessorFactory,
+                                           GrFragmentProcessor,
+                                           GrGLFragmentProcessor> {
 protected:
     GrTBackendFragmentProcessorFactory() {}
 };
 
+
 #endif