| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright 2010 Google Inc. | 2  * Copyright 2010 Google Inc. | 
| 3  * | 3  * | 
| 4  * Use of this source code is governed by a BSD-style license that can be | 4  * Use of this source code is governed by a BSD-style license that can be | 
| 5  * found in the LICENSE file. | 5  * found in the LICENSE file. | 
| 6  */ | 6  */ | 
| 7 | 7 | 
| 8 #ifndef GrDrawTarget_DEFINED | 8 #ifndef GrDrawTarget_DEFINED | 
| 9 #define GrDrawTarget_DEFINED | 9 #define GrDrawTarget_DEFINED | 
| 10 | 10 | 
| 11 #include "GrClip.h" | 11 #include "GrClip.h" | 
| 12 #include "GrClipMaskManager.h" |  | 
| 13 #include "GrContext.h" | 12 #include "GrContext.h" | 
| 14 #include "GrPathProcessor.h" | 13 #include "GrPathProcessor.h" | 
| 15 #include "GrPrimitiveProcessor.h" | 14 #include "GrPrimitiveProcessor.h" | 
| 16 #include "GrPathRendering.h" | 15 #include "GrPathRendering.h" | 
| 17 #include "GrPipelineBuilder.h" | 16 #include "GrPipelineBuilder.h" | 
| 18 #include "GrXferProcessor.h" | 17 #include "GrXferProcessor.h" | 
| 19 | 18 | 
| 20 #include "batches/GrDrawBatch.h" | 19 #include "batches/GrDrawBatch.h" | 
| 21 | 20 | 
| 22 #include "SkClipStack.h" | 21 #include "SkClipStack.h" | 
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 98      * Together these two functions flush all queued up draws to the Gpu. | 97      * Together these two functions flush all queued up draws to the Gpu. | 
| 99      */ | 98      */ | 
| 100     void prepareBatches(GrBatchFlushState* flushState); | 99     void prepareBatches(GrBatchFlushState* flushState); | 
| 101     void drawBatches(GrBatchFlushState* flushState); | 100     void drawBatches(GrBatchFlushState* flushState); | 
| 102 | 101 | 
| 103     /** | 102     /** | 
| 104      * Gets the capabilities of the draw target. | 103      * Gets the capabilities of the draw target. | 
| 105      */ | 104      */ | 
| 106     const GrCaps* caps() const { return fGpu->caps(); } | 105     const GrCaps* caps() const { return fGpu->caps(); } | 
| 107 | 106 | 
| 108     void drawBatch(const GrPipelineBuilder&, const GrClip&, GrDrawBatch*); | 107     void drawBatch(const GrPipelineBuilder&, GrDrawContext*, const GrClip&, GrDr
     awBatch*); | 
