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

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

Issue 732693002: Drawstate on stack (Closed) Base URL: https://skia.googlesource.com/skia.git@real_def_gp
Patch Set: tiny fix Created 6 years, 1 month 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/GrGpu.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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 * is destructive). This buffer must not have an active reserved vertex or i ndex source. Any 66 * is destructive). This buffer must not have an active reserved vertex or i ndex source. Any
67 * reserved geometry on the target will be finalized because it's geometry s ource will be pushed 67 * reserved geometry on the target will be finalized because it's geometry s ource will be pushed
68 * before flushing and popped afterwards. 68 * before flushing and popped afterwards.
69 */ 69 */
70 void flush(); 70 void flush();
71 71
72 // tracking for draws 72 // tracking for draws
73 virtual DrawToken getCurrentDrawToken() { return DrawToken(this, fDrawID); } 73 virtual DrawToken getCurrentDrawToken() { return DrawToken(this, fDrawID); }
74 74
75 // overrides from GrDrawTarget 75 // overrides from GrDrawTarget
76 virtual bool geometryHints(int* vertexCount, 76 virtual bool geometryHints(size_t vertexStride,
77 int* vertexCount,
77 int* indexCount) const SK_OVERRIDE; 78 int* indexCount) const SK_OVERRIDE;
78 79
79 virtual bool copySurface(GrSurface* dst, 80 virtual bool copySurface(GrSurface* dst,
80 GrSurface* src, 81 GrSurface* src,
81 const SkIRect& srcRect, 82 const SkIRect& srcRect,
82 const SkIPoint& dstPoint) SK_OVERRIDE; 83 const SkIPoint& dstPoint) SK_OVERRIDE;
83 84
84 virtual bool canCopySurface(GrSurface* dst, 85 virtual bool canCopySurface(const GrSurface* dst,
85 GrSurface* src, 86 const GrSurface* src,
86 const SkIRect& srcRect, 87 const SkIRect& srcRect,
87 const SkIPoint& dstPoint) SK_OVERRIDE; 88 const SkIPoint& dstPoint) SK_OVERRIDE;
88 89
89 virtual void clearStencilClip(const SkIRect& rect, 90 virtual void clearStencilClip(const SkIRect& rect,
90 bool insideClip, 91 bool insideClip,
91 GrRenderTarget* renderTarget) SK_OVERRIDE; 92 GrRenderTarget* renderTarget) SK_OVERRIDE;
92 93
93 virtual void discard(GrRenderTarget*) SK_OVERRIDE; 94 virtual void discard(GrRenderTarget*) SK_OVERRIDE;
94 95
95 virtual void initCopySurfaceDstDesc(const GrSurface* src, GrSurfaceDesc* des c) SK_OVERRIDE; 96 virtual void initCopySurfaceDstDesc(const GrSurface* src, GrSurfaceDesc* des c) SK_OVERRIDE;
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 242
242 GrDrawState fState; 243 GrDrawState fState;
243 GrGpu::DrawType fDrawType; 244 GrGpu::DrawType fDrawType;
244 GrDeviceCoordTexture fDstCopy; 245 GrDeviceCoordTexture fDstCopy;
245 }; 246 };
246 247
247 typedef void* TCmdAlign; // This wouldn't be enough align if a command used long double. 248 typedef void* TCmdAlign; // This wouldn't be enough align if a command used long double.
248 typedef GrTRecorder<Cmd, TCmdAlign> CmdBuffer; 249 typedef GrTRecorder<Cmd, TCmdAlign> CmdBuffer;
249 250
250 // overrides from GrDrawTarget 251 // overrides from GrDrawTarget
251 virtual void onDraw(const DrawInfo&, const GrClipMaskManager::ScissorState&) SK_OVERRIDE; 252 virtual void onDraw(const GrDrawState&,
252 virtual void onDrawRect(const SkRect& rect, 253 const DrawInfo&,
254 const GrClipMaskManager::ScissorState&) SK_OVERRIDE;
255 virtual void onDrawRect(GrDrawState*,
256 const SkRect& rect,
253 const SkRect* localRect, 257 const SkRect* localRect,
254 const SkMatrix* localMatrix) SK_OVERRIDE; 258 const SkMatrix* localMatrix) SK_OVERRIDE;
255 259
256 virtual void onStencilPath(const GrPath*, 260 virtual void onStencilPath(const GrDrawState&,
261 const GrPath*,
257 const GrClipMaskManager::ScissorState&, 262 const GrClipMaskManager::ScissorState&,
258 const GrStencilSettings&) SK_OVERRIDE; 263 const GrStencilSettings&) SK_OVERRIDE;
259 virtual void onDrawPath(const GrPath*, 264 virtual void onDrawPath(const GrDrawState&,
265 const GrPath*,
260 const GrClipMaskManager::ScissorState&, 266 const GrClipMaskManager::ScissorState&,
261 const GrStencilSettings&, 267 const GrStencilSettings&,
262 const GrDeviceCoordTexture* dstCopy) SK_OVERRIDE; 268 const GrDeviceCoordTexture* dstCopy) SK_OVERRIDE;
263 virtual void onDrawPaths(const GrPathRange*, 269 virtual void onDrawPaths(const GrDrawState&,
270 const GrPathRange*,
264 const uint32_t indices[], 271 const uint32_t indices[],
265 int count, 272 int count,
266 const float transforms[], 273 const float transforms[],
267 PathTransformType, 274 PathTransformType,
268 const GrClipMaskManager::ScissorState&, 275 const GrClipMaskManager::ScissorState&,
269 const GrStencilSettings&, 276 const GrStencilSettings&,
270 const GrDeviceCoordTexture*) SK_OVERRIDE; 277 const GrDeviceCoordTexture*) SK_OVERRIDE;
271 virtual void onClear(const SkIRect* rect, 278 virtual void onClear(const SkIRect* rect,
272 GrColor color, 279 GrColor color,
273 bool canIgnoreRect, 280 bool canIgnoreRect,
274 GrRenderTarget* renderTarget) SK_OVERRIDE; 281 GrRenderTarget* renderTarget) SK_OVERRIDE;
275 282
276 virtual bool onReserveVertexSpace(size_t vertexSize, 283 virtual bool onReserveVertexSpace(size_t vertexSize,
277 int vertexCount, 284 int vertexCount,
278 void** vertices) SK_OVERRIDE; 285 void** vertices) SK_OVERRIDE;
279 virtual bool onReserveIndexSpace(int indexCount, 286 virtual bool onReserveIndexSpace(int indexCount,
280 void** indices) SK_OVERRIDE; 287 void** indices) SK_OVERRIDE;
281 virtual void releaseReservedVertexSpace() SK_OVERRIDE; 288 virtual void releaseReservedVertexSpace() SK_OVERRIDE;
282 virtual void releaseReservedIndexSpace() SK_OVERRIDE; 289 virtual void releaseReservedIndexSpace() SK_OVERRIDE;
283 virtual void geometrySourceWillPush() SK_OVERRIDE; 290 virtual void geometrySourceWillPush() SK_OVERRIDE;
284 virtual void geometrySourceWillPop(const GeometrySrcState& restoredState) SK _OVERRIDE; 291 virtual void geometrySourceWillPop(const GeometrySrcState& restoredState) SK _OVERRIDE;
285 virtual void willReserveVertexAndIndexSpace(int vertexCount, 292 virtual void willReserveVertexAndIndexSpace(int vertexCount,
293 size_t vertexStride,
286 int indexCount) SK_OVERRIDE; 294 int indexCount) SK_OVERRIDE;
287 295
288 // Attempts to concat instances from info onto the previous draw. info must represent an 296 // Attempts to concat instances from info onto the previous draw. info must represent an
289 // instanced draw. The caller must have already recorded a new draw state an d clip if necessary. 297 // instanced draw. The caller must have already recorded a new draw state an d clip if necessary.
290 int concatInstancedDraw(const DrawInfo& info, const GrClipMaskManager::Sciss orState&); 298 int concatInstancedDraw(const GrDrawState&,
299 const DrawInfo&,
300 const GrClipMaskManager::ScissorState&);
291 301
292 // Determines whether the current draw operation requieres a new drawstate a nd if so records it. 302 // Determines whether the current draw operation requieres a new drawstate a nd if so records it.
293 void recordStateIfNecessary(GrGpu::DrawType, const GrDeviceCoordTexture*); 303 void recordStateIfNecessary(const GrDrawState&, GrGpu::DrawType, const GrDev iceCoordTexture*);
294 // We lazily record clip changes in order to skip clips that have no effect. 304 // We lazily record clip changes in order to skip clips that have no effect.
295 void recordClipIfNecessary(); 305 void recordClipIfNecessary();
296 // Records any trace markers for a command after adding it to the buffer. 306 // Records any trace markers for a command after adding it to the buffer.
297 void recordTraceMarkersIfNecessary(); 307 void recordTraceMarkersIfNecessary();
298 308
299 virtual bool isIssued(uint32_t drawID) { return drawID != fDrawID; } 309 virtual bool isIssued(uint32_t drawID) { return drawID != fDrawID; }
300 310
301 // TODO: Use a single allocator for commands and records 311 // TODO: Use a single allocator for commands and records
302 enum { 312 enum {
303 kCmdBufferInitialSizeInBytes = 8 * 1024, 313 kCmdBufferInitialSizeInBytes = 8 * 1024,
(...skipping 26 matching lines...) Expand all
330 typedef SkSTArray<kGeoPoolStatePreAllocCnt, GeometryPoolState> GeoPoolStateS tack; 340 typedef SkSTArray<kGeoPoolStatePreAllocCnt, GeometryPoolState> GeoPoolStateS tack;
331 341
332 GeoPoolStateStack fGeoPoolStateStack; 342 GeoPoolStateStack fGeoPoolStateStack;
333 bool fFlushing; 343 bool fFlushing;
334 uint32_t fDrawID; 344 uint32_t fDrawID;
335 345
336 typedef GrClipTarget INHERITED; 346 typedef GrClipTarget INHERITED;
337 }; 347 };
338 348
339 #endif 349 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrGpu.h ('k') | src/gpu/GrInOrderDrawBuffer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698