| Index: include/gpu/effects/GrPorterDuffXferProcessor.h
 | 
| diff --git a/include/gpu/effects/GrPorterDuffXferProcessor.h b/include/gpu/effects/GrPorterDuffXferProcessor.h
 | 
| index e47ec1e9048b9d3cd4de3863362a69cdcfce7853..80e8ef65735ab48ff4913c719adc52f25fc35e7f 100644
 | 
| --- a/include/gpu/effects/GrPorterDuffXferProcessor.h
 | 
| +++ b/include/gpu/effects/GrPorterDuffXferProcessor.h
 | 
| @@ -12,105 +12,8 @@
 | 
|  #include "GrXferProcessor.h"
 | 
|  #include "SkXfermode.h"
 | 
|  
 | 
| -class GrDrawTargetCaps;
 | 
|  class GrProcOptInfo;
 | 
|  
 | 
| -class GrPorterDuffXferProcessor : public GrXferProcessor {
 | 
| -public:
 | 
| -    static GrXferProcessor* Create(GrBlendCoeff srcBlend, GrBlendCoeff dstBlend,
 | 
| -                                   GrColor constant, const GrDeviceCoordTexture* dstCopy,
 | 
| -                                   bool willReadDstColor) {
 | 
| -        return SkNEW_ARGS(GrPorterDuffXferProcessor, (srcBlend, dstBlend, constant, dstCopy,
 | 
| -                                                      willReadDstColor));
 | 
| -    }
 | 
| -
 | 
| -    ~GrPorterDuffXferProcessor() SK_OVERRIDE;
 | 
| -
 | 
| -    const char* name() const SK_OVERRIDE { return "Porter Duff"; }
 | 
| -
 | 
| -    GrGLXferProcessor* createGLInstance() const SK_OVERRIDE;
 | 
| -
 | 
| -    bool hasSecondaryOutput() const SK_OVERRIDE;
 | 
| -
 | 
| -    ///////////////////////////////////////////////////////////////////////////
 | 
| -    /// @name Stage Output Types
 | 
| -    ////
 | 
| -
 | 
| -    enum PrimaryOutputType {
 | 
| -        kNone_PrimaryOutputType,
 | 
| -        kColor_PrimaryOutputType,
 | 
| -        kCoverage_PrimaryOutputType,
 | 
| -        // Modulate color and coverage, write result as the color output.
 | 
| -        kModulate_PrimaryOutputType,
 | 
| -    };
 | 
| -
 | 
| -    enum SecondaryOutputType {
 | 
| -        // There is no secondary output
 | 
| -        kNone_SecondaryOutputType,
 | 
| -        // Writes coverage as the secondary output. Only set if dual source blending is supported
 | 
| -        // and primary output is kModulate.
 | 
| -        kCoverage_SecondaryOutputType,
 | 
| -        // Writes coverage * (1 - colorA) as the secondary output. Only set if dual source blending
 | 
| -        // is supported and primary output is kModulate.
 | 
| -        kCoverageISA_SecondaryOutputType,
 | 
| -        // Writes coverage * (1 - colorRGBA) as the secondary output. Only set if dual source
 | 
| -        // blending is supported and primary output is kModulate.
 | 
| -        kCoverageISC_SecondaryOutputType,
 | 
| -
 | 
| -        kSecondaryOutputTypeCnt,
 | 
| -    };
 | 
| -
 | 
| -    PrimaryOutputType primaryOutputType() const { return fPrimaryOutputType; }
 | 
| -    SecondaryOutputType secondaryOutputType() const { return fSecondaryOutputType; }
 | 
| -
 | 
| -    GrXferProcessor::OptFlags getOptimizations(const GrProcOptInfo& colorPOI,
 | 
| -                                               const GrProcOptInfo& coveragePOI,
 | 
| -                                               bool doesStencilWrite,
 | 
| -                                               GrColor* overrideColor,
 | 
| -                                               const GrDrawTargetCaps& caps) SK_OVERRIDE;
 | 
| -
 | 
| -    void getBlendInfo(GrXferProcessor::BlendInfo* blendInfo) const SK_OVERRIDE {
 | 
| -        blendInfo->fSrcBlend = fSrcBlend;
 | 
| -        blendInfo->fDstBlend = fDstBlend;
 | 
| -        blendInfo->fBlendConstant = fBlendConstant;
 | 
| -    }
 | 
| -
 | 
| -private:
 | 
| -    GrPorterDuffXferProcessor(GrBlendCoeff srcBlend, GrBlendCoeff dstBlend, GrColor constant,
 | 
| -                              const GrDeviceCoordTexture* dstCopy, bool willReadDstColor);
 | 
| -
 | 
| -    void onGetGLProcessorKey(const GrGLCaps& caps, GrProcessorKeyBuilder* b) const SK_OVERRIDE;
 | 
| -
 | 
| -    bool onIsEqual(const GrXferProcessor& xpBase) const SK_OVERRIDE {
 | 
| -        const GrPorterDuffXferProcessor& xp = xpBase.cast<GrPorterDuffXferProcessor>();
 | 
| -        if (fSrcBlend != xp.fSrcBlend ||
 | 
| -            fDstBlend != xp.fDstBlend ||
 | 
| -            fBlendConstant != xp.fBlendConstant ||
 | 
| -            fPrimaryOutputType != xp.fPrimaryOutputType || 
 | 
| -            fSecondaryOutputType != xp.fSecondaryOutputType) {
 | 
| -            return false;
 | 
| -        }
 | 
| -        return true;
 | 
| -    }
 | 
| -
 | 
| -    GrXferProcessor::OptFlags internalGetOptimizations(const GrProcOptInfo& colorPOI,
 | 
| -                                                       const GrProcOptInfo& coveragePOI,
 | 
| -                                                       bool doesStencilWrite);
 | 
| -
 | 
| -    void calcOutputTypes(GrXferProcessor::OptFlags blendOpts, const GrDrawTargetCaps& caps,
 | 
| -                         bool hasSolidCoverage);
 | 
| -
 | 
| -    GrBlendCoeff fSrcBlend;
 | 
| -    GrBlendCoeff fDstBlend;
 | 
| -    GrColor      fBlendConstant;
 | 
| -    PrimaryOutputType fPrimaryOutputType;
 | 
| -    SecondaryOutputType fSecondaryOutputType;
 | 
| -
 | 
| -    typedef GrXferProcessor INHERITED;
 | 
| -};
 | 
| -
 | 
| -///////////////////////////////////////////////////////////////////////////////
 | 
| -
 | 
|  class GrPorterDuffXPFactory : public GrXPFactory {
 | 
|  public:
 | 
|      static GrXPFactory* Create(SkXfermode::Mode mode); 
 | 
| 
 |