OLD | NEW |
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 GrGpu_DEFINED | 8 #ifndef GrGpu_DEFINED |
9 #define GrGpu_DEFINED | 9 #define GrGpu_DEFINED |
10 | 10 |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 // GrDrawTarget overrides | 268 // GrDrawTarget overrides |
269 virtual void clear(const SkIRect* rect, | 269 virtual void clear(const SkIRect* rect, |
270 GrColor color, | 270 GrColor color, |
271 bool canIgnoreRect, | 271 bool canIgnoreRect, |
272 GrRenderTarget* renderTarget = NULL) SK_OVERRIDE; | 272 GrRenderTarget* renderTarget = NULL) SK_OVERRIDE; |
273 | 273 |
274 virtual void clearStencilClip(const SkIRect& rect, | 274 virtual void clearStencilClip(const SkIRect& rect, |
275 bool insideClip, | 275 bool insideClip, |
276 GrRenderTarget* renderTarget = NULL) SK_OVERRI
DE; | 276 GrRenderTarget* renderTarget = NULL) SK_OVERRI
DE; |
277 | 277 |
278 virtual void purgeResources() SK_OVERRIDE { | |
279 // The clip mask manager can rebuild all its clip masks so just | |
280 // get rid of them all. | |
281 fClipMaskManager.purgeResources(); | |
282 } | |
283 | |
284 // After the client interacts directly with the 3D context state the GrGpu | 278 // After the client interacts directly with the 3D context state the GrGpu |
285 // must resync its internal state and assumptions about 3D context state. | 279 // must resync its internal state and assumptions about 3D context state. |
286 // Each time this occurs the GrGpu bumps a timestamp. | 280 // Each time this occurs the GrGpu bumps a timestamp. |
287 // state of the 3D context | 281 // state of the 3D context |
288 // At 10 resets / frame and 60fps a 64bit timestamp will overflow in about | 282 // At 10 resets / frame and 60fps a 64bit timestamp will overflow in about |
289 // a billion years. | 283 // a billion years. |
290 typedef uint64_t ResetTimestamp; | 284 typedef uint64_t ResetTimestamp; |
291 | 285 |
292 // This timestamp is always older than the current timestamp | 286 // This timestamp is always older than the current timestamp |
293 static const ResetTimestamp kExpiredTimestamp = 0; | 287 static const ResetTimestamp kExpiredTimestamp = 0; |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
464 virtual void onDrawPaths(const GrPathRange*, | 458 virtual void onDrawPaths(const GrPathRange*, |
465 const uint32_t indices[], int count, | 459 const uint32_t indices[], int count, |
466 const float transforms[], PathTransformType, | 460 const float transforms[], PathTransformType, |
467 SkPath::FillType, const GrDeviceCoordTexture*) SK_O
VERRIDE; | 461 SkPath::FillType, const GrDeviceCoordTexture*) SK_O
VERRIDE; |
468 | 462 |
469 // readies the pools to provide vertex/index data. | 463 // readies the pools to provide vertex/index data. |
470 void prepareVertexPool(); | 464 void prepareVertexPool(); |
471 void prepareIndexPool(); | 465 void prepareIndexPool(); |
472 | 466 |
473 void resetContext() { | 467 void resetContext() { |
474 // We call this because the client may have messed with the | |
475 // stencil buffer. Perhaps we should detect whether it is a | |
476 // internally created stencil buffer and if so skip the invalidate. | |
477 fClipMaskManager.invalidateStencilMask(); | |
478 this->onResetContext(fResetBits); | 468 this->onResetContext(fResetBits); |
479 fResetBits = 0; | 469 fResetBits = 0; |
480 ++fResetTimestamp; | 470 ++fResetTimestamp; |
481 } | 471 } |
482 | 472 |
483 void handleDirtyContext() { | 473 void handleDirtyContext() { |
484 if (fResetBits) { | 474 if (fResetBits) { |
485 this->resetContext(); | 475 this->resetContext(); |
486 } | 476 } |
487 } | 477 } |
488 | 478 |
489 enum { | 479 enum { |
490 kPreallocGeomPoolStateStackCnt = 4, | 480 kPreallocGeomPoolStateStackCnt = 4, |
491 }; | 481 }; |
492 SkSTArray<kPreallocGeomPoolStateStackCnt, GeometryPoolState, true> fGeomPoo
lStateStack; | 482 SkSTArray<kPreallocGeomPoolStateStackCnt, GeometryPoolState, true> fGeomPoo
lStateStack; |
493 ResetTimestamp fResetTi
mestamp; | 483 ResetTimestamp fResetTi
mestamp; |
494 uint32_t fResetBi
ts; | 484 uint32_t fResetBi
ts; |
495 GrVertexBufferAllocPool* fVertexP
ool; | 485 GrVertexBufferAllocPool* fVertexP
ool; |
496 GrIndexBufferAllocPool* fIndexPo
ol; | 486 GrIndexBufferAllocPool* fIndexPo
ol; |
497 // counts number of uses of vertex/index pool in the geometry stack | 487 // counts number of uses of vertex/index pool in the geometry stack |
498 int fVertexP
oolUseCnt; | 488 int fVertexP
oolUseCnt; |
499 int fIndexPo
olUseCnt; | 489 int fIndexPo
olUseCnt; |
500 // these are mutable so they can be created on-demand | 490 // these are mutable so they can be created on-demand |
501 mutable GrIndexBuffer* fQuadInd
exBuffer; | 491 mutable GrIndexBuffer* fQuadInd
exBuffer; |
502 | 492 |
503 typedef GrClipTarget INHERITED; | 493 typedef GrClipTarget INHERITED; |
504 }; | 494 }; |
505 | 495 |
506 #endif | 496 #endif |
OLD | NEW |