Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(282)

Side by Side Diff: src/gpu/GrClipMaskManager.h

Issue 858343002: Rename GrOptDrawState to GrPipeline and GrDrawState to GrPipelineBuilder (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: more nits Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/GrBitmapTextContext.cpp ('k') | src/gpu/GrClipMaskManager.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 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 #ifndef GrClipMaskManager_DEFINED 7 #ifndef GrClipMaskManager_DEFINED
8 #define GrClipMaskManager_DEFINED 8 #define GrClipMaskManager_DEFINED
9 9
10 #include "GrClipMaskCache.h" 10 #include "GrClipMaskCache.h"
11 #include "GrContext.h" 11 #include "GrContext.h"
12 #include "GrDrawState.h" 12 #include "GrPipelineBuilder.h"
13 #include "GrReducedClip.h" 13 #include "GrReducedClip.h"
14 #include "GrStencil.h" 14 #include "GrStencil.h"
15 #include "GrTexture.h" 15 #include "GrTexture.h"
16 #include "SkClipStack.h" 16 #include "SkClipStack.h"
17 #include "SkDeque.h" 17 #include "SkDeque.h"
18 #include "SkPath.h" 18 #include "SkPath.h"
19 #include "SkRefCnt.h" 19 #include "SkRefCnt.h"
20 #include "SkTLList.h" 20 #include "SkTLList.h"
21 #include "SkTypes.h" 21 #include "SkTypes.h"
22 22
(...skipping 18 matching lines...) Expand all
41 , fClipMode(kIgnoreClip_StencilClipMode) { 41 , fClipMode(kIgnoreClip_StencilClipMode) {
42 } 42 }
43 43
44 /** 44 /**
45 * Creates a clip mask if necessary as a stencil buffer or alpha texture 45 * Creates a clip mask if necessary as a stencil buffer or alpha texture
46 * and sets the GrGpu's scissor and stencil state. If the return is false 46 * and sets the GrGpu's scissor and stencil state. If the return is false
47 * then the draw can be skipped. The AutoRestoreEffects is initialized by 47 * then the draw can be skipped. The AutoRestoreEffects is initialized by
48 * the manager when it must install additional effects to implement the 48 * the manager when it must install additional effects to implement the
49 * clip. devBounds is optional but can help optimize clipping. 49 * clip. devBounds is optional but can help optimize clipping.
50 */ 50 */
51 bool setupClipping(GrDrawState*, 51 bool setupClipping(GrPipelineBuilder*,
52 GrDrawState::AutoRestoreEffects*, 52 GrPipelineBuilder::AutoRestoreEffects*,
53 GrDrawState::AutoRestoreStencil*, 53 GrPipelineBuilder::AutoRestoreStencil*,
54 GrScissorState*, 54 GrScissorState*,
55 const GrClipData* clipDataIn, 55 const GrClipData* clipDataIn,
56 const SkRect* devBounds); 56 const SkRect* devBounds);
57 57
58 /** 58 /**
59 * Purge resources to free up memory. TODO: This class shouldn't hold any lo ng lived refs 59 * Purge resources to free up memory. TODO: This class shouldn't hold any lo ng lived refs
60 * which will allow ResourceCache2 to automatically purge anything this clas s has created. 60 * which will allow ResourceCache2 to automatically purge anything this clas s has created.
61 */ 61 */
62 void purgeResources(); 62 void purgeResources();
63 63
(...skipping 23 matching lines...) Expand all
87 kModifyClip_StencilClipMode, 87 kModifyClip_StencilClipMode,
88 // Clip against the existing representation of the clip in the high bit 88 // Clip against the existing representation of the clip in the high bit
89 // of the stencil buffer. 89 // of the stencil buffer.
90 kRespectClip_StencilClipMode, 90 kRespectClip_StencilClipMode,
91 // Neither writing to nor clipping against the clip bit. 91 // Neither writing to nor clipping against the clip bit.
92 kIgnoreClip_StencilClipMode, 92 kIgnoreClip_StencilClipMode,
93 }; 93 };
94 94
95 // Attempts to install a series of coverage effects to implement the clip. R eturn indicates 95 // Attempts to install a series of coverage effects to implement the clip. R eturn indicates
96 // whether the element list was successfully converted to effects. 96 // whether the element list was successfully converted to effects.
97 bool installClipEffects(GrDrawState*, 97 bool installClipEffects(GrPipelineBuilder*,
98 GrDrawState::AutoRestoreEffects*, 98 GrPipelineBuilder::AutoRestoreEffects*,
99 const GrReducedClip::ElementList&, 99 const GrReducedClip::ElementList&,
100 const SkVector& clipOffset, 100 const SkVector& clipOffset,
101 const SkRect* devBounds); 101 const SkRect* devBounds);
102 102
103 // Draws the clip into the stencil buffer 103 // Draws the clip into the stencil buffer
104 bool createStencilClipMask(GrRenderTarget*, 104 bool createStencilClipMask(GrRenderTarget*,
105 int32_t elementsGenID, 105 int32_t elementsGenID,
106 GrReducedClip::InitialState initialState, 106 GrReducedClip::InitialState initialState,
107 const GrReducedClip::ElementList& elements, 107 const GrReducedClip::ElementList& elements,
108 const SkIRect& clipSpaceIBounds, 108 const SkIRect& clipSpaceIBounds,
(...skipping 17 matching lines...) Expand all
126 // Returns the cached mask texture if it matches the elementsGenID and the c lipSpaceIBounds. 126 // Returns the cached mask texture if it matches the elementsGenID and the c lipSpaceIBounds.
127 // Returns NULL if not found. 127 // Returns NULL if not found.
128 GrTexture* getCachedMaskTexture(int32_t elementsGenID, const SkIRect& clipSp aceIBounds); 128 GrTexture* getCachedMaskTexture(int32_t elementsGenID, const SkIRect& clipSp aceIBounds);
129 129
130 // Handles allocation (if needed) of a clip alpha-mask texture for both the sw-upload 130 // Handles allocation (if needed) of a clip alpha-mask texture for both the sw-upload
131 // or gpu-rendered cases. 131 // or gpu-rendered cases.
132 GrTexture* allocMaskTexture(int32_t elementsGenID, 132 GrTexture* allocMaskTexture(int32_t elementsGenID,
133 const SkIRect& clipSpaceIBounds, 133 const SkIRect& clipSpaceIBounds,
134 bool willUpload); 134 bool willUpload);
135 135
136 bool useSWOnlyPath(const GrDrawState*, 136 bool useSWOnlyPath(const GrPipelineBuilder*,
137 const SkVector& clipToMaskOffset, 137 const SkVector& clipToMaskOffset,
138 const GrReducedClip::ElementList& elements); 138 const GrReducedClip::ElementList& elements);
139 139
140 // Draws a clip element into the target alpha mask. The caller should have a lready setup the 140 // Draws a clip element into the target alpha mask. The caller should have a lready setup the
141 // desired blend operation. Optionally if the caller already selected a path renderer it can 141 // desired blend operation. Optionally if the caller already selected a path renderer it can
142 // be passed. Otherwise the function will select one if the element is a pat h. 142 // be passed. Otherwise the function will select one if the element is a pat h.
143 bool drawElement(GrDrawState*, 143 bool drawElement(GrPipelineBuilder*,
144 const SkMatrix& viewMatrix, 144 const SkMatrix& viewMatrix,
145 GrTexture* target, 145 GrTexture* target,
146 const SkClipStack::Element*, 146 const SkClipStack::Element*,
147 GrPathRenderer* pr = NULL); 147 GrPathRenderer* pr = NULL);
148 148
149 // Determines whether it is possible to draw the element to both the stencil buffer and the 149 // Determines whether it is possible to draw the element to both the stencil buffer and the
150 // alpha mask simultaneously. If so and the element is a path a compatible p ath renderer is 150 // alpha mask simultaneously. If so and the element is a path a compatible p ath renderer is
151 // also returned. 151 // also returned.
152 bool canStencilAndDrawElement(GrDrawState*, 152 bool canStencilAndDrawElement(GrPipelineBuilder*,
153 GrTexture* target, 153 GrTexture* target,
154 GrPathRenderer**, 154 GrPathRenderer**,
155 const SkClipStack::Element*); 155 const SkClipStack::Element*);
156 156
157 void mergeMask(GrDrawState*, 157 void mergeMask(GrPipelineBuilder*,
158 GrTexture* dstMask, 158 GrTexture* dstMask,
159 GrTexture* srcMask, 159 GrTexture* srcMask,
160 SkRegion::Op op, 160 SkRegion::Op op,
161 const SkIRect& dstBound, 161 const SkIRect& dstBound,
162 const SkIRect& srcBound); 162 const SkIRect& srcBound);
163 163
164 GrTexture* createTempMask(int width, int height); 164 GrTexture* createTempMask(int width, int height);
165 165
166 void setupCache(const SkClipStack& clip, 166 void setupCache(const SkClipStack& clip,
167 const SkIRect& bounds); 167 const SkIRect& bounds);
168 /** 168 /**
169 * Called prior to return control back the GrGpu in setupClipping. It 169 * Called prior to return control back the GrGpu in setupClipping. It
170 * updates the GrGpu with stencil settings that account stencil-based 170 * updates the GrGpu with stencil settings that account stencil-based
171 * clipping. 171 * clipping.
172 */ 172 */
173 void setDrawStateStencil(GrDrawState*, GrDrawState::AutoRestoreStencil*); 173 void setPipelineBuilderStencil(GrPipelineBuilder*, GrPipelineBuilder::AutoRe storeStencil*);
174 174
175 /** 175 /**
176 * Adjusts the stencil settings to account for interaction with stencil 176 * Adjusts the stencil settings to account for interaction with stencil
177 * clipping. 177 * clipping.
178 */ 178 */
179 void adjustStencilParams(GrStencilSettings* settings, 179 void adjustStencilParams(GrStencilSettings* settings,
180 StencilClipMode mode, 180 StencilClipMode mode,
181 int stencilBitCnt); 181 int stencilBitCnt);
182 182
183 /** 183 /**
184 * We may represent the clip as a mask in the stencil buffer or as an alpha 184 * We may represent the clip as a mask in the stencil buffer or as an alpha
185 * texture. It may be neither because the scissor rect suffices or we 185 * texture. It may be neither because the scissor rect suffices or we
186 * haven't yet examined the clip. 186 * haven't yet examined the clip.
187 */ 187 */
188 enum ClipMaskType { 188 enum ClipMaskType {
189 kNone_ClipMaskType, 189 kNone_ClipMaskType,
190 kStencil_ClipMaskType, 190 kStencil_ClipMaskType,
191 kAlpha_ClipMaskType, 191 kAlpha_ClipMaskType,
192 } fCurrClipMaskType; 192 } fCurrClipMaskType;
193 193
194 GrClipMaskCache fAACache; // cache for the AA path 194 GrClipMaskCache fAACache; // cache for the AA path
195 GrClipTarget* fClipTarget; 195 GrClipTarget* fClipTarget;
196 StencilClipMode fClipMode; 196 StencilClipMode fClipMode;
197 197
198 typedef SkNoncopyable INHERITED; 198 typedef SkNoncopyable INHERITED;
199 }; 199 };
200 #endif // GrClipMaskManager_DEFINED 200 #endif // GrClipMaskManager_DEFINED
OLDNEW
« no previous file with comments | « src/gpu/GrBitmapTextContext.cpp ('k') | src/gpu/GrClipMaskManager.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698