| 109 | 108 | 
| 110     /** | 109     /** | 
| 111      * Draws path into the stencil buffer. The fill must be either even/odd or | 110      * Draws path into the stencil buffer. The fill must be either even/odd or | 
| 112      * winding (not inverse or hairline). It will respect the HW antialias flag | 111      * winding (not inverse or hairline). It will respect the HW antialias flag | 
| 113      * on the GrPipelineBuilder (if possible in the 3D API).  Note, we will neve
     r have an inverse | 112      * on the GrPipelineBuilder (if possible in the 3D API).  Note, we will neve
     r have an inverse | 
| 114      * fill with stencil path | 113      * fill with stencil path | 
| 115      */ | 114      */ | 
| 116     void stencilPath(const GrPipelineBuilder&, const GrClip&, const SkMatrix& vi
     ewMatrix, | 115     void stencilPath(const GrPipelineBuilder&, GrDrawContext*, | 
|  | 116                      const GrClip&, const SkMatrix& viewMatrix, | 
| 117                      const GrPath*, GrPathRendering::FillType); | 117                      const GrPath*, GrPathRendering::FillType); | 
| 118 | 118 | 
| 119     /** | 119     /** | 
| 120      * Clear the passed in render target. Ignores the GrPipelineBuilder and clip
     . Clears the whole | 120      * Clear the passed in render target. Ignores the GrPipelineBuilder and clip
     . Clears the whole | 
| 121      * thing if rect is nullptr, otherwise just the rect. If canIgnoreRect is se
     t then the entire | 121      * thing if rect is nullptr, otherwise just the rect. If canIgnoreRect is se
     t then the entire | 
| 122      * render target can be optionally cleared. | 122      * render target can be optionally cleared. | 
| 123      */ | 123      */ | 
| 124     void clear(const SkIRect* rect, | 124     void clear(const SkIRect* rect, | 
| 125                GrColor color, | 125                GrColor color, | 
| 126                bool canIgnoreRect, | 126                bool canIgnoreRect, | 
| 127                GrRenderTarget* renderTarget); | 127                GrDrawContext*); | 
| 128 | 128 | 
| 129     /** Discards the contents render target. */ | 129     /** Discards the contents render target. */ | 
| 130     void discard(GrRenderTarget*); | 130     void discard(GrRenderTarget*); | 
| 131 | 131 | 
| 132     /** | 132     /** | 
| 133      * Copies a pixel rectangle from one surface to another. This call may final
     ize | 133      * Copies a pixel rectangle from one surface to another. This call may final
     ize | 
| 134      * reserved vertex/index data (as though a draw call was made). The src pixe
     ls | 134      * reserved vertex/index data (as though a draw call was made). The src pixe
     ls | 
| 135      * copied are specified by srcRect. They are copied to a rect of the same | 135      * copied are specified by srcRect. They are copied to a rect of the same | 
| 136      * size in dst with top left at dstPoint. If the src rect is clipped by the | 136      * size in dst with top left at dstPoint. If the src rect is clipped by the | 
| 137      * src bounds then  pixel values in the dst rect corresponding to area clipp
     ed | 137      * src bounds then  pixel values in the dst rect corresponding to area clipp
     ed | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
| 159         GrDrawTarget* fDrawTarget; | 159         GrDrawTarget* fDrawTarget; | 
| 160         friend class GrClipMaskManager; | 160         friend class GrClipMaskManager; | 
| 161     }; | 161     }; | 
| 162 | 162 | 
| 163     const CMMAccess cmmAccess() { return CMMAccess(this); } | 163     const CMMAccess cmmAccess() { return CMMAccess(this); } | 
| 164 | 164 | 
| 165     GrAuditTrail* getAuditTrail() const { return fAuditTrail; } | 165     GrAuditTrail* getAuditTrail() const { return fAuditTrail; } | 
| 166 | 166 | 
| 167 private: | 167 private: | 
| 168     friend class GrDrawingManager; // for resetFlag & TopoSortTraits | 168     friend class GrDrawingManager; // for resetFlag & TopoSortTraits | 
|  | 169     friend class GrDrawContextPriv; // for clearStencilClip | 
| 169 | 170 | 
| 170     enum Flags { | 171     enum Flags { | 
| 171         kClosed_Flag    = 0x01,   //!< This drawTarget can't accept any more bat
     ches | 172         kClosed_Flag    = 0x01,   //!< This drawTarget can't accept any more bat
     ches | 
| 172 | 173 | 
| 173         kWasOutput_Flag = 0x02,   //!< Flag for topological sorting | 174         kWasOutput_Flag = 0x02,   //!< Flag for topological sorting | 
| 174         kTempMark_Flag  = 0x04,   //!< Flag for topological sorting | 175         kTempMark_Flag  = 0x04,   //!< Flag for topological sorting | 
| 175     }; | 176     }; | 
| 176 | 177 | 
| 177     void setFlag(uint32_t flag) { | 178     void setFlag(uint32_t flag) { | 
| 178         fFlags |= flag; | 179         fFlags |= flag; | 
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 221         const GrPipelineOptimizations& optimizations, | 222         const GrPipelineOptimizations& optimizations, | 
| 222         GrXferProcessor::DstTexture*, | 223         GrXferProcessor::DstTexture*, | 
| 223         const SkRect& batchBounds); | 224         const SkRect& batchBounds); | 
| 224 | 225 | 
| 225     void addDependency(GrDrawTarget* dependedOn); | 226     void addDependency(GrDrawTarget* dependedOn); | 
| 226 | 227 | 
| 227     // Used only by CMM. | 228     // Used only by CMM. | 
| 228     void clearStencilClip(const SkIRect&, bool insideClip, GrRenderTarget*); | 229     void clearStencilClip(const SkIRect&, bool insideClip, GrRenderTarget*); | 
| 229 | 230 | 
| 230     SkSTArray<256, SkAutoTUnref<GrBatch>, true> fBatches; | 231     SkSTArray<256, SkAutoTUnref<GrBatch>, true> fBatches; | 
| 231     SkAutoTDelete<GrClipMaskManager>            fClipMaskManager; |  | 
| 232     // The context is only in service of the clip mask manager, remove once CMM 
     doesn't need this. | 232     // The context is only in service of the clip mask manager, remove once CMM 
     doesn't need this. | 
| 233     GrContext*                                  fContext; | 233     GrContext*                                  fContext; | 
| 234     GrGpu*                                      fGpu; | 234     GrGpu*                                      fGpu; | 
| 235     GrResourceProvider*                         fResourceProvider; | 235     GrResourceProvider*                         fResourceProvider; | 
| 236     GrAuditTrail*                               fAuditTrail; | 236     GrAuditTrail*                               fAuditTrail; | 
| 237 | 237 | 
| 238     SkDEBUGCODE(int                             fDebugID;) | 238     SkDEBUGCODE(int                             fDebugID;) | 
| 239     uint32_t                                    fFlags; | 239     uint32_t                                    fFlags; | 
| 240 | 240 | 
| 241     // 'this' drawTarget relies on the output of the drawTargets in 'fDependenci
     es' | 241     // 'this' drawTarget relies on the output of the drawTargets in 'fDependenci
     es' | 
| 242     SkTDArray<GrDrawTarget*>                    fDependencies; | 242     SkTDArray<GrDrawTarget*>                    fDependencies; | 
| 243     GrRenderTarget*                             fRenderTarget; | 243     GrRenderTarget*                             fRenderTarget; | 
| 244 | 244 | 
| 245     bool                                        fClipBatchToBounds; | 245     bool                                        fClipBatchToBounds; | 
| 246     bool                                        fDrawBatchBounds; | 246     bool                                        fDrawBatchBounds; | 
| 247     int                                         fMaxBatchLookback; | 247     int                                         fMaxBatchLookback; | 
| 248     int                                         fMaxBatchLookahead; | 248     int                                         fMaxBatchLookahead; | 
| 249 | 249 | 
| 250     typedef SkRefCnt INHERITED; | 250     typedef SkRefCnt INHERITED; | 
| 251 }; | 251 }; | 
| 252 | 252 | 
| 253 #endif | 253 #endif | 
| OLD | NEW | 
|---|