| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 #include "GrClipMaskManager.h" | 9 #include "GrClipMaskManager.h" |
| 10 #include "GrAAConvexPathRenderer.h" | 10 #include "GrAAConvexPathRenderer.h" |
| (...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 474 drawState->addColorProcessor( | 474 drawState->addColorProcessor( |
| 475 GrTextureDomainEffect::Create(srcMask, | 475 GrTextureDomainEffect::Create(srcMask, |
| 476 sampleM, | 476 sampleM, |
| 477 GrTextureDomain::MakeTexelDomain(srcMask,
srcBound), | 477 GrTextureDomain::MakeTexelDomain(srcMask,
srcBound), |
| 478 GrTextureDomain::kDecal_Mode, | 478 GrTextureDomain::kDecal_Mode, |
| 479 GrTextureParams::kNone_FilterMode))->unref
(); | 479 GrTextureParams::kNone_FilterMode))->unref
(); |
| 480 fGpu->drawSimpleRect(SkRect::Make(dstBound)); | 480 fGpu->drawSimpleRect(SkRect::Make(dstBound)); |
| 481 } | 481 } |
| 482 | 482 |
| 483 GrTexture* GrClipMaskManager::createTempMask(int width, int height) { | 483 GrTexture* GrClipMaskManager::createTempMask(int width, int height) { |
| 484 GrTextureDesc desc; | 484 GrSurfaceDesc desc; |
| 485 desc.fFlags = kRenderTarget_GrTextureFlagBit|kNoStencil_GrTextureFlagBit; | 485 desc.fFlags = kRenderTarget_GrSurfaceFlag|kNoStencil_GrSurfaceFlag; |
| 486 desc.fWidth = width; | 486 desc.fWidth = width; |
| 487 desc.fHeight = height; | 487 desc.fHeight = height; |
| 488 desc.fConfig = kAlpha_8_GrPixelConfig; | 488 desc.fConfig = kAlpha_8_GrPixelConfig; |
| 489 | 489 |
| 490 return fGpu->getContext()->refScratchTexture(desc, GrContext::kApprox_Scratc
hTexMatch); | 490 return fGpu->getContext()->refScratchTexture(desc, GrContext::kApprox_Scratc
hTexMatch); |
| 491 } | 491 } |
| 492 | 492 |
| 493 //////////////////////////////////////////////////////////////////////////////// | 493 //////////////////////////////////////////////////////////////////////////////// |
| 494 // Return the texture currently in the cache if it exists. Otherwise, return NUL
L | 494 // Return the texture currently in the cache if it exists. Otherwise, return NUL
L |
| 495 GrTexture* GrClipMaskManager::getCachedMaskTexture(int32_t elementsGenID, | 495 GrTexture* GrClipMaskManager::getCachedMaskTexture(int32_t elementsGenID, |
| 496 const SkIRect& clipSpaceIBoun
ds) { | 496 const SkIRect& clipSpaceIBoun
ds) { |
| 497 bool cached = fAACache.canReuse(elementsGenID, clipSpaceIBounds); | 497 bool cached = fAACache.canReuse(elementsGenID, clipSpaceIBounds); |
| 498 if (!cached) { | 498 if (!cached) { |
| 499 return NULL; | 499 return NULL; |
| 500 } | 500 } |
| 501 | 501 |
| 502 return fAACache.getLastMask(); | 502 return fAACache.getLastMask(); |
| 503 } | 503 } |
| 504 | 504 |
| 505 //////////////////////////////////////////////////////////////////////////////// | 505 //////////////////////////////////////////////////////////////////////////////// |
| 506 // Allocate a texture in the texture cache. This function returns the texture | 506 // Allocate a texture in the texture cache. This function returns the texture |
| 507 // allocated (or NULL on error). | 507 // allocated (or NULL on error). |
| 508 GrTexture* GrClipMaskManager::allocMaskTexture(int32_t elementsGenID, | 508 GrTexture* GrClipMaskManager::allocMaskTexture(int32_t elementsGenID, |
| 509 const SkIRect& clipSpaceIBounds, | 509 const SkIRect& clipSpaceIBounds, |
| 510 bool willUpload) { | 510 bool willUpload) { |
| 511 // Since we are setting up the cache we should free up the | 511 // Since we are setting up the cache we should free up the |
| 512 // currently cached mask so it can be reused. | 512 // currently cached mask so it can be reused. |
| 513 fAACache.reset(); | 513 fAACache.reset(); |
| 514 | 514 |
| 515 GrTextureDesc desc; | 515 GrSurfaceDesc desc; |
| 516 desc.fFlags = willUpload ? kNone_GrTextureFlags : kRenderTarget_GrTextureFla
gBit; | 516 desc.fFlags = willUpload ? kNone_GrSurfaceFlags : kRenderTarget_GrSurfaceFla
g; |
| 517 desc.fWidth = clipSpaceIBounds.width(); | 517 desc.fWidth = clipSpaceIBounds.width(); |
| 518 desc.fHeight = clipSpaceIBounds.height(); | 518 desc.fHeight = clipSpaceIBounds.height(); |
| 519 desc.fConfig = kRGBA_8888_GrPixelConfig; | 519 desc.fConfig = kRGBA_8888_GrPixelConfig; |
| 520 if (willUpload || this->getContext()->isConfigRenderable(kAlpha_8_GrPixelCon
fig, false)) { | 520 if (willUpload || this->getContext()->isConfigRenderable(kAlpha_8_GrPixelCon
fig, false)) { |
| 521 // We would always like A8 but it isn't supported on all platforms | 521 // We would always like A8 but it isn't supported on all platforms |
| 522 desc.fConfig = kAlpha_8_GrPixelConfig; | 522 desc.fConfig = kAlpha_8_GrPixelConfig; |
| 523 } | 523 } |
| 524 | 524 |
| 525 fAACache.acquireMask(elementsGenID, desc, clipSpaceIBounds); | 525 fAACache.acquireMask(elementsGenID, desc, clipSpaceIBounds); |
| 526 return fAACache.getLastMask(); | 526 return fAACache.getLastMask(); |
| (...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1130 | 1130 |
| 1131 // TODO: dynamically attach a stencil buffer | 1131 // TODO: dynamically attach a stencil buffer |
| 1132 int stencilBits = 0; | 1132 int stencilBits = 0; |
| 1133 GrStencilBuffer* stencilBuffer = | 1133 GrStencilBuffer* stencilBuffer = |
| 1134 drawState.getRenderTarget()->getStencilBuffer(); | 1134 drawState.getRenderTarget()->getStencilBuffer(); |
| 1135 if (stencilBuffer) { | 1135 if (stencilBuffer) { |
| 1136 stencilBits = stencilBuffer->bits(); | 1136 stencilBits = stencilBuffer->bits(); |
| 1137 this->adjustStencilParams(settings, clipMode, stencilBits); | 1137 this->adjustStencilParams(settings, clipMode, stencilBits); |
| 1138 } | 1138 } |
| 1139 } | 1139 } |
| OLD | NEW |