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

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

Issue 746243002: Create GrOptDrawState directly in the cmd buffer in GrIODB. (Closed) Base URL: https://skia.googlesource.com/skia.git@recorder
Patch Set: Address comments Created 6 years 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 | « include/gpu/GrGpuResourceRef.h ('k') | src/gpu/GrInOrderDrawBuffer.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 2011 Google Inc. 2 * Copyright 2011 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 GrInOrderDrawBuffer_DEFINED 8 #ifndef GrInOrderDrawBuffer_DEFINED
9 #define GrInOrderDrawBuffer_DEFINED 9 #define GrInOrderDrawBuffer_DEFINED
10 10
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 virtual ~Cmd() {} 111 virtual ~Cmd() {}
112 112
113 virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*) = 0; 113 virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*) = 0;
114 114
115 uint8_t fType; 115 uint8_t fType;
116 }; 116 };
117 117
118 struct Draw : public Cmd { 118 struct Draw : public Cmd {
119 Draw(const DrawInfo& info) : Cmd(kDraw_Cmd), fInfo(info) {} 119 Draw(const DrawInfo& info) : Cmd(kDraw_Cmd), fInfo(info) {}
120 120
121 virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); 121 void execute(GrInOrderDrawBuffer*, const GrOptDrawState*) SK_OVERRIDE;
122 122
123 DrawInfo fInfo; 123 DrawInfo fInfo;
124 }; 124 };
125 125
126 struct StencilPath : public Cmd { 126 struct StencilPath : public Cmd {
127 StencilPath(const GrPath* path) : Cmd(kStencilPath_Cmd), fPath(path) {} 127 StencilPath(const GrPath* path) : Cmd(kStencilPath_Cmd), fPath(path) {}
128 128
129 const GrPath* path() const { return fPath.get(); } 129 const GrPath* path() const { return fPath.get(); }
130 130
131 virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); 131 void execute(GrInOrderDrawBuffer*, const GrOptDrawState*) SK_OVERRIDE;
132 132
133 GrStencilSettings fStencilSettings; 133 GrStencilSettings fStencilSettings;
134 134
135 private: 135 private:
136 GrPendingIOResource<const GrPath, kRead_GrIOType> fPath; 136 GrPendingIOResource<const GrPath, kRead_GrIOType> fPath;
137 }; 137 };
138 138
139 struct DrawPath : public Cmd { 139 struct DrawPath : public Cmd {
140 DrawPath(const GrPath* path) : Cmd(kDrawPath_Cmd), fPath(path) {} 140 DrawPath(const GrPath* path) : Cmd(kDrawPath_Cmd), fPath(path) {}
141 141
142 const GrPath* path() const { return fPath.get(); } 142 const GrPath* path() const { return fPath.get(); }
143 143
144 virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); 144 void execute(GrInOrderDrawBuffer*, const GrOptDrawState*) SK_OVERRIDE;
145 145
146 GrStencilSettings fStencilSettings; 146 GrStencilSettings fStencilSettings;
147 147
148 private: 148 private:
149 GrPendingIOResource<const GrPath, kRead_GrIOType> fPath; 149 GrPendingIOResource<const GrPath, kRead_GrIOType> fPath;
150 }; 150 };
151 151
152 struct DrawPaths : public Cmd { 152 struct DrawPaths : public Cmd {
153 DrawPaths(const GrPathRange* pathRange) : Cmd(kDrawPaths_Cmd), fPathRang e(pathRange) {} 153 DrawPaths(const GrPathRange* pathRange) : Cmd(kDrawPaths_Cmd), fPathRang e(pathRange) {}
154 154
155 const GrPathRange* pathRange() const { return fPathRange.get(); } 155 const GrPathRange* pathRange() const { return fPathRange.get(); }
156 156
157 virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); 157 void execute(GrInOrderDrawBuffer*, const GrOptDrawState*) SK_OVERRIDE;
158 158
159 int fIndicesLocation; 159 int fIndicesLocation;
160 size_t fCount; 160 size_t fCount;
161 int fTransformsLocation; 161 int fTransformsLocation;
162 PathTransformType fTransformsType; 162 PathTransformType fTransformsType;
163 GrStencilSettings fStencilSettings; 163 GrStencilSettings fStencilSettings;
164 164
165 private: 165 private:
166 GrPendingIOResource<const GrPathRange, kRead_GrIOType> fPathRange; 166 GrPendingIOResource<const GrPathRange, kRead_GrIOType> fPathRange;
167 }; 167 };
168 168
169 // This is also used to record a discard by setting the color to GrColor_ILL EGAL 169 // This is also used to record a discard by setting the color to GrColor_ILL EGAL
170 struct Clear : public Cmd { 170 struct Clear : public Cmd {
171 Clear(GrRenderTarget* rt) : Cmd(kClear_Cmd), fRenderTarget(rt) {} 171 Clear(GrRenderTarget* rt) : Cmd(kClear_Cmd), fRenderTarget(rt) {}
172 172
173 GrRenderTarget* renderTarget() const { return fRenderTarget.get(); } 173 GrRenderTarget* renderTarget() const { return fRenderTarget.get(); }
174 174
175 virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); 175 void execute(GrInOrderDrawBuffer*, const GrOptDrawState*) SK_OVERRIDE;
176 176
177 SkIRect fRect; 177 SkIRect fRect;
178 GrColor fColor; 178 GrColor fColor;
179 bool fCanIgnoreRect; 179 bool fCanIgnoreRect;
180 180
181 private: 181 private:
182 GrPendingIOResource<GrRenderTarget, kWrite_GrIOType> fRenderTarget; 182 GrPendingIOResource<GrRenderTarget, kWrite_GrIOType> fRenderTarget;
183 }; 183 };
184 184
185 // This command is ONLY used by the clip mask manager to clear the stencil c lip bits 185 // This command is ONLY used by the clip mask manager to clear the stencil c lip bits
186 struct ClearStencilClip : public Cmd { 186 struct ClearStencilClip : public Cmd {
187 ClearStencilClip(GrRenderTarget* rt) : Cmd(kClear_Cmd), fRenderTarget(rt ) {} 187 ClearStencilClip(GrRenderTarget* rt) : Cmd(kClear_Cmd), fRenderTarget(rt ) {}
188 188
189 GrRenderTarget* renderTarget() const { return fRenderTarget.get(); } 189 GrRenderTarget* renderTarget() const { return fRenderTarget.get(); }
190 190
191 virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); 191 void execute(GrInOrderDrawBuffer*, const GrOptDrawState*) SK_OVERRIDE;
192 192
193 SkIRect fRect; 193 SkIRect fRect;
194 bool fInsideClip; 194 bool fInsideClip;
195 195
196 private: 196 private:
197 GrPendingIOResource<GrRenderTarget, kWrite_GrIOType> fRenderTarget; 197 GrPendingIOResource<GrRenderTarget, kWrite_GrIOType> fRenderTarget;
198 }; 198 };
199 199
200 struct CopySurface : public Cmd { 200 struct CopySurface : public Cmd {
201 CopySurface(GrSurface* dst, GrSurface* src) : Cmd(kCopySurface_Cmd), fDs t(dst), fSrc(src) {} 201 CopySurface(GrSurface* dst, GrSurface* src) : Cmd(kCopySurface_Cmd), fDs t(dst), fSrc(src) {}
202 202
203 GrSurface* dst() const { return fDst.get(); } 203 GrSurface* dst() const { return fDst.get(); }
204 GrSurface* src() const { return fSrc.get(); } 204 GrSurface* src() const { return fSrc.get(); }
205 205
206 virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); 206 void execute(GrInOrderDrawBuffer*, const GrOptDrawState*) SK_OVERRIDE;
207 207
208 SkIPoint fDstPoint; 208 SkIPoint fDstPoint;
209 SkIRect fSrcRect; 209 SkIRect fSrcRect;
210 210
211 private: 211 private:
212 GrPendingIOResource<GrSurface, kWrite_GrIOType> fDst; 212 GrPendingIOResource<GrSurface, kWrite_GrIOType> fDst;
213 GrPendingIOResource<GrSurface, kRead_GrIOType> fSrc; 213 GrPendingIOResource<GrSurface, kRead_GrIOType> fSrc;
214 }; 214 };
215 215
216 struct SetState : public Cmd { 216 struct SetState : public Cmd {
217 SetState(const GrOptDrawState* state) : Cmd(kSetState_Cmd), fState(SkRef (state)) {} 217 SetState(const GrDrawState& drawState, GrGpu* gpu, const ScissorState& s cissor,
218 const GrDeviceCoordTexture* dstCopy, GrGpu::DrawType drawType)
219 : Cmd(kSetState_Cmd)
220 , fState(drawState, gpu, scissor, dstCopy, drawType) {}
218 221
219 virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); 222 void execute(GrInOrderDrawBuffer*, const GrOptDrawState*) SK_OVERRIDE;
220 223
221 SkAutoTUnref<const GrOptDrawState> fState; 224 const GrOptDrawState fState;
222 GrGpu::DrawType fDrawType; 225 GrGpu::DrawType fDrawType;
223 }; 226 };
224 227
225 typedef void* TCmdAlign; // This wouldn't be enough align if a command used long double. 228 typedef void* TCmdAlign; // This wouldn't be enough align if a command used long double.
226 typedef GrTRecorder<Cmd, TCmdAlign> CmdBuffer; 229 typedef GrTRecorder<Cmd, TCmdAlign> CmdBuffer;
227 230
228 // overrides from GrDrawTarget 231 // overrides from GrDrawTarget
229 void onDraw(const GrDrawState&, 232 void onDraw(const GrDrawState&,
230 const DrawInfo&, 233 const DrawInfo&,
231 const ScissorState&, 234 const ScissorState&,
232 const GrDeviceCoordTexture* dstCopy) SK_OVERRIDE; 235 const GrDeviceCoordTexture* dstCopy) SK_OVERRIDE;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 // caller may conservatively over reserve vertices / indices. 306 // caller may conservatively over reserve vertices / indices.
304 // we release unused space back to allocator if possible 307 // we release unused space back to allocator if possible
305 // can only do this if there isn't an intervening pushGeometrySource() 308 // can only do this if there isn't an intervening pushGeometrySource()
306 size_t fUsedPoolVertexBytes; 309 size_t fUsedPoolVertexBytes;
307 size_t fUsedPoolIndexBytes; 310 size_t fUsedPoolIndexBytes;
308 }; 311 };
309 312
310 typedef SkSTArray<kGeoPoolStatePreAllocCnt, GeometryPoolState> GeoPoolStateS tack; 313 typedef SkSTArray<kGeoPoolStatePreAllocCnt, GeometryPoolState> GeoPoolStateS tack;
311 314
312 CmdBuffer fCmdBuffer; 315 CmdBuffer fCmdBuffer;
313 SkAutoTUnref<const GrOptDrawState> fLastState; 316 const GrOptDrawState* fPrevState;
314 SkTArray<GrTraceMarkerSet, false> fGpuCmdMarkers; 317 SkTArray<GrTraceMarkerSet, false> fGpuCmdMarkers;
315 GrGpu* fDstGpu; 318 GrGpu* fDstGpu;
316 GrVertexBufferAllocPool& fVertexPool; 319 GrVertexBufferAllocPool& fVertexPool;
317 GrIndexBufferAllocPool& fIndexPool; 320 GrIndexBufferAllocPool& fIndexPool;
318 SkTDArray<uint32_t> fPathIndexBuffer; 321 SkTDArray<uint32_t> fPathIndexBuffer;
319 SkTDArray<float> fPathTransformBuffer; 322 SkTDArray<float> fPathTransformBuffer;
320 GeoPoolStateStack fGeoPoolStateStack; 323 GeoPoolStateStack fGeoPoolStateStack;
321 bool fFlushing; 324 bool fFlushing;
322 uint32_t fDrawID; 325 uint32_t fDrawID;
323 326
324 typedef GrClipTarget INHERITED; 327 typedef GrClipTarget INHERITED;
325 }; 328 };
326 329
327 #endif 330 #endif
OLDNEW
« no previous file with comments | « include/gpu/GrGpuResourceRef.h ('k') | src/gpu/GrInOrderDrawBuffer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698