| Index: include/gpu/GrXferProcessor.h
 | 
| diff --git a/include/gpu/GrXferProcessor.h b/include/gpu/GrXferProcessor.h
 | 
| index 812a9b32ab353ec8f6172bf701a77042e2cc02bc..85e5aa04ed935e9d99e819be55ae8a805d521105 100644
 | 
| --- a/include/gpu/GrXferProcessor.h
 | 
| +++ b/include/gpu/GrXferProcessor.h
 | 
| @@ -104,47 +104,6 @@
 | 
|  class GrXferProcessor : public GrProcessor {
 | 
|  public:
 | 
|      /**
 | 
| -     * A texture that contains the dst pixel values and an integer coord offset from device space
 | 
| -     * to the space of the texture. Depending on GPU capabilities a DstTexture may be used by a
 | 
| -     * GrXferProcessor for blending in the fragment shader.
 | 
| -     */
 | 
| -    class DstTexture {
 | 
| -    public:
 | 
| -        DstTexture() { fOffset.set(0, 0); }
 | 
| -
 | 
| -        DstTexture(const DstTexture& other) {
 | 
| -            *this = other;
 | 
| -        }
 | 
| -
 | 
| -        DstTexture(GrTexture* texture, const SkIPoint& offset)
 | 
| -            : fTexture(SkSafeRef(texture))
 | 
| -            , fOffset(offset) {
 | 
| -        }
 | 
| -
 | 
| -        DstTexture& operator=(const DstTexture& other) {
 | 
| -            fTexture.reset(SkSafeRef(other.fTexture.get()));
 | 
| -            fOffset = other.fOffset;
 | 
| -            return *this;
 | 
| -        }
 | 
| -
 | 
| -        const SkIPoint& offset() const { return fOffset; }
 | 
| -
 | 
| -        void setOffset(const SkIPoint& offset) { fOffset = offset; }
 | 
| -        void setOffset(int ox, int oy) { fOffset.set(ox, oy); }
 | 
| -
 | 
| -        GrTexture* texture() const { return fTexture.get(); }
 | 
| -
 | 
| -        GrTexture* setTexture(GrTexture* texture) {
 | 
| -            fTexture.reset(SkSafeRef(texture));
 | 
| -            return texture;
 | 
| -        }
 | 
| -
 | 
| -    private:
 | 
| -        SkAutoTUnref<GrTexture> fTexture;
 | 
| -        SkIPoint                fOffset;
 | 
| -    };
 | 
| -
 | 
| -    /**
 | 
|       * Sets a unique key on the GrProcessorKeyBuilder calls onGetGLProcessorKey(...) to get the
 | 
|       * specific subclass's key.
 | 
|       */ 
 | 
| @@ -240,15 +199,15 @@
 | 
|       * shader. If the returned texture is NULL then the XP is either not reading the dst or we have
 | 
|       * extentions that support framebuffer fetching and thus don't need a copy of the dst texture.
 | 
|       */
 | 
| -    const GrTexture* getDstTexture() const { return fDstTexture.getTexture(); }
 | 
| -
 | 
| -    /**
 | 
| -     * Returns the offset in device coords to use when accessing the dst texture to get the dst
 | 
| -     * pixel color in the shader. This value is only valid if getDstTexture() != NULL.
 | 
| -     */
 | 
| -    const SkIPoint& dstTextureOffset() const {
 | 
| -        SkASSERT(this->getDstTexture());
 | 
| -        return fDstTextureOffset;
 | 
| +    const GrTexture* getDstCopyTexture() const { return fDstCopy.getTexture(); }
 | 
| +
 | 
| +    /**
 | 
| +     * Returns the offset into the DstCopyTexture to use when reading it in the shader. This value
 | 
| +     * is only valid if getDstCopyTexture() != NULL.
 | 
| +     */
 | 
| +    const SkIPoint& dstCopyTextureOffset() const {
 | 
| +        SkASSERT(this->getDstCopyTexture());
 | 
| +        return fDstCopyTextureOffset;
 | 
|      }
 | 
|  
 | 
|      /**
 | 
| @@ -279,10 +238,10 @@
 | 
|          if (this->fReadsCoverage != that.fReadsCoverage) {
 | 
|              return false;
 | 
|          }
 | 
| -        if (this->fDstTexture.getTexture() != that.fDstTexture.getTexture()) {
 | 
| -            return false;
 | 
| -        }
 | 
| -        if (this->fDstTextureOffset != that.fDstTextureOffset) {
 | 
| +        if (this->fDstCopy.getTexture() != that.fDstCopy.getTexture()) {
 | 
| +            return false;
 | 
| +        }
 | 
| +        if (this->fDstCopyTextureOffset != that.fDstCopyTextureOffset) {
 | 
|              return false;
 | 
|          }
 | 
|          return this->onIsEqual(that);
 | 
| @@ -290,7 +249,7 @@
 | 
|     
 | 
|  protected:
 | 
|      GrXferProcessor();
 | 
| -    GrXferProcessor(const DstTexture*, bool willReadDstColor);
 | 
| +    GrXferProcessor(const GrDeviceCoordTexture* dstCopy, bool willReadDstColor);
 | 
|  
 | 
|  private:
 | 
|      virtual OptFlags onGetOptimizations(const GrProcOptInfo& colorPOI,
 | 
| @@ -327,8 +286,8 @@
 | 
|  
 | 
|      bool                    fWillReadDstColor;
 | 
|      bool                    fReadsCoverage;
 | 
| -    SkIPoint                fDstTextureOffset;
 | 
| -    GrTextureAccess         fDstTexture;
 | 
| +    SkIPoint                fDstCopyTextureOffset;
 | 
| +    GrTextureAccess         fDstCopy;
 | 
|  
 | 
|      typedef GrFragmentProcessor INHERITED;
 | 
|  };
 | 
| @@ -350,10 +309,9 @@
 | 
|   */
 | 
|  class GrXPFactory : public SkRefCnt {
 | 
|  public:
 | 
| -    typedef GrXferProcessor::DstTexture DstTexture;
 | 
|      GrXferProcessor* createXferProcessor(const GrProcOptInfo& colorPOI,
 | 
|                                           const GrProcOptInfo& coveragePOI,
 | 
| -                                         const DstTexture*,
 | 
| +                                         const GrDeviceCoordTexture* dstCopy,
 | 
|                                           const GrCaps& caps) const;
 | 
|  
 | 
|      /**
 | 
| @@ -377,8 +335,8 @@
 | 
|      virtual void getInvariantOutput(const GrProcOptInfo& colorPOI, const GrProcOptInfo& coveragePOI,
 | 
|                                      InvariantOutput*) const = 0;
 | 
|  
 | 
| -    bool willNeedDstTexture(const GrCaps& caps, const GrProcOptInfo& colorPOI,
 | 
| -                            const GrProcOptInfo& coveragePOI) const;
 | 
| +    bool willNeedDstCopy(const GrCaps& caps, const GrProcOptInfo& colorPOI,
 | 
| +                         const GrProcOptInfo& coveragePOI) const;
 | 
|  
 | 
|      bool isEqual(const GrXPFactory& that) const {
 | 
|          if (this->classID() != that.classID()) {
 | 
| @@ -408,7 +366,7 @@
 | 
|      virtual GrXferProcessor* onCreateXferProcessor(const GrCaps& caps,
 | 
|                                                     const GrProcOptInfo& colorPOI,
 | 
|                                                     const GrProcOptInfo& coveragePOI,
 | 
| -                                                   const DstTexture*) const = 0;
 | 
| +                                                   const GrDeviceCoordTexture* dstCopy) const = 0;
 | 
|      /**
 | 
|       *  Returns true if the XP generated by this factory will explicitly read dst in the fragment
 | 
|       *  shader.
 | 
| 
 |