| 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 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 | 367 |
| 368 // This method is called by copySurface The srcRect is guaranteed to be ent
irely within the | 368 // This method is called by copySurface The srcRect is guaranteed to be ent
irely within the |
| 369 // src bounds. Likewise, the dst rect implied by dstPoint and srcRect's widt
h and height falls | 369 // src bounds. Likewise, the dst rect implied by dstPoint and srcRect's widt
h and height falls |
| 370 // entirely within the dst. The default implementation will draw a rect from
the src to the | 370 // entirely within the dst. The default implementation will draw a rect from
the src to the |
| 371 // dst if the src is a texture and the dst is a render target and fail other
wise. | 371 // dst if the src is a texture and the dst is a render target and fail other
wise. |
| 372 virtual bool copySurface(GrSurface* dst, | 372 virtual bool copySurface(GrSurface* dst, |
| 373 GrSurface* src, | 373 GrSurface* src, |
| 374 const SkIRect& srcRect, | 374 const SkIRect& srcRect, |
| 375 const SkIPoint& dstPoint) = 0; | 375 const SkIPoint& dstPoint) = 0; |
| 376 | 376 |
| 377 /** | |
| 378 * Sets source of vertex data for the next draw. Data does not have to be | |
| 379 * in the buffer until drawIndexed, drawNonIndexed, or drawIndexedInstances. | |
| 380 * | |
| 381 * @param buffer vertex buffer containing vertex data. Must be | |
| 382 * unlocked before draw call. Vertex size is queried | |
| 383 * from current GrDrawState. | |
| 384 */ | |
| 385 void setVertexSourceToBuffer(const GrVertexBuffer* buffer, size_t vertexStri
de); | |
| 386 | |
| 387 /** | |
| 388 * Sets source of index data for the next indexed draw. Data does not have | |
| 389 * to be in the buffer until drawIndexed. | |
| 390 * | |
| 391 * @param buffer index buffer containing indices. Must be unlocked | |
| 392 * before indexed draw call. | |
| 393 */ | |
| 394 void setIndexSourceToBuffer(const GrIndexBuffer* buffer); | |
| 395 | |
| 396 virtual void draw(const GrOptDrawState&, | 377 virtual void draw(const GrOptDrawState&, |
| 397 const GrDrawTarget::DrawInfo&, | 378 const GrDrawTarget::DrawInfo&, |
| 398 const GrClipMaskManager::ScissorState&); | 379 const GrClipMaskManager::ScissorState&); |
| 399 virtual void stencilPath(const GrOptDrawState&, | 380 virtual void stencilPath(const GrOptDrawState&, |
| 400 const GrPath*, | 381 const GrPath*, |
| 401 const GrClipMaskManager::ScissorState&, | 382 const GrClipMaskManager::ScissorState&, |
| 402 const GrStencilSettings&); | 383 const GrStencilSettings&); |
| 403 virtual void drawPath(const GrOptDrawState&, | 384 virtual void drawPath(const GrOptDrawState&, |
| 404 const GrPath*, | 385 const GrPath*, |
| 405 const GrClipMaskManager::ScissorState&, | 386 const GrClipMaskManager::ScissorState&, |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 // stencil funcs supported by GPUs. | 418 // stencil funcs supported by GPUs. |
| 438 static GrStencilFunc ConvertStencilFunc(bool stencilInClip, | 419 static GrStencilFunc ConvertStencilFunc(bool stencilInClip, |
| 439 GrStencilFunc func); | 420 GrStencilFunc func); |
| 440 static void ConvertStencilFuncAndMask(GrStencilFunc func, | 421 static void ConvertStencilFuncAndMask(GrStencilFunc func, |
| 441 bool clipInStencil, | 422 bool clipInStencil, |
| 442 unsigned int clipBit, | 423 unsigned int clipBit, |
| 443 unsigned int userBits, | 424 unsigned int userBits, |
| 444 unsigned int* ref, | 425 unsigned int* ref, |
| 445 unsigned int* mask); | 426 unsigned int* mask); |
| 446 | 427 |
| 447 struct GeometrySrcState { | |
| 448 GeometrySrcState() : fVertexBuffer(NULL), fIndexBuffer(NULL), fVertexSiz
e(0) {} | |
| 449 const GrVertexBuffer* fVertexBuffer; | |
| 450 const GrIndexBuffer* fIndexBuffer; | |
| 451 size_t fVertexSize; | |
| 452 }; | |
| 453 | |
| 454 // accessors for derived classes | |
| 455 const GeometrySrcState& getGeomSrc() const { return fGeoSrcState; } | |
| 456 | |
| 457 // it is preferable to call this rather than getGeomSrc()->fVertexSize becau
se of the assert. | |
| 458 size_t getVertexSize() const { | |
| 459 // the vertex layout is only valid if a vertex source has been specified
. | |
| 460 SkASSERT(this->getGeomSrc().fVertexBuffer); | |
| 461 return this->getGeomSrc().fVertexSize; | |
| 462 } | |
| 463 | |
| 464 const GrTraceMarkerSet& getActiveTraceMarkers() { return fActiveTraceMarkers
; } | 428 const GrTraceMarkerSet& getActiveTraceMarkers() { return fActiveTraceMarkers
; } |
| 465 | 429 |
| 466 GrContext::GPUStats fGPUStats; | 430 GrContext::GPUStats fGPUStats; |
| 467 | 431 |
| 468 SkAutoTDelete<GrPathRendering> fPathRendering; | 432 SkAutoTDelete<GrPathRendering> fPathRendering; |
| 469 | 433 |
| 470 // Subclass must initialize this in its constructor. | 434 // Subclass must initialize this in its constructor. |
| 471 SkAutoTUnref<const GrDrawTargetCaps> fCaps; | 435 SkAutoTUnref<const GrDrawTargetCaps> fCaps; |
| 472 | 436 |
| 473 private: | 437 private: |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 547 fResetBits = 0; | 511 fResetBits = 0; |
| 548 ++fResetTimestamp; | 512 ++fResetTimestamp; |
| 549 } | 513 } |
| 550 | 514 |
| 551 void handleDirtyContext() { | 515 void handleDirtyContext() { |
| 552 if (fResetBits) { | 516 if (fResetBits) { |
| 553 this->resetContext(); | 517 this->resetContext(); |
| 554 } | 518 } |
| 555 } | 519 } |
| 556 | 520 |
| 557 GeometrySrcState fGeoSrcS
tate; | |
| 558 ResetTimestamp fResetTi
mestamp; | 521 ResetTimestamp fResetTi
mestamp; |
| 559 uint32_t fResetBi
ts; | 522 uint32_t fResetBi
ts; |
| 560 // these are mutable so they can be created on-demand | 523 // these are mutable so they can be created on-demand |
| 561 mutable GrIndexBuffer* fQuadInd
exBuffer; | 524 mutable GrIndexBuffer* fQuadInd
exBuffer; |
| 562 // To keep track that we always have at least as many debug marker adds as r
emoves | 525 // To keep track that we always have at least as many debug marker adds as r
emoves |
| 563 int fGpuTrac
eMarkerCount; | 526 int fGpuTrac
eMarkerCount; |
| 564 GrTraceMarkerSet fActiveT
raceMarkers; | 527 GrTraceMarkerSet fActiveT
raceMarkers; |
| 565 GrTraceMarkerSet fStoredT
raceMarkers; | 528 GrTraceMarkerSet fStoredT
raceMarkers; |
| 566 // The context owns us, not vice-versa, so this ptr is not ref'ed by Gpu. | 529 // The context owns us, not vice-versa, so this ptr is not ref'ed by Gpu. |
| 567 GrContext* fContext
; | 530 GrContext* fContext
; |
| 568 | 531 |
| 569 typedef SkRefCnt INHERITED; | 532 typedef SkRefCnt INHERITED; |
| 570 }; | 533 }; |
| 571 | 534 |
| 572 #endif | 535 #endif |
| OLD | NEW |