| Index: include/gpu/GrTBackendProcessorFactory.h
|
| diff --git a/include/gpu/GrTBackendProcessorFactory.h b/include/gpu/GrTBackendProcessorFactory.h
|
| index a86fe38d92ea40367c9f78009e44579bc4a358ed..98b5d6cb7e89239a18576a1fe6544507a304d82d 100644
|
| --- a/include/gpu/GrTBackendProcessorFactory.h
|
| +++ b/include/gpu/GrTBackendProcessorFactory.h
|
| @@ -41,14 +41,6 @@ public:
|
| * 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. */
|
| @@ -77,24 +69,80 @@ protected:
|
| * typesafe and does not require any casting.
|
| */
|
| template <class ProcessorClass>
|
| -class GrTBackendGeometryProcessorFactory
|
| - : public GrTBackendProcessorFactory<ProcessorClass,
|
| - GrBackendGeometryProcessorFactory,
|
| - GrGeometryProcessor,
|
| - GrGLGeometryProcessor> {
|
| +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;
|
| + }
|
| protected:
|
| GrTBackendGeometryProcessorFactory() {}
|
| };
|
|
|
| template <class ProcessorClass>
|
| -class GrTBackendFragmentProcessorFactory
|
| - : public GrTBackendProcessorFactory<ProcessorClass,
|
| - GrBackendFragmentProcessorFactory,
|
| - GrFragmentProcessor,
|
| - GrGLFragmentProcessor> {
|
| +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;
|
| + }
|
| protected:
|
| GrTBackendFragmentProcessorFactory() {}
|
| };
|
|
|
| -
|
| #endif
|
|
